部署Arduino函数来Arduino硬件使用MATLAB功能块
这个例子展示了如何编程MATLAB函数块万博1manbetx®万博1manbetxArduino支持包®硬件来访问Arduino硬件上的多个外设。
MATLAB函数块使您能够在Simulink模型中实现自定义MATLAB函数。万博1manbetx您可以使用MATLAB函数块生成可读,高效,紧凑的C/ c++代码,可以部署到Arduino硬件。
有关MATLAB函数块的详细概述,请参见使用块实现MATLAB函数而且使用MATLAB函数块创建自定义功能.
使用MATLAB函数块进行代码生成提供:
调度和多任务处理-您可以设置MATLAB函数块的采样率。生成的代码以指定的采样率在硬件上运行。与多任务处理模式在,您可以在硬件上以不同的速率运行不同的块。
监视和调优——您可以使用监视和调优特征,并观察或记录输出信号。万博1manbetx
万博1manbetx支持的硬件
MATLAB函数块支持在这些板上生成代码:万博1manbetx
Arduino由于
Arduino Nano 3.0
Arduino Uno
Arduino Mega 2560
Arduino Mega ADK
Arduino达芬奇
Arduino微
Arduino MKR1000
Arduino MKR1010
Arduino MKR Zero
所需的产品s manbetx 845
使用MATLAB函数块在Arduino硬件上部署函数需要以下支持包:万博1manbetx
万博1manbet万博1manbetxxArduino硬件的Simulink支持包
MATLAB®万博1manbetxArduino硬件支持包
部署MATLABIO功能Arduino硬件
部署一个函数,根据LED引脚的输入设置其状态,生成PWM信号,并通过使用中列出的函数读取模拟电压读写数据.
在Arduino板上配置模型:
打开Simulin万博1manbetxk模型。在MATLAB命令提示符中,输入:
> > arduino_matlab_codegen
在硬件选项卡上,单击硬件设置打开配置参数对话框。
选择硬件实现面板中选择Arduino硬件硬件板参数列表。请勿更改其他设置。点击好吧.
要查看在编辑器中编写的函数,双击MATLAB函数块。
提示
在部署函数之前,必须验证函数。看到运行MATLAB函数.
要构建模型并在硬件上运行,请单击构建、部署和启动在硬件选项卡。
单击,进行信号监控和参数调优监视和调优在硬件选项卡。例如,您可以改变PWM占空比并观察生成的PWM信号,或者您可以将模拟引脚连接到VCC或GND并记录范围内的模拟电压。
请按照以上步骤操作arduino_matlab_codegen_initblock
模型。在此模型中,在程序执行开始时必须执行的所有引脚配置都在初始化
块。的引脚配置初始化
模块使函数在MATLAB中的模块函数模块化。
运行MATLAB函数
在部署函数之前,请在MATLAB命令窗口中运行函数。然后你可以:
验证MATLAB函数是否与预期的硬件通信。
检测在部署期间难以诊断的运行时错误,例如外设冲突。
添加延迟
要在MATLAB函数块中添加延迟,请使用以下代码段:
如果coder.target (“环球套票”) coder.ceval (“延迟”、持续时间);结束
持续时间
以毫秒为单位保存延迟值。确保MATLAB函数块在硬件上的总执行时间(包括延时)小于采样时间,避免出现超限情况。
限制
无效的PWM引脚
在MATLAB函数块中不允许使用这些PWM引脚。
董事会 | PWM针 |
---|---|
Arduino Mega 2560, Mega ADK | 9、10 |
Arduino Leonardo, Micro | 5 |
Arduino Uno, Nano3.0 | 3、11 |
Arduino由于 | 11、12 |
Arduino MKR1000, MKR WiFi 1010, MKR Zero | 4、5 |
如果使用PWM函数从Arduino万博1manbetx硬件的MATLAB支持包在MATLAB函数块中,则不要使用本表中列出的引脚在Arduino的PWM块中从万博1manbet万博1manbetxxArduino硬件的Simulink支持包.万博1manbetxSimulink需要一个定时器来在Arduino硬件上进行调度。在MATLAB函数块中使用PWM函数生成PWM信号时,在Arduino硬件上选择定时器进行调度。因此,连接到该定时器的PWM引脚不能使用。
万博1manbetx模型输入输出
如果您在具有MATLA万博1manbetxB函数块的模型上运行Simulink IO读写数据函数和其他Simulink Arduin万博1manbetxo块,Simulink IO不运行在MATLAB函数块上。对于其他Simulink A万博1manbetxrduino块,Simulink IO运行正常。
资源冲突
避免资源冲突:
在访问Arduino外设之前,请先使用,设置引脚的模式
configurePin
到您计划使用的模式。在模型的不同外设上使用相同的引脚可能会导致未定义的行为。例如,如果你正在使用
readDigitalPin
要从MATLAB函数块中的引脚读取数字输入,同一引脚不允许作为模型中另一个块中的输出引脚。
其他可以尝试的事情
您可以在MATLAB函数块中使用I2C和SPI函数。看到基于陀螺仪的计步器MATLAB函数欲知详情。