Wemos D1串口通信


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、简介arduino串口通信常用API

提示:串口通信原理见:串口原理

arduino中的串口通信使用的是 Serial 类,我们直接调用类中的接口即可。

串口用于Arduino控制板和一台计算机或其他设备之间的通信。所有的Arduino控制板有至少一个串口(又称作为UART或USART)。它通过0(RX)和1(TX)数字引脚经过串口转换芯片连接计算机USB端口与计算机进行通信。因此,如果你使用这些功能的同时你不能使用引脚0和1作为输入或输出。

1. Serial.begin()

作用:设置串行口波特率。

语法
Serial.begin(speed)
仅适用于Arduino Mega : Serial1.begin(speed) Serial2.begin(speed) Serial3.begin(speed)

参数:speed: 位/秒 (波特) - long

返回值:无

2. Serial.print()

作用:往串口缓冲区发送数据。

语法
Serial.print(val)
Serial.print(val,格式)

参数
val:打印输出的值 - 任何数据类型
格式:指定进制(整数数据类型)或小数位数(浮点类型)

返回:字节 print()将返回写入的字节数,但是否使用(或读出)这个数字是可设定的

3. Serial。println()

作用:往串口缓冲区发送数据,并换行。

语法
Serial.println(val)
Serial.println(val, format)

参数:
val: 打印的内容 - 任何数据类型都可以
format: 指定基数(整数数据类型)或小数位数(浮点类型)

返回值:字节(byte)
println()将返回写入的字节数,但可以选择是否使用它。

4. Serial.read()

作用:读取持续输入的数据

语法
serial.read()
Arduino Mega独有:
serial1.read()
serial2.read()
serial3.read()

参数:无

返回值:传入的串口数据的第一个字节(或-1,如果没有可用的数据)- int

5. Serial.available()

作用:获取从串口读取有效的字节数(字符)。

语法
Serial.available()
仅适用于Arduino Mega :
Serial1.available()
Serial2.available()
Serial3.available()

参数:无

返回值:可读取的字节数

6. if (Serial)

作用:判断串口是否准备好。

语法
对于所有的arduino板:
if (Serial)
Arduino Leonardo 特有:
if (Serial1)
Arduino Mega 特有:
if (Serial1)
if (Serial2)
if (Serial3)

参数:无

返回值:为布尔值。如果指定的串行端口是可用的,则返回true。如果查询Leonardo的USB CDC串行连接之前,它是准备好的,将只返回false。

二、arduino串口通信代码演示

1.arduino与电脑通信

void setup() {
    
    
  
  Serial.begin(115200);   	//设置串口波特率为115200
  pinMode(D2,OUTPUT);		//初始化D2口,用于测试串口,连接蜂鸣器
  digitalWrite(D2,HIGH);	//我使用的蜂鸣器为低电平触发,所以初始化为高电平
  							//说明使用串口时也可以在这里判断一下串口是否准备好,我在此处并没有使用
}

void loop() {
    
    
  char cmd;					//用来接受串口发送过来的数据
 // int val;

  if(Serial.available() > 0)	//判断串口缓冲区是否有数据
  {
    
    
    cmd = Serial.read();		//读取串口缓冲区的数据

    //val = strtol(&cmd,NULL,10);
    
    if(cmd == '1')				//判断是否为字符1,是则打开蜂鸣器,并向串口缓冲区发送open beep!
    {
    
    
        Serial.println("open beep!");
        digitalWrite(D2,LOW);
     }
     else						//若不为字符1,则关闭蜂鸣器,并向串口缓冲区发送close beep!
     {
    
    
          Serial.println("close beep!");
          digitalWrite(D2,HIGH);
      }
  }

}

实验结果:(后期补充)

未完待续…

猜你喜欢

转载自blog.csdn.net/weixin_51363326/article/details/116525357