本文主要是介绍matlab喜羊羊,【搬运】DFRobot关于连接Matlab和Arduino的教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转发DFRobot关于连接Matlab和Arduino的教程
http://www.dfrobot.com.cn/community/forum.php?mod=viewthread&tid=948&page=1&extra=
如果大家附件下不了,请到百度网盘去下,每一楼的附件都能在下面这个链接里找到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
191407qie908iissj9jhyd.jpg (1.98 MB, 下载次数: 23)
2016-6-6 09:41 上传
WP_20131201_003.jpg (2.66 MB, 下载次数: 15)
下载附件 [url=]保存到相册[/url]
2013-12-3 19:14 上传
将下面的代码直接复制到Matlab命令框,即可运行。
interval = 10000;
passo = 1;
t = 1;
x = 0;
while(t
b = a.analogRead(5)*10; % 把读到的值放大10倍
x = [x,b];
plot(x);
grid
t = t+passo;
drawnow;
end
从a5所读的值会实时的画在图上,效果如下图。可以自己手动调整可调电阻阻值,即可在plot窗口观察阻值变化。
192120czrj62aj52mohsgq.jpg (1.58 MB, 下载次数: 23)
2016-6-6 09:41 上传
WP_20131201_002.jpg (2.12 MB, 下载次数: 15)
下载附件 [url=]保存到相册[/url]
2013-12-3 19:21 上传
下面来试一下把支援套件用到GUI点亮或熄灭led
220303c9vpe9j1rutku991.jpg (13.35 KB, 下载次数: 24)
2016-6-6 09:41 上传
QQ图片20131203150232.jpg (13.35 KB, 下载次数: 11)
下载附件 [url=]保存到相册[/url]
2013-12-3 22:03 上传
这里为了使用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支援套件):
zip.gif (2.15 KB, 下载次数: 25)
2016-6-6 09:41 上传
ArduinoIO.zip (172.87 KB, 下载次数: 2328)
2013-12-6 02:39 上传
点击文件名下载附件
阅读权限: 10
下载积分: 创造力 -1
Matlab GUI LED:
led.zip (3.25 KB, 下载次数: 1891)
2013-12-6 02:38 上传
点击文件名下载附件
阅读权限: 10
下载积分: 创造力 -1
这篇关于matlab喜羊羊,【搬运】DFRobot关于连接Matlab和Arduino的教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!