📜  如何使用 C++ 创建自定义 Arduino 库

📅  最后修改于: 2022-05-13 01:58:43.439000             🧑  作者: Mango

如何使用 C++ 创建自定义 Arduino 库

什么是 Arduino 库?

库是一组预编译的、可重用的代码或例程,开发人员使用它们来减少开发时间。 Arduino 库是用 C 或 C++ 编写的。这些库为我们提供了一种共享代码的便捷方式。 Arduino IDE 已经包含一组标准库,可以将这些库用于常用功能。除了标准库,还可以创建我们自己的库。
本文重点讨论如何创建自定义 Arduino 库。

为什么要创建 Arduino 库?

尽管 Arduino 中存在标准库,但开发人员必须根据项目要求创建自己的库。以下是创建和使用我们的库的一些好处。

  1. 自定义库提供额外的功能。
  2. 将相似的功能组合在一起。
  3. 减少代码大小。
  4. 易于分享(在小组项目中很有用)。
  5. 降低代码的复杂性。

使用 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); }
      

我们的 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 库

共享 Arduino 库有两个步骤:

  1. 导出库:要导出和共享您的库,请创建 DC_Motor/ 文件夹的存档,该文件夹位于 Arduino/libraries/ 中。这个存档文件可以很容易地与其他人在线共享。人们可以很容易地找到网站来托管您的图书馆档案。
  2. 导入 Arduino 库:在导出库时创建 .zip 存档(不是 .rar 或其他扩展名)时,这些步骤将起作用。
    • 第 1 步:打开 Arduino IDE。
    • 第 2 步:点击Sketch->Include Library->Add .ZIP Library...并浏览找到您的 .zip 存档。

导入arduino库

Arduino IDE 将提取存档并将导入的库放在 Arduino/libraries/ 文件夹下,并将自行更新。无需重新启动它。

如何将创建的 Arduino 库包含到代码中

有两种方法可以将 Arduino 库包含到代码中:

  1. 使用包含库
  2. 使用#include“”

方法 1:使用包含库选项
让我们按照以下步骤包含 Arduino 库

  • 第 1 步:打开 Arduino IDE。
  • 第2步:创建一个新草图。
  • 第三步:点击菜单栏中的草图菜单
  • 第 4 步:从下拉列表中选择包含库选项。
  • 第 5 步:可以看到 Arduino IDE 中存在的所有库。用户安装的库出现在Contributed libraries标题下,然后选择DC_Motor library

包括 Arduino 库

现在我们的库已成功包含在当前项目中。

方法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 草图。如果您的代码以及正确,则将显示消息完成编译,否则将显示错误消息。

完成编译

通过这种方式,可以创建自己的库并根据我们在项目中的要求使用它。它不仅可以节省他们的时间,还可以降低测试成本。可以与朋友、老师和其他开发人员共享自己的库。