如何创建Arduino库?
我需要一个Arduino库的简单示例 我读到: 这对我来说有点复杂-我从代码示例中更能理解 我需要为Arduino建立一个图书馆。在库中,我需要有2个函数,每个函数接收3个字符串值。然后函数需要将值连接到一个大字符串,并发送使用如何创建Arduino库?,arduino,Arduino,我需要一个Arduino库的简单示例 我读到: 这对我来说有点复杂-我从代码示例中更能理解 我需要为Arduino建立一个图书馆。在库中,我需要有2个函数,每个函数接收3个字符串值。然后函数需要将值连接到一个大字符串,并发送使用Serial.println(新值)创建的值 我需要它只是为了演示。所以,价值观对我来说并不重要。这只是为了让我能从中学习。我想这样使用它 className.Function1("val1", "val2", val3"); className.Function2("v
Serial.println(新值)创建的值代码>
我需要它只是为了演示。所以,价值观对我来说并不重要。这只是为了让我能从中学习。我想这样使用它
className.Function1("val1", "val2", val3");
className.Function2("val1", "val2", val3");
文件应该具有什么扩展名(.h.cpp)?当然,我试图使用Arduino的图书馆,但它们非常复杂
如果有人有一个例子,我相信它会帮助我理解。如果你只想要几个函数,你不需要一个类,但是如果你想学习这个方法,我可以为你指出正确的方向
这是一个简单的图书馆。我们称之为LED
在本例中,我们将使用库重新创建(包含在IDE中)。显然,这比示例使用的工作量要多,但是比较这两种方法会让您更容易理解
LED.h
标题包含所谓的“包含防护装置”,如下所述:
LED.cpp
如果要使用库中的任何Arduino API,则需要包含Arduino.h
。由于我在.cpp文件中使用了digitalWrite()
,因此我需要在本例中包含它。如果在标题中使用API,则需要将其包含在标题中
素描
#包括
发光二极管;
无效设置(){
开始(13);
}
void循环(){
led.on();
延迟(500);
led.off();
延迟(500);
}
如您所见,库被分为声明(.h)和定义(.cpp)。草图和.cpp文件都包含库头(.h)
当许多人想在自己的代码中使用另一个库(如SPI类)时,就会发生一些让他们大吃一惊的事情。不幸的是,IDE的设计方式要求草图也包含内部使用的库,而不管草图是否直接使用它。还有更深入的解释
分享你的创作
完成库后,您可以在Arduino论坛上发布库。确保你有一些工作实例来增加人们尝试你工作的机会。图书馆的好位置在这里:
如果您熟悉GitHub(),甚至可以直接将您的库添加到IDE库管理器中,这将允许人们通过单击install来使用它。请访问以查看添加的要求。我不理解LED.h文件中的#ifndef Test_h和#define Test_h以及#endif。它们被称为include guard,这里有一个很好的解释:对于这样一个简单的示例+1@DanyMaor这个答案是否为你的理解水平提供了一个合适的例子?
#ifndef LED_h //Prevents header contents from being added twice.
#define LED_h
class LED{
public:
void begin( char PinToUse );
void on();
void off();
private:
char pin;
};
#endif
#include "Arduino.h"
#include "LED.h"
void LED::begin( char PinToUse ){ // LED:: indicates the function belongs to the LED class, and isn't a global function.
pin = PinToUse;
pinMode( pin, OUTPUT );
}
void LED::on(){
digitalWrite( pin, HIGH );
}
void LED::off(){
digitalWrite( pin, LOW );
}
#include <LED.h>
LED led;
void setup() {
led.begin(13);
}
void loop() {
led.on();
delay(500);
led.off();
delay(500);
}