理论教育 Arduino串口通信优化方法

Arduino串口通信优化方法

时间:2023-06-30 理论教育 版权反馈
【摘要】:Arduino 提供的串口通信函数非常丰富,相关函数有:1. Serial.begin()描述:开启串口,通常置于setup()函数中。

Arduino串口通信优化方法

串口是一种通信方式的称呼,实质是一种数据传输协议(USART 协议)。数据是一位一位地发送出去和接收进来的。USART 内部结构十分复杂,简而言之主要由三部分组成:波特率发生器、接收单元和发送单元。每个单元的功能全部由硬件实现,同时以寄存器的形式对用户开放了配置接口(控制寄存器),又以寄存器的形式对用户开放了过程监控(状态寄存器)。

Arduino Uno 开发板上,硬件串口位于Rx(0)和Tx(1)引脚上,Arduino的USB 口通过转换芯片与这两个引脚连接,该转换芯片会通过USB 接口在PC 机上虚拟出一个用于Arduino 通信的串口,上传程序也是通过串口进行的。因此可以理解为,Arduino Uno 开发板的USB 接口也是一个串口,不仅仅可以用来上传程序,还可以接收来自Arduino Uno 开发板的打印信息。

Arduino 提供的串口通信函数非常丰富,相关函数有:

1. Serial.begin()

描述:开启串口,通常置于setup()函数中。

函数原型:

参数:

speed:波特率,一般取值9600,115200 等,例如Serial.begin(9600)。

返回值:无。

2. Serial.end()

描述:禁止串口传输。此时串口Rx 和Tx 可以作为数字I/O 引脚使用。

函数原型:

参数:无。

返回值:无。

3. Serial.print()

描述:串口输出(发送)数据。

函数原型:

参数:

val:打印的值,任意数据类型。

config:输出的数据格式。BIN(二进制)、OCT(八进制)、DEC(十进制)、HEX(十六进制)。对于浮点数,此参数指定要使用的小数位数。

示例:

Serial.print(78, BIN) 得到“1001110”;

Serial.print(78, OCT) 得到“116”;

Serial.print(78, DEC) 得到“78”;

Serial.print(78, HEX) 得到“4E”;

Serial.print(1.23456, 0) 得到“1”;

Serial.print(1.23456, 2) 得到“1.23”;

Serial.print(1.23456, 4) 得到“1.2346”;

Serial.print(‘N’) 得到“N”;

Serial.print(“Hello world.”) 得到“Hello world.”。

返回值:返回写入的字节数。

4. Serial.println()

描述:串口输出(发送)数据并换行。使用与Serial.print()一样,只是多了自动换行的功能。(www.daowen.com)

5. Serial.write()

写二进制数据到串口,数据是一个字节一个字节地发送的,若以字符形式发送数字应使用print()代替。

注意,可通过数组形式发送十六进制等,例如:

6. Serial.available()

描述:判断串口缓冲区的状态,即判断串口有没有缓存,并返回从串口缓冲区读取的字节数,即返回缓冲了多少个字节。

原型:Serial.available()。

参数:无。

返回值:可读取的字节数。

7. Serial.read()

描述:读取串口数据,一次读一个字符,读完后删除已读数据。

原型:Serial.read()。

参数:无。

返回值:返回串口缓存中第一个可读字节,当没有可读数据时返回-1,整数类型。

使用习惯: Serial.available()与 Serial.read()一般是同步使用的,用if 条件语句连接,例如:

8. Serial.readBytes()

描述:从串口读取指定长度的字符到缓存数组。

原型:Serial.readBytes(buffer, length)

参数:

buffer:缓存变量

length:设定的读取长度。

返回值:返回存入缓存的字符数。

下面将结合呼吸灯程序来进行串口监视“模拟输出”的变化信息,在 setup()函数中插入 Serial.begin(),在 analogWrite()函数后面插入Serial.println(),程序代码如下:

本程序上传成功后,点击菜单栏的“工具”→选择“串口监视器”,会弹出新窗口,如图3-3-5 所示,窗口中滚动着变化的模拟值。

图3-3-5 串口监视器

关闭串口监视器,再点击菜单栏的“工具”→选择“串口绘图器”,会弹出新窗口,如图3-3-6 所示,窗口中正在根据变化的模拟值进行绘线。

图3-3-6 串口绘图器

以上内容就是通过USB 口(软串口)Arduino 程序中变量的信息,后续在使用与测试传感器时,常会用到串口来读取传感器的数据,届时会结合以下函数使用:

Arduino Uno 开发板上,硬件串口位于Rx(0)和Tx(1)引脚上,其中Rx(0)是属于接收端,Tx(1)是属于发射端,这两个引脚经常会与蓝牙串口模块配合使用,实现蓝牙遥控或者蓝牙传输。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈