雷竞技注册
项目

创建一个对象跟踪系统:使用内置Arduino库

2016年2月4日通过迈克尔的股票

我们将学习Arduino图书馆实施,并为7部件项目系列建立固件框架。我们将使用Microsoft Visual Studio Express进行库编辑。

如何使用本机Arduino库,如何创建自定义库,并生成要在此项目系列持续时间使用的框架。

目录:

  1. 使用本机库
  2. 编写自定义库
  3. 项目系列框架

使用本机库

标准Arduino IDE装满了各种示例草图和库。使用本机库使用户对预烘焙的功能和方法进行访问,该方法旨在简化与更复杂的外围设备的接口,例如以太网通信,鼠标功能,SPI通信等来实现给定库,所需的所有内容都是所需的# include预处理器指令后跟您要使用的库的文件名。这是一个例子:

#include“examplelibraryname.h”//预处理器指令void setup(){pinmode(13,输出);//将引脚13设置为输出} void循环(){digitalwrite(13,高);//转动LED(高电平电压电平)延迟(100);//等待第二个数字信息(13,低);//通过使电压低延迟(100)转动LED;}

上面的代码片段只是显示了实现名为“ExampleLibraryName.h”的库所需的语法,并且没有实际调用虚拟库中的任何方法或函数。

库由2部分组成:标题文件和源文件。标题文件(由* .h扩展表示)是基本上是源文件中定义的所有函数和方法的列表。头文件可以通过在上面的代码片段中包括预处理器指令,引用其他库。源文件是实际编码的方法或函数。源和头文件可以用C或C ++写入C或C ++,因为Arduino Sketch编译器(AVR-GCC)与C和C ++语言合作。有关编写C ++库的教程,您可以参考Arduino指南。下一节将介绍使用简化的Arduino语法编写库。

编写自定义库

以下例子有点像用砖头拍打飞行:方法远远超过需要,但是为了简单的例子,它得到了完成的工作。我想写一个草图来闪光灯:打开X时间,然后关闭y时间。以下代码将执行以下操作:

void setup()// initialize函数{pinmode(13,输出);//将引脚13定义为输出。void循环()//主循环{DigitalWrite(13,高);//打开LED ON延时(100);//等待100ms digitalWrite(13, LOW);//关闭LED OFF延时(100);//等待100ms}

不直接在主循环中执行代码被认为是一种良好的实践。为了更改前面的代码片段以遵守此约定,您需要打开第二个选项卡。看看下面代码段之间的差异,并将它们与上面的代码段进行比较。您将注意到,可执行代码位于第二个代码片段中,该文件在主文件顶部的预处理器指令中被引用。

/ *************主文件************* / #include“blinklibrarytest.c”//预处理器指令void setup(){pinmode(13,输出);//初始化数字引脚13作为输出。void循环()//主循环{blinkpattern();//函数被称为}
/*************源文件*************/ #include "Arduino.h" //预处理器指令引用Arduino库的草图语法void BlinkPattern() //函数被调用在主文件{digitalWrite(13, HIGH);//打开LED ON延时(100);//等待100ms digitalWrite(13, LOW);//关闭LED OFF延时(100);//等待100ms}

对于较大的程序,头文件可以用来为源文件和其他预处理器指令创建聚合点。下图显示了头文件、源文件和主文件交互的基本流程图。

在下面的最后一个示例中,您将看到包含一个头文件的修改,其中包含先前的LED闪烁程序。如果前面的代码结构对于这一小段代码来说是多余的,那么添加一个头文件就更是如此了。更改如下:

/*************主文件*************/ #include "BlinkLibraryTest.h" // PREPROCESSOR指令调用头文件void setup() {pinMode(13, OUTPUT);//初始化数字引脚13作为输出。} void loop() {BlinkPattern();}
/*************源文件*************/ #include "Arduino.h" //调用Arduino库的预处理器指令void BlinkPattern() //在主文件中调用函数{digitalWrite(13, HIGH);//打开LED ON延时(100);//等待100ms digitalWrite(13, LOW);//关闭LED OFF延时(100);//等待100ms}
/*************头文件*************/ #include "BlinkLibraryTest.c" // PREPROCESSOR指令调用源文件

项目系列框架

现在我们对源文件/头文件的层次结构有了大致的了解,我们可以开始这个项目系列的框架了。我们需要一个专门用于以下操作的标题和节:

  1. 伺服控制
  2. 超声波传感器操作
  3. 目标检测算法
  4. 蓝牙连接
  5. 智能设备控制

对于上面的每一个项目,你都应该有一个*.c文件,一个头文件和一个主文件。大多数文件将保留空白。头文件应该用#include语句连接所有源文件,主文件应该用#include语句连接头文件。项目系列的下一部分将涵盖伺服控制,并将在此代码框架上构建。

下一篇文章串联:创建对象跟踪系统第2部分:控制伺服

为自己提供这个项目!BOM。

1评论
  • C
    cuyler1 2016年6月30日

    我不明白在过去20年里,自主产品或未来的创新在哪里失败了。这个物体跟踪器让我想起1996-97年的Intelecady,今天这应该是即兴的。在我的生活中,最“杰森”式的创作是70年代的微波炉。今天它仍然是微波炉。就像在《星际迷航》里一样那些开门用的别针应该是每个家庭的面部识别。发生了什么事?

    喜欢。 回复