Matlab和Arduino
2013-12-0313.8万
精华项目
AI 快速预览详细
本文介绍了如何使用Matlab Arduino Support package实现Matlab与Arduino之间的串口通信。支持的控制板包括UNO、Mega 2560和Duemilanove。通过简单的配置,可以在Matlab中实现对Arduino板的操作,如简易USB示波器和GUI控制LED。适用于STEM教育场景。
|
如果大家附件下不了,请到百度网盘去下,每一楼的附件都能在下面这个链接里找到http://pan.baidu.com/s/1lDq5k Matlab是运用极广的数学软件。Arduino又是现在很火的开源硬件平台。两者连起来玩也是很爽的。 特别是现在Matlab出了Arduino支援套件以后,玩起来比以往的串口通信简单多了。 第一部分 Matlab Arduino Support package 第二部分 Simulink Arduino Support package 第三部分 Matlab的串口通信 第三部分 Simulink的串口通信 坚持持续更新与编辑。 Part 1 Matlab Arduino Support package 这个支持包是为了实现Matlab与Arduino之间的串口通信。基于在Arduino板上提前烧写的服务器程序(Server program),监听串口的命令,需要的话可以返回结果。也就是说,Arduino板只需要提前烧写一个程序,之后便可通过Matlab命令对其直接操作。 该支援包支持学生版的Matlab。支持的控制板有UNO,Mega 2560,Duemilanove。 可以在Matlab官网下载,地址http://www.mathworks.de/hardware-support/arduino-matlab.html 点击下方的Requirement框里的“MATLAB Support Package for Arduino”,在新打开的网页中在右边点击Download Submission即可 也可以在本贴的附件直接下载ArduinoIO压缩包 下载后解压。把解压文件里的pde/adiosrv/adiosrv.pde文件用Arduino IDE烧写到Arduino控制板上。 把matlab的工作路径修改到ArduinoIO文件夹。这样配置就算完成了。 现在来实验一下。用matlab完成一个简易的usb示波器 首先建立arduino和matlab的连接,代码如下 a = arduino('COM3'); matlab会用几秒钟的时间来建立连接 用一个1k欧的可调电阻串联一个1k欧的电阻。如下图连接,楼主用的是AnalogRead pin 5 ![]() 将下面的代码直接复制到Matlab命令框,即可运行。 interval = 10000; passo = 1; t = 1; x = 0; while(t<interval) b = a.analogRead(5)*10; % 把读到的值放大10倍 x = [x,b]; plot(x); grid t = t+passo; drawnow; end 从a5所读的值会实时的画在图上,效果如下图。可以自己手动调整可调电阻阻值,即可在plot窗口观察阻值变化。 ![]() 下面来试一下把支援套件用到GUI点亮或熄灭led ![]() 这里为了使用digitalWrite(pin)设置了两个pushbutton。标签(tag)分别是led1和led2 在函数 _OpeningFcn 里设置全局变量,以及初始化。 global a; global led1_state; global led2_state; a = arduino('COM3'); a.pinMode(3,'output'); a.pinMode(4,'output'); a.pinMode(5,'input'); % 5读取3的状态 a.pinMode(6,'input'); % 6读取4的状态 led1_state = 0; led2_state = 0; 在函数 led1_Callback中添加如下代码 global a; global led1_state; if led1_state == 0 a.digitalWrite(3,1); led1_state = a.digitalRead(5); set(hObject, 'BackgroundColor',[0 0 1]); else a.digitalWrite(3,0); led1_state = a.digitalRead(5); set(hObject, 'BackgroundColor',[1 1 0]); end 根据变量led1_state设置led1的状态。读取led1状态,更新变量led1_state。更改按钮颜色 如果使用togglebutton,可以省略全局变量led1_state,可直接使用a.digitalWrite(3,(get(hObject,'Value')))进行状态切换。 注意:如果第二次执行的时候没有把语句 a = arduino('COM3')删除,或者没有清除变量a。都会出现错误 在函数led2_Callback中类似。完整代码在附件 Matlab Support Packag for Arduino(Matlab支援套件): ArduinoIO.zipMatlab GUI LED: led.zip |








Arduino IDE at folder 'arduino-1.8.1' is corrupt. Open Add‑On Explorer to reinstall MATLAB Support Package for Arduino Hardware.
但我的这个支持包装上了呀?
”
请问我怎么没找到 adiosrv 这个文件夹,只有 adio adioe adioes 这三个文件夹?
Matlab和Arduino这两个东西都很强大啊
楼主用没用过TI C2000,这个ADC在simulink上面能多少呀
楼主大哥用过TI C2000吗?这个ADC用在matlab simulink能多快呀:'(