Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建Arduino库?_Arduino - Fatal编程技术网

如何创建Arduino库?

如何创建Arduino库?,arduino,Arduino,我需要一个Arduino库的简单示例 我读到: 这对我来说有点复杂-我从代码示例中更能理解 我需要为Arduino建立一个图书馆。在库中,我需要有2个函数,每个函数接收3个字符串值。然后函数需要将值连接到一个大字符串,并发送使用Serial.println(新值)创建的值 我需要它只是为了演示。所以,价值观对我来说并不重要。这只是为了让我能从中学习。我想这样使用它 className.Function1("val1", "val2", val3"); className.Function2("v

我需要一个Arduino库的简单示例

我读到:

这对我来说有点复杂-我从代码示例中更能理解

我需要为Arduino建立一个图书馆。在库中,我需要有2个函数,每个函数接收3个字符串值。然后函数需要将值连接到一个大字符串,并发送使用
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);
}