我是靠谱客的博主 怕孤单毛衣,这篇文章主要介绍Matlab与Arduino连接(一):MATLAB与Arduino的串口通信,现在分享给大家,希望可以做个参考。

1、arduino自身的串口测试典例

用arduino自身带的串口串口来进行测试,以及LED灯(pin13)来做测试,代码如下所示:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int led = 13; char string; float angle_1; float angle_2; void setup() { Serial.begin(9600); Serial.println("Led blink-blink"); // 打印名字 pinMode(led,OUTPUT); } void loop() { if(Serial.available()>0){ string = Serial.read(); delay(2);} // 判断串口输入信息控制LED的亮灭 if(string == '1'){ digitalWrite(led,HIGH); angle_2 = (float(string) - 48); Serial.println(angle_2); } else if(string == '2'){ digitalWrite(led,LOW); angle_1 = (float(string)- 48); Serial.println(angle_1); } }

串口小练习:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
```cpp int Serial_val = 0; char string; int i = 1; int num_1; int num_2; void setup() { Serial.begin(9600); Serial.println("i am coming"); } void loop() { while(i <= 10) { if(Serial.available()>0)//有数据输入时,接收 { string = Serial.read(); Serial.println(float(string)); Serial.println() delay(2); } //num_1 = int(string) - 48; Serial.println(i); i = i + 1; delay(2000); } }

串口监视窗口:

途中:打印52是,给arduino发送了‘4’,其打印的是ASCII码。所以,注意他们之间的转换。

2、MATLAB与arduino的串口通信

实现arduino与matlab两端间相互的数据传输、发送。

arduino端的代码(比较杂和乱,不同测试用的代码)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int Serial_val = 0; char string; int i = 1; int num_1; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); Serial.println("i am coming"); } void loop() { while(i <= 100) { if(Serial.available()>0){ string = Serial.read();//监控串口是否发过来数据 delay(2); num_1 = float(string) - 48;//转为浮点型和Ascii码转换 if(num_1 == 1){ digitalWrite(13,HIGH);//利用灯来判断 } else if(num_1 == 2){ digitalWrite(13,LOW); } } //digitalWrite(13,LOW); // Serial.println(num_1);测试用的可不管 delay(100); Serial.println(i); i = i + 1; delay(1000); } }

matlab端,这里将代码写成函数形式,用的时候调用即可。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
%%注:代码比较杂乱,是下图改进后传输数据绘图的用的 function Serial_communication1(numero_muestras) %建立函数 close all; clear all; clc;%matlab的‘初始化’ %y = zeros(1,1000); delete(instrfind({'Port'},{'COM6'}));%设置创建串口COM6; puerto_serial = serial('COM6'); puerto_serial.BaudRate = 9600; warning('off','MATLAB:serial:fscanf:unsuccessfulRead'); fopen(puerto_serial);%打开串口 contador_muestras = 1; % figure('Name','Serial communication:Matlab + Arduino.WCYang'); % title('arduino 和 Matlab通信'); % xlabel('模拟数值'); % ylabel('量'); % grid on; % hold on; %disp(puerto_serial); numero_muestras = 10; valor_f = 0; while contador_muestras <= numero_muestras %ylim([0 5.1]); %xlim %Y = puerto_serial; %plot(contador_muestras,valor_f,'X-r'); %drawnow; %disp(puerto_serial); valor_f = fscanf(puerto_serial,'%d'); disp(valor_f); contador_muestras = contador_muestras + 1; fprintf(puerto_serial,'1');%给arduino发送信息 pause(0.5); fprintf(puerto_serial,'2'); pause(0.5); end fclose(puerto_serial); delete(puerto_serial);%关闭、断开串口连接 clear all; end

注意:串口通信一般有两种方式: 1、字符 2、字节 。例如,发送‘’15‘其首先发’1‘过去后再发’5‘过去。且需要利用ASCII表转换。
对照表可点此链接:点我吧,叮咚!

最后

以上就是怕孤单毛衣最近收集整理的关于Matlab与Arduino连接(一):MATLAB与Arduino的串口通信的全部内容,更多相关Matlab与Arduino连接(一):MATLAB与Arduino内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部