matlab能和两个arduino板子已经建立通讯,但是板子没有反应,是什么问题?

Arduino应用笔记(三)这一篇和(二)方法不同:Matlab利用串口通信控制Arduino点亮LED
1、实现原理
与上一篇的方法不同,这一次的方法是Matlab利用串口发送函数给Arduino发送一个字符,一旦Arduino接收到字符之后,就执行对应的任务。
2、Arduino部分的代码
int pin = 8; //LED的管脚
void setup() {
pinMode(pin, OUTPUT); //设置管脚为输出模式
Serial.begin(9600);
void loop()
if(Serial.read()=='1')
digitalWrite(pin, 1);
if(Serial.read()=='0')
digitalWrite(pin, 0);
代码不难,然后接下来就是把代码烧到Arduino里面去。
3、Matlab部分代码
首先还是新建一个GUI界面,界面也很简单,就两个按钮:
然后我们在xx_OpeningFcn函数里面进行一些全局变量的初始化:
Port=serial('COM9');
set(Port,'BaudRate',9600);
%设置波特率
set(Port,'DataBits',8); %8位数据位
set(Port,'StopBits',1);
%1位停止位
fopen(Port); %打开串口
接下来是两个按钮的回调函数的程序:
LED亮按钮的
%fwrite(Port,'1'); %fwrite和fprintf都可以
fprintf(Port,'1');
LED灭按钮的
fwrite(Port,'0');
然后就是连接外围电路,执行Matlab程序,实验成功!
没有更多推荐了,当前位置:
如何用Matlab连接控制Arduino:GUI界面制作与电机控制
MATLAB是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。而Arduino开发板是一种越来越受到欢迎的开源硬件。
  MATLAB是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。而Arduino开发板是一种越来越受到欢迎的开源硬件。  一个是什么都能算的软件,一个是最火爆的开源硬件,两者结合能碰撞出什么样的火花呢?笔者以Matlab软件研究如何控制Arduino,将从Matlab制作Arduino的GUI界面和simulink应用出发,探索如何使用Matlab连接和控制Arduino。  Matlab与Arduino联合应用&&GUI界面  首先介绍如何安装配置一个基于Matlab的GUI界面,能够实现对ArduinoIO口的操作。  下图所示为matlab中Arduino相关程序的下载界面  下载后为压缩文件,解压缩为ArduinoIO的文件夹,打开Matlab(笔者为2012版本),将当前工作目录至于ArduinoIO文件夹下。  打开Matlab的GUIDE  安装下面方法,拖放两个按钮,按钮的显示文字可以通过双击后,在属性页下的&string&一栏下面修改,我们用两只按钮分别控制直流电机的转动  至此,我们已经完成必要的程序的烧写和界面的初步编写,下面将继续介绍如何添加按钮的响应函数,实现上位机的控制功能。  我们利用Matlab已经初步设计了一个GUI界面,下面将添加必要的响应函数,演示时间的控制功能。  下图展示如何从GUIDE进入按钮的编辑界面,在这里我们将添加对Arduino相应的IO口或者串口的操作。  下面是基本的操作函数实例汇总  a=arduino('COM9')  设置引脚为输入或者输出  a.pinMode(4,'input');  a.pinMode(13,'output');  读写引脚的状态  a.digitalRead(4)  a.digitalWrite(13,0)  模拟量输入或者输出操作  a.analogRead(5)  a.analogWrite(9,155)  串口操作  a.serial%getserialport  a.%flushesPC'sinputbuffer  a.roundTrip(42)%sends42tothearduinoandback  本例中若使用按钮&Right-Motor&点击实现IO口8置为高电平,驱动直流电机全速转动,则添加    a=arduino('COM7');  a.pinMode(8,'output');  在按钮&Right-Motor&的响应函数中添加代码段    a.digitalWrite(8,(get(hObject,'Value')))  Arduino端准备  想要arduino端的控制,还需要向Arduino中烧写已经下载的pde文件,其位置位于加压缩后的ArduinoIO文件夹下的pde文件中。通过usb线缆将Arduinouno与电脑连接,点击GUI中添加的按钮,即可实现远端控制功能。  我们介绍了,在Matlab中建立一个ArduinoGUI的过程。下面将继续介绍如何在Arduino端进行软件准备。  软件调试可以在Arduino连接至电脑端就可以进行。  下面将作者自己在其中遇到或者大家可能会遇到的问题一一总结如下:  (1)已经编写完成的Matlab程序已经绑定了通信口COM8,执行Matlab程序出现如下提示  Errorusingarduino(line83)  Couldnotopenport:COM8  ErrorinArduinomatlab&Arduinomatlab_OpeningFcn(line60)  a=arduino('COM8');  首先保证你的开发板已经连接至PC机,而且通过设备管理器查看端口是否与程序中设置的相同。  (2)在保证上述已经完成的情况下,依然提示出错  Errorusingarduino(line54)  PortCOM8alreadyusedbyMATLAB  这很可能是你中间断开了Arduino的连线或者重新编译了程序,你需要在Matlab中执行  delete(instrfind({'Port'},{'COM8'}))  然后重新连接即可。  (3)Arduino连接至PC端,但是不能烧写上期Blogger中的pde文件,这时候要排除IDE编译环境中可能存在的问题  1下载最新的IDE环境(http://arduino.cc/en/Main/Software#toc2)  2安装手动方式更新驱动  3注意更改软件中TOOLs下面的&Board&和&serialport&选项,按照自己所使用Arduino进行修改。  下面将介绍如何配置硬件外围电路,来为实验做最后准备。  为ArduinoUNO开发板连接外围电路,包括直流电机、led灯等外围器件。  使用到的元器件  下图是Arduino与直流电机的接口电路。  我们再分析各部分功能  1开关  2直流电机  3二极管  4MOSFE管  5电机驱动电源(9V)  由于Arduino的最大驱动电流是40mA,远远小于电机驱动所需的电流。这里我们使用一个MOSFET(当然可以使用三极管代替),来使Arduion的小电流来控制电机的通断  而电机属于电感性负载,在启停阶段可能会由于电感存在产生一个很大反向电压,可能会损害我们的MOSFET,这里使用一个二极管来使电流沿着一个方向流动,从而保证电机对其余电路的影响。  9V电源为电机转动供电,当我们直接将其连接至直流电机两侧时,会发现电机将会全速转动。  在实验中,我们手上只有一个直流电机,所以另外一只的控制我们使用led灯来模拟,注意要接上一只220欧的电阻进行限流。  在完成基本的软件和硬件的准备工作后,我们现在进入最终的测试阶段。  操作顺序:  1将Arduino通过usb线缆连接至PC  2打开Matab,将当前文件夹设为我们从matlab官网下载的并解压缩的ArduinoIO  3双击打开Arduinomatlab.fig,弹出控制界面  4点击按钮观察电机的转动,如果在Matlab提示出错信息,请尝试下面解决方法  5执行&clear&清除变量;执行&delete(instrfind({'Port'},{'COM8'}))&,并重新拔掉再插上线缆以创建新的通信连接,重复操作步骤1。
本文由入驻OFweek公众平台的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
用户名/邮箱/手机:
忘记密码?
用其他账号登录: QQ
请输入评论
最新活动更多 &&
广东省/深圳市
广东省/深圳市
广东省/深圳市
北京市/海淀区
江苏省/无锡市
江苏省/无锡市
北京市/海淀区
北京市/海淀区
浙江省/金华市
浙江省/金华市
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:Matlab和Arduino串口通信时为什么无法成功_百度知道
Matlab和Arduino串口通信时为什么无法成功
我有更好的答案
matlab这边返回的错误信息是什么。matlab端要先清除可能已经创建的端口,再重新建COM对象。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c# 怎么和arduino进行蓝牙通信
[问题点数:200分]
本版专家分:0
CSDN今日推荐
本版专家分:693
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐
C# 蓝牙通信 获取电子设备发送的数据。上传下载
在与arduino连线之前我们先通过usb转TTL(本文采用的CH340),将esp8266用串口调试助手进行测试烧录固件至esp8266准备工作:
http://espressif.com/zh-hans/products/hardware/esp8266ex/resources
在乐鑫官网下载最新的SDK与烧录工具
http://www.wch.cn/download/CH340I
首先是Android的,个人觉得最好的源代码是https://github.com/plastygrove/BlueSerial
蓝牙模块用于和手机或其它带蓝牙的设备通讯。蓝牙设备分为主从两种模式,作为主设备时,它查找和连接其它设备;作为从设备时只能被只它设备连接;通讯模式分透明传输和AT命令模式。最好购买主从一体的蓝牙模块。
下面介绍的是最常用的是作为从设备与手机相接,之后进入透明传输。这也是最简单的一种。
注意: Arduino与电脑和蓝牙模块通讯都使用串口TX/RX,同时操作时产生冲突,
arduino的基础代码,可直接使用.包括1602lcd使用,pmw调光,蓝牙通信等代码
本文基于《Android创建Service后台常驻服务并使用Broadcast通信》扩展蓝牙通信的功能,使用手机作为Client,HC06芯片作Service进行通信。
1)手动打开手机的蓝牙开关,打开app,自动连接HC06
2)按键1、2、3、4,通过HC06向下位机发送命令1、2、3、4
3)下位机反馈信息通过Toast回显到屏幕
【Arduino】Arduino接收字符串
相关文章 【Arduino】开发入门【十】Arduino蓝牙模块与Android实现通信
在【Arduino】开发入门【十】Arduino蓝牙模块与Android实现通信 中,只实现了,单个字符的发送。
Arduino的Serial.read()每次只能读一个字节,下面的方法说明如何实现字符串通信。
编译只要一块Ardu
因为项目需求:
选择了Arduino Mega2560作为控制器;
HC06蓝牙模块作为无线通讯模块,用来和Android蓝牙模块通讯(该模块不支持蓝牙4.0);
该文主要完成了Arduino对蓝牙模块的设置,通过Arduino对信号进行捕捉,并通过蓝牙模块发送出去。
Arduino入门:
于日在搜索颜色识别传感器时,了解到了arduino,仔细查阅了一下资料发现了新大陆,这个东西很有意思入门也不难。而且加上现在的移动互联,觉得可以用这个做点东西出来。
个人觉得这个加上现在的移动互联可以有很大的发展,比如:家具领域,安防领域,以及其他监控等等。
(1)图片:
这个就是官网上的介绍图片就这么一个芯片,可以实现编
简单说 一个蓝牙设置为主机,一个蓝牙设置为从机,设置对应密码波特率AT指令后,自动连接配对。
第一步:准备好做主机的蓝牙模块,用cp2102转串口模块连接蓝牙并进入AT设置模式(指示灯慢闪)
分别输入下面AT指令 (注意输入指令后加上回车后换行,发送后返回OK表示设置成功,如下指令是一条一条输入,切勿所有一起输入再点发送。设置完成后可以通过AT指令类似AT+NAME?这样的指令查询刚刚05-1502-1602-1602-1602-1602-1602-1602-1602-1602-16最新范文01-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-01

我要回帖

更多关于 两个arduino板子 的文章

 

随机推荐