Arduino中文教程---认识Arduino的串口并编写程序操作串口

Words
936
Reading
5 min
Listen
Play
9y

What Will I Learn?

  • 认识Arduino的串口

  • 通过编写Arduino程序控制串口
    图片.png

Requirements

  • Arduino UNO

    图片.png

  • Arduino IDE开发环境

    图片.png

Difficulty

  • 基础

Tutorial Contents

一、认识Arduino的串口

Arduino串口是一个用于Arduino开发板与电脑或者其他硬件之间通信的接口。

串口,是串行接口的简称,串行接口指的是数据一个接着一个的按一定的顺序发送与接接收。该通信形式简单方便,可以实现只需要一根线就可以双向通信。对远距离通信同时也是适用的,但是其短板就是传输速度较慢。根据信息的传送方向,串行接口又可以分成不同的类型。

在Arduino的串口引脚上标志有“TX”,"RX"

图片.png

一般开发Arduino串口相关功能时,需要用到USB转TTL,该工具就是将tx、rx串口接口转换成USB接口,方便与电脑相连,从而进行调试Arduino的串口功能。

图片.png

USB-TTL转接板上的引脚如下:

图片.png

  • +5V
  • GND
  • RXD
  • TXD
  • 3V3

USB-TTL转接板的连接方式分为两种:(针对功能不一样)

  1. 分叉式接线法

    USB-TTL转接板Arduino
    RXDTXD
    TXDRXD
    GNDGND
  2. 直连式接线法

    USB-TTL转接板Arduino
    RXDRXD
    TXDTXD
    GNDGND

二、通过编写Arduino程序控制串口

以下是基础的串口使用函数:

  • 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()
    

Curriculum