Arduino 与matlab串口通讯

有的时候我们自己给Arduino编好了程序,又希望在Matlab中调用串口,读取数据。此时 Matlab Support Package for Arduino显然不合适了。这里我们要用到Matlab里的串口对象serial。比如当我们需要利用Matlab处理摄像头画面,结合摄像头标定、摄像头识别、3D扫描后建模等等。
还是以part1里面的简易示波器为例。
Arduino代码如下:

int analogPin = 5;
int val = 0;

void setup()
{
Serial.begin(9600);
}

void loop()
{
val = analogRead(analogPin);
Serial.println(val);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
这里还是要实现Matlab的即时读取和画图。Matlab代码如下:

s = serial('COM3'); %定义串口对象
set(s,'BaudRate',9600); %设置波特率s
fopen(s); %打开串口对象s

interval = 10000; %这里开始的代码很Part1里的代码类似
passo = 1;
t = 1;
x = 0;
while(t<interval)
b = str2num(fgetl(s)); %用函数fget(s)从缓冲区读取串口数据,当出现终止符(换行符)停止。
x = [x,b]; %所以在Arduino程序里要使用Serial.println(http://www.amjmh.com/v/)
plot(x);
grid
t = t+passo;
drawnow;
end
fclose(s); %关闭串口对象s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
其他关于串口对象serial的函数之后更新
--------------------- 

原文地址:https://www.cnblogs.com/hyhy904/p/11304675.html