串口是一种通信方式的称呼,实质是一种数据传输协议(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)是属于发射端,这两个引脚经常会与蓝牙串口模块配合使用,实现蓝牙遥控或者蓝牙传输。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。