认识Arduino的串口
通过编写Arduino程序控制串口
Arduino UNO
Arduino IDE开发环境
基础
Arduino串口是一个用于Arduino开发板与电脑或者其他硬件之间通信的接口。
串口,是串行接口的简称,串行接口指的是数据一个接着一个的按一定的顺序发送与接接收。该通信形式简单方便,可以实现只需要一根线就可以双向通信。对远距离通信同时也是适用的,但是其短板就是传输速度较慢。根据信息的传送方向,串行接口又可以分成不同的类型。
在Arduino的串口引脚上标志有“TX”,"RX"
一般开发Arduino串口相关功能时,需要用到USB转TTL,该工具就是将tx、rx串口接口转换成USB接口,方便与电脑相连,从而进行调试Arduino的串口功能。
USB-TTL转接板上的引脚如下:
USB-TTL转接板的连接方式分为两种:(针对功能不一样)
分叉式接线法
| USB-TTL转接板 | Arduino |
|---|---|
| RXD | TXD |
| TXD | RXD |
| GND | GND |
直连式接线法
| USB-TTL转接板 | Arduino |
|---|---|
| RXD | RXD |
| TXD | TXD |
| GND | GND |
以下是基础的串口使用函数:
Arduino使用串口的时候,不管是输入还是输出模式,都需要先对串口进行初始化。初始化过程中需要设置串口的通信波特率,串口通信的双方都要根据相同的波特率进行通信,否则信息是不到达的。如下是设置波特率为9600
Serial.begin(9600);
检测Arduino串口是不是已经准备好的
if(Serial)
每一次的通信,通过串口传送的数据都会被储存到Arduino的 缓冲区中,所有要检测串口是否有数据发送过来,检测一下缓冲区接收区
Serial.available()
当通过串口发送数据过来的时候,被储存到缓冲区,我们要读取接收到的数据
Serial.read()
读取缓冲区数据之后,需要检测一下读取的数据具体是什么,这时候就需要将数读取到的数据打印出来,方便调试
Serial.print(val)
Serial.println(val)
串口通信结束了,若需要停止该串口的通信传输
Serial.end()
以下是更高级的串口使用函数:
清空串口的缓存,若数据通过串口连续的发送值 Arduino,串口都会将数据存储到缓冲区中,这个时间一长就会造成耗内存过大,影响性能,则需要当数据接收完并处理了之后,清空串口的缓存。
Serial.flush()
读取串口缓冲区数据的时候,直接read()则会直接全部读取,若根据需求需要按字节读取,则使用如下函数
Serial.flush()
从串口读取指定的长度的数据
Serial.readBytesUntil(character,buffer,length)
当读取到指定字符的时候,停止接收数据
Serial.readStringUntil()
读取指定数据类型的数据,下函数为自动筛选缓冲区,读取浮点型数据
Serial.parseFloat()
读取第一个有效的整形数据
Serial.parseInt()
串口中查找指定的字符串
Serial.find()