本文首先通过一个简单的Simulink模型生成代码,然后将代码copy到一个Arduino路径中去编译软件。最后将软件下载到Arduino Uno中,通过串口输出Simulink计算的结果。

阅读本文需要有一定的Arduino IDE开发调试经验和Simulink代码生成经验。关于Simulink代码生成可以参考博主的专栏《Simulink代码生成》。部分内容参照上一篇博客《集成与验证:Simulink与STM32联合开发》,本文就不再赘述。

文章目录

  • 1 问题引入
  • 2 集成方案
  • 3 建模与编程过程
    • 3.1 Simulink模型搭建
    • 3.2 代码生成配置
    • 3.3 Arduino项目搭建
    • 3.4 串口打印、验证结果
  • 4 总结

1 问题引入

在上一篇博客《集成与验证:Simulink与STM32联合开发》中,成功地将Simulink生成出地代码加入到STM32工程中编译,并通过下载到STM32F407中验证了方案的正确性。

对于创客朋友们来说,还有一个常用的硬件就是知名的Arduino。Arduino的封装程度很高,并且有自己的一个专门的IDE供开发。但是Arduino的并成语言是C++,和STM32有些区别。所以本文会研究通过同样的方案、同样的Simulink模型生成C++的代码,并放在Arduino中运行。

2 集成方案

本文的集成方案与《集成与验证:Simulink与STM32联合开发》相同,只不过主函数变成了main.ino文件。所以集成方案参照《集成与验证:Simulink与STM32联合开发》的第2章即可。

3 建模与编程过程

3.1 Simulink模型搭建

模型的搭建、Storage Class的建配置与《集成与验证:Simulink与STM32联合开发》的第3.1章相同。

3.2 代码生成配置

搭建好模型,配置好信号线的Storage Class后,进行代码生成配置。这里和STM32的配置略有不同。

1)打开Simulink配置,配置离散求解器、代码生成的目标文件,以及目标硬件。



这里的目标文件还是ert.tlc,但是语言要选为C++。目标硬件要配置为AVR。

2)点击左侧的Interface,把Code Interface packaging选为Nonreusable function。默认的选项是C++ Class,会生成C++类的接口,不支持一部分Storage Class。Nonreusable function生成的代码就会和C代码差不多了。

3)Ctrl + B生成代码后会发现生成了一个demo.cpp的C++源文件,而不是demo.c的C源文件。

内容基本上和C源文件一样,这里就不再解析代码内容。

3.3 Arduino项目搭建

1)新建一个空白的Arduino项目main.ino,将如下代码拷贝进去。

#include "demo.h"float Demo_Input;     //在main.ino文件中定义全局变量Demo_Inputvoid setup() {// put your setup code here, to run once:Demo_Input = 0;       //初始化Demo_Input为0demo_initialize();    //demo模型的初始化函数Serial.begin(9600);   //串口初始化
}void loop() {// put your main code here, to run repeatedly:Demo_Input = Demo_Input + 1;   //Demo_Input每个循环加1demo_step();                   //执行模型的step函数,给Demo_Output赋值为Demo_Input的两倍Serial.print(Demo_Input);      //打印输入变量和输出变量Serial.print(";");Serial.print(Demo_Output);Serial.println(";");delay(1000);                   //延时1s
}

整体代码的思路和博客《集成与验证:Simulink与STM32联合开发》的第3.4章相似。

2)将Simulink生成的源文件和头文件拷贝到main.ino目录下。

在Arduino开发中,只要把源文件和头文件放在项目目录里,就可以调用到了,不需要像STM32的环境中那样配置一番。

3.4 串口打印、验证结果

通过Arduino IDE编译、上传,再通过串口打印可以得出Demo_Input和Demo_Output全局变量的数值。

从图中可以看出,串口打印的输入每隔1秒钟会加1,输出一直是输入的2倍。从而验证了模型的2倍增益效果已经体现在Arduino项目中了。

4 总结

通过Simulink生成适用Arduino的代码其实也比较简单,主要是注意配置C++以及目标硬件即可。

>>返回个人博客总目录

软件集成:Simulink与Arduino联合开发相关推荐

  1. 软件集成:Simulink与STM32联合开发

    本文首先通过一个简单的Simulink模型生成代码,然后将代码copy到一个STM32工程中去编译软件.最后将软件下载到STM32F407中,通过串口输出Simulink计算的结果. 阅读本文需要有一 ...

  2. STM32CubeMX、keil、simulink联合开发MCU教程

    一.整体思路 利用Matlab的simulink搭建模型生成C代码,通过stm32cubemx生成工程,最后在KEIL或者IAR等工具里面编译生成代码下载至MCU中执行. 本文以流水灯建立模型和简单使 ...

  3. ADRC控制器 Ardupilot SIMULINK 飞控联合开发

    ADRC控制器 Ardupilot & SIMULINK 飞控联合开发 Adrc控制器 Simulink to C++ Ardupilot PID库替换 自动代码生成源文件 PID库 参数添加 ...

  4. Linux软件集成开发环境

    package: download from: 软件集成开发环境(代码编辑.浏览.编译.调试) Emacs http://www.gnu.org/software/emacs/ Source-Navi ...

  5. Arduino应用开发——SD卡

    Arduino应用开发--SD卡 目录 Arduino应用开发--SD卡 前言 1 硬件介绍 1.1 模块简介 1.2 硬件连接 2 软件编程和测试 2.1 Arduino IDE环境搭建 2.2 S ...

  6. 安全软件秘诀——根据ISO / DIS 26262开发ECU基础软件

    原文链接:Recipe for Safe Software 安全软件秘诀 根据ISO / DIS 26262开发ECU基础软件 随着新的ISO 26262标准的引入,安全相关功能的要求变得比以前更加具 ...

  7. 基于Arduino Uno开发板制作音乐播放器

    基于Arduino Uno开发板制作音乐播放器 本文将基于Arduino开发板实现一个音乐播放器. 利用Arduino Uno读取sd卡模块中内存卡的音乐,传输信号到扬声器进行播放. 一.项目软硬件简 ...

  8. Arduino各开发板

    参考来源:https://www.arduino.cn/thread-42417-1-1.html 查了好久,发现除了奈何等等几位大神总结过arduino各板子之间的性能.差异,没有很新的分析文章,在 ...

  9. Arduino UNO开发板开箱体验

    Arduino UNO开发板开箱体验 1.Arduino简述 1.1什么是Arduino  Arduino是一个开源的电子设计平台,包括软件和硬件.其中硬件部分就是一块开发板了,软件部分就是对这块板子 ...

最新文章

  1. 下拉列表JComboBox,列表框JList
  2. quasar_Quasar和Akka –比较
  3. python搭建自动化测试平台_如何用python语言搭建自动化测试环境
  4. AWS自动化合规slide
  5. Linux一些经典书籍
  6. asp.netcore3.0 使用 DbProviderFactories 连接数据库
  7. .NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计
  8. 2019专业赛事活动承办平台有哪些?—创成汇
  9. oracle数据库启动多个监听,一台Oracle数据库服务器上两个监听同时使用
  10. 学编程必备:3 大编程字体!让你在编程的时候原地起飞!
  11. 【MySQL】聚合函数、group by、having、order by等语句的应用
  12. 用JS判断浏览器是否是IE9以下,处理可能遇到的兼容性问题,或者给出浏览器版本过低的升级提醒。
  13. wp/wordpress 自定义模板调用函数
  14. 根据某一列拆分Excel为多个表格
  15. Java虚拟机(三)--------GC算法和收集器
  16. 微信昵称中表情保存到数据库问题
  17. PCA(主成分分析)及源码
  18. scrapy-爬取豆瓣电影排行250
  19. 高中生必读:如何利用黄金暑假期冲刺高中数学
  20. 深度学习在人脸识别中的应用 ——优图祖母模型的“进化”

热门文章

  1. 最优化方法——梯度 Jacobian矩阵 Hessian矩阵
  2. 64位的电脑比32位的电脑跑的快么?「多图预警」
  3. 学生使用计算机制度汇编,小学学校学生管理制度汇编
  4. 英文 电气与计算机工程学报,天津大学学报有几个版本
  5. 与民航同行,更多云和之旅即将启程
  6. PageAdmin CMS 环境配置要求
  7. C#窗体——100以内加法做题程序
  8. 【51】使用51单片机和数码管生成10以内加法及两组数据判断大小
  9. PHP--地球坐标系转为火星坐标系再转为高德坐标系
  10. silk 编解码_Silk解码 开发日志