如何使用 C++ 创建自定义 Arduino 库
什么是 Arduino 库?
库是一组预编译的、可重用的代码或例程,开发人员使用它们来减少开发时间。 Arduino 库是用 C 或 C++ 编写的。这些库为我们提供了一种共享代码的便捷方式。 Arduino IDE 已经包含一组标准库,可以将这些库用于常用功能。除了标准库,还可以创建我们自己的库。
本文重点讨论如何创建自定义 Arduino 库。
为什么要创建 Arduino 库?
尽管 Arduino 中存在标准库,但开发人员必须根据项目要求创建自己的库。以下是创建和使用我们的库的一些好处。
- 自定义库提供额外的功能。
- 将相似的功能组合在一起。
- 减少代码大小。
- 易于分享(在小组项目中很有用)。
- 降低代码的复杂性。
使用 C++ 编写代码和创建 Arduino 库的步骤
本文讨论创建与直流电机相关的库。库的名称是“DC_Motor” 。按照以下步骤创建 DC_Motor 库 -
- 第 1 步:创建一个文件夹并将该文件夹的名称命名为DC_Motor。
- 第 2 步:在 DC_Motor 文件夹中,创建两个文件。一个是“ my_library.h” ,另一个是“my_library.cpp”。
- my_library.h-它是头文件。头文件应仅包含与库关联的声明。
C++
// Header file // Make Sure your file name // should be my_library.h #ifndef MY_LIBRARY_H #define MY_LIBRARY_H #include
class DCMotor { private: byte pin1; byte pin2; int speed; public: DCMotor(byte, byte, int); void clockwise(); void antiClockwise(); void stop(); void motorDelay(); }; #endif C++
// C++ program to include the // custom header file // Include statement to include // custom header file #include "my_library.h" DCMotor::DCMotor(byte pin1, byte pin2, int speed) { this->pin1 = pin1; this->pin2 = pin2; this->speed = speed; } // Function to rotate DC motor // anti-clockwise void DCMotor::clockwise() { analogWrite(pin1, speed); analogWrite(pin2, 0); } // Function to rotate DC motor // clockwise void DCMotor::antiClockwise() { analogWrite(pin1, 0); analogWrite(pin2, speed); } // Function to stop DC motor void DCMotor::stop() { analogWrite(pin1, 0); analogWrite(pin2, 0); } void DCMotor::motorDelay() { delay(1000); }
C
// This is not a C file, This is // an arduino file // Make sure your file name is // "file_name.ino" // Include the header file // my_library.h #include
void setup() { // Put your setup code // here, to run once: } DCMotor m(9, 10, 200); void loop() { // Put your main code here, // to run repeatedly: m.antiClockwise(); m.motorDelay(); m.clockwise(); m.motorDelay(); } - my_library.cpp-它是 C++ 文件。 C++ 文件包含在 my_library.h 中声明的所有函数定义
C++
// C++ program to include the // custom header file // Include statement to include // custom header file #include "my_library.h" DCMotor::DCMotor(byte pin1, byte pin2, int speed) { this->pin1 = pin1; this->pin2 = pin2; this->speed = speed; } // Function to rotate DC motor // anti-clockwise void DCMotor::clockwise() { analogWrite(pin1, speed); analogWrite(pin2, 0); } // Function to rotate DC motor // clockwise void DCMotor::antiClockwise() { analogWrite(pin1, 0); analogWrite(pin2, speed); } // Function to stop DC motor void DCMotor::stop() { analogWrite(pin1, 0); analogWrite(pin2, 0); } void DCMotor::motorDelay() { delay(1000); }
- my_library.h-它是头文件。头文件应仅包含与库关联的声明。
我们的 DC_Motor 库创建成功。
打包您的 Arduino 库:
按照以下步骤将自定义 Arduino 库放置在 Arduino 库文件夹中。
- 步骤 1:下一步是在 Arduino 的库文件夹下制作库文件夹DC_Motor的副本。打开安装 Arduino 软件的 Arduino IDE 路径。在这种情况下,它是“C:\Program Files (x86)\Arduino\libraries”。
- 第 2 步:在此库文件夹中,位于 Arduino 中存在的所有标准库。复制 DC_Motor 文件夹并将其粘贴到库文件夹中。
笔记:
标准库还有一个名为示例的文件夹。此文件夹包含使用该特定库的 Arduino 代码示例。在创建我们自己的库时,最好添加示例示例来演示库的使用,但这不是强制性的。在本教程中,我没有添加示例文件夹以简化初学者。
分享您的 Arduino 库
共享 Arduino 库有两个步骤:
- 导出库:要导出和共享您的库,请创建 DC_Motor/ 文件夹的存档,该文件夹位于 Arduino/libraries/ 中。这个存档文件可以很容易地与其他人在线共享。人们可以很容易地找到网站来托管您的图书馆档案。
- 导入 Arduino 库:在导出库时创建 .zip 存档(不是 .rar 或其他扩展名)时,这些步骤将起作用。
- 第 1 步:打开 Arduino IDE。
- 第 2 步:点击Sketch->Include Library->Add .ZIP Library...并浏览找到您的 .zip 存档。
Arduino IDE 将提取存档并将导入的库放在 Arduino/libraries/ 文件夹下,并将自行更新。无需重新启动它。
如何将创建的 Arduino 库包含到代码中
有两种方法可以将 Arduino 库包含到代码中:
- 使用包含库
- 使用#include“”
方法 1:使用包含库选项
让我们按照以下步骤包含 Arduino 库
- 第 1 步:打开 Arduino IDE。
- 第2步:创建一个新草图。
- 第三步:点击菜单栏中的草图菜单。
- 第 4 步:从下拉列表中选择包含库选项。
- 第 5 步:可以看到 Arduino IDE 中存在的所有库。用户安装的库出现在Contributed libraries标题下,然后选择DC_Motor library 。
现在我们的库已成功包含在当前项目中。
方法2:使用#include“”
还有另一种在项目中包含库的方法。请按照以下步骤包含库 -
- 第 1 步:在库文件夹 DC_Motor 中创建一个 Arduino 草图。
- 第 2 步:而不是#include
写#include “my_library.h” (包括 “”)。在这里,我们指定头文件的路径。 Arduino 项目文件必须在 DC_Motor 目录内有一个限制。
如何使用创建的 Arduino 库
本节讨论如何使用创建的库。请按照以下步骤操作 -
- 第 1 步:打开一个 Arduino IDE。
- 第2步:创建一个新草图。
- 第 3 步:如上一节所述,导入所需的库。
- 第 4 步:编写 Arduino 代码。 Arduino 草图的扩展名为“.ino”。
C
// This is not a C file, This is
// an arduino file
// Make sure your file name is
// "file_name.ino"
// Include the header file
// my_library.h
#include
void setup()
{
// Put your setup code
// here, to run once:
}
DCMotor m(9, 10, 200);
void loop()
{
// Put your main code here,
// to run repeatedly:
m.antiClockwise();
m.motorDelay();
m.clockwise();
m.motorDelay();
}
- 第 5 步:通过单击 IDE 菜单栏中的正确勾选图标来验证 Arduino 草图。如果您的代码以及正确,则将显示消息完成编译,否则将显示错误消息。
通过这种方式,可以创建自己的库并根据我们在项目中的要求使用它。它不仅可以节省他们的时间,还可以降低测试成本。可以与朋友、老师和其他开发人员共享自己的库。