马修·Chea MathWorks
学习如何编写自定义Arduino®插件库。以DHT22温度和湿度传感器为例,学习如何创建插件库,以接口您的Arduino硬件与MATLAB®.自定义Arduino插件允许您使用您的Arduino硬件,并在MATLAB中轻松地附加屏蔽或传感器。
作品简介:
本视频演示如何创建自定义Arduino插件库。作为示例,我将向您展示如何为DHT22温度和湿度传感器编写附加库。
一个附加库允许您将MATLAB代码与Arduino硬件连接起来。
在开始之前,请确保您已经安装了MATLAB Arduino支持包,并下载了您将使用的第三方Arduino库,并金宝app将它们拖放到您的Arduino/ libraries文件夹中。根据您的操作系统,默认文件夹路径可能不同。
对于附加组件库,您只需要编写两个文件:一个c++头文件,它被下载到Arduino,第二个文件是一个MATLAB类,用于向Arduino发送命令并获得响应。
创建附加组件有三个步骤。第一步是设置文件夹。下一步是编写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和pin来创建新的传感器对象。
框架要求,对于每个命令,您必须使用sendResponseMsg()方法将数据发送回MATLAB。
如果您想要获得调试信息,还可以使用debugPrint()定义调试字符串并将信息发送回MATLAB。
在我的代码中,我对所有的命令ID做了同样的操作:创建、删除、读取温度和读取湿度。
MATLAB插件类
现在您需要编写MATLAB类。在+Adafruit文件夹中创建该文件。
这个类必须继承自LibraryBase。将这些属性设置为与头文件中使用的相同的命令id。
这些属性也是框架所需要的。将LibraryName替换为您的库,添加任何依赖库和第三方库,并更改它们以匹配您的c++头文件和类名。
您还可以添加更多属性,这取决于您的附加组件需要什么。
编写构造函数来初始化附加组件。必须将Arduino对象指定为附加对象的父对象,它是从LibraryBase继承的。
这里我做了一些错误处理。然后我初始化Pin属性,将Pin配置为数字输入,并调用一个方法来创建传感器。
对于希望在Arduino上执行的每个方法,都必须使用sendCommand()。必须将命令ID、库名和任何必要的数据传递给Arduino。这里我传递传感器ID和终端。
要从Arduino接收回数据,从sendCommand()保存返回的数据。例如,在readHumidity方法中,我保存返回的湿度值。
运行
写完这两个文件后,在命令窗口中使用addpath()添加add-的位置在文件夹中。您可以使用命令listarduinlibraries来检查您的库是否可用。
将Arduino硬件连接到MATLAB,使用Arduino()方法连接端口、板和库。要查看调试消息,请使用' 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国家站点没有针对您所在位置的访问进行优化。