创建一个自定义Arduino插件库
学习如何编写自定义Arduino®插件库。以DHT22温度和湿度传感器为例,学习如何创建附加库来连接Arduino硬件与MATLAB®.自定义Arduino插件允许您使用Arduino硬件,并在MATLAB中轻松连接护盾或传感器。
作品简介:
本视频展示如何创建自定义Arduino插件库。作为一个例子,我将向您展示如何为DHT22温度和湿度传感器编写一个附加库。
一个附加库允许您将MATLAB代码与Arduino硬件接口。
在我们开始之前,请确保您已经安装了MATLAB Arduino支持包,并下载了您将使用的第三方Arduino库金宝app,并将它们拖放到Arduino/ libraries文件夹中。根据您的操作系统,默认文件夹路径可能不同。
对于插件库,您只需要编写两个文件:一个是下载到Arduino的c++头文件,第二个文件是向Arduino发送命令并获得响应的MATLAB类。
创建附加组件有三个步骤。第一步是设置文件夹。下一步是编写c++头文件。最后一步写MATLAB插件类文件。
文件夹:
首先,您必须创建一个名为“+arduinoioaddons”的文件夹,其子文件夹的名称以“+”开头。这是您将保存MATLAB类文件和另一个名为“src”的子文件夹的地方,其中包含c++头文件。
c++头文件
现在让我们看看如何编写c++头文件。
确保包含“LibraryBase.h”以扩展创建外接程序库所需的类。
还要包括自定义代码所需的任何头文件。在我的例子中,我包含了“DHT.h”。
接下来,定义一组命令id供以后使用,以处理从MATLAB发送的命令。
如您所见,我为传感器定义了这四个命令id。
现在,定义您的外接程序类,并使其继承自LibraryBase,因为它是外接程序框架所必需的。
您还可以定义类所需的任何成员。
对于构造函数,请确保名称与类匹配,然后定义外接程序库的名称。
接下来重写commandHandler方法,该方法在MATLAB每次向Arduino发送命令时被调用。我们已经跳过了命令ID、dataIn和该数据的大小。
Arduino使用命令ID来确定执行哪种方法。这里可以包装第三方方法。在我的例子中,我包装了Adafruit DHT库中的方法。
当您从MATLAB发送命令时,您可以将数据传递给这里使用。在这个例子中,我让MATLAB发送传感器ID和引脚来创建新的传感器对象。
框架要求,对于每个命令,必须使用sendResponseMsg()方法将数据发送回MATLAB。
如果您想获得调试信息,还可以定义调试字符串并使用debugPrint()将信息发送回MATLAB。
在我的代码中,我对所有命令ID执行相同的操作:创建、删除、读取温度和读取湿度。
MATLAB插件类
现在需要编写MATLAB类。在你的+Adafruit文件夹中创建文件。
这个类必须继承自LibraryBase。将这些属性设置为我们在头文件中使用的相同的命令id。
框架也需要这些属性。将LibraryName替换为您的库,添加任何依赖库和第三方库,并更改这些以匹配您的c++头文件和类名。
您还可以添加更多属性,这取决于您的附加组件需要什么。
编写一个构造函数来初始化附加组件。您必须将Arduino对象分配为附加组件对象的父对象,它继承自LibraryBase。
这里我做了一些错误处理。然后我初始化引脚属性,将引脚配置为数字输入,并调用一个方法来创建传感器。
对于你想在Arduino上执行的每个方法,你必须使用sendCommand()。您必须将命令ID、库名称和任何必要的数据传递给Arduino。这里我传递传感器ID和终端。
为了从Arduino接收数据,保存从sendCommand()返回的数据。例如,在readHumidity方法中,我保存了返回的湿度值。
运行
写完这两个文件后,在命令窗口中使用addpath()添加add-的位置在文件夹中。您可以使用listArduinoLibraries命令来检查您的库是否可用。
使用Arduino()方法将Arduino硬件连接到MATLAB,并带有端口、板和库。要查看调试消息,使用' TraceOn ', true。
a = arduino(' com8 ', ' Uno ', ' libraries ', ' Adafruit/DHT22 ', ' TraceOn ', true)
现在使用addon()方法连接到传感器。在我的情况下,我将传递Arduino对象,库和pin。
s = addon(a, ' Adafruit/DHT22 ', ' A0 ')
我们可以调用readTemperature(s)和readHumidity(s)方法从传感器读取测量值,并在MATLAB中使用数据。
这就是编写自己的附加组件库所需要做的全部工作。
有关更多帮助,请参阅有关如何为Arduino创建自定义附加组件库的文档。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。