主要内容

部署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板上配置模型:

  1. 打开Simulin万博1manbetxk模型。在MATLAB命令提示符中,输入:

    > > arduino_matlab_codegen

  2. 硬件选项卡上,单击硬件设置打开配置参数对话框。

  3. 选择硬件实现面板中选择Arduino硬件硬件板参数列表。请勿更改其他设置。点击好吧

  4. 要查看在编辑器中编写的函数,双击MATLAB函数块。

    提示

    在部署函数之前,必须验证函数。看到运行MATLAB函数

  5. 要构建模型并在硬件上运行,请单击构建、部署和启动硬件选项卡。

  6. 单击,进行信号监控和参数调优监视和调优硬件选项卡。例如,您可以改变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函数欲知详情。