前言


按键点完灯啦,那就开始串口的使用吧!

一、串口通信

1、简单的串口打印

初始化串口,打印字符串:
#include <Arduino.h>

void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
}

void loop() {
  Serial.printf("波特率 9600 \r\n");
  delay(1000);
  // put your main code here, to run repeatedly:
}

效果图: 在这里插入图片描述

2、单个串口数据接收与回传

发送十六进制数据,并回传该十六进制的数据。
#include <Arduino.h>

int receivedData; //接收的数据
 
void setup() {
  Serial.begin(115200); 
}
 
void loop() {
  // 判断:接收到数据,进入循环
  if (Serial.available() > 0) {
    // 回传十六进制数据
    receivedData = Serial.read();
    Serial.print("received: ");
    Serial.println(receivedData,HEX);
  }
}
下载程序到ESP32中,打开串口助手,效果如图所示:

在这里插入图片描述(备注:这里是以十六进制收发,所以注意串口助手发送的格式)

3、字符串数据接收与回传

一串字符的接收与回传。
#include <Arduino.h>
String recData; //接收的数据
 
void setup() {
  Serial.begin(115200); 
}
 
void loop() {
  // 收到什么发什么数据
  if (Serial.available() > 0) {
    recData = Serial.readString();
   // Serial.print("received: ");
    Serial.print(recData);
  }
}
通过串口助手发送字符串给ESP32,并成功实现字符串回传:

在这里插入图片描述

4、常用的串口函数

 列出一些常用的串口函数,有更具体信息需求的朋友可自行查询更详细的信息。
Serial.println(data) //从串行端口输出数据,跟随一个回车(ASCII 13, 或 'r')和一个换行符(ASCII 10, 或 'n')。这个函数所取得的值与 Serial.print()一样。
Serial.println(b) //以十进制形式输出b的ASCII编码值,并同时跟随一个回车和换行符。
Serial.println(b, DEC)// 以十进制形式输出b的ASCII编码值,并同时跟随一个回车和换行符。
Serial.println(b, HEX) //以十六进数据形式输出b的ASCII编码值,并同时跟随一个回车和换行符。
Serial.println(b, OCT)//以八进数据形式输出b的ASCII编码值,并同时跟随一个回车和换行符。
Serial.println(b, BIN)//以二进数据形式输出b的ASCII编码值,并同时跟随一个回车和换行符。
Serial.print(b, BYTE)//以单个字节输出b,并同时跟随一个回车和换行符。
Serial.println(str)//如果 str是一个字符串或数组,输出整个 str的 ASCII编码字符串。
Serial.println()//仅输出一个回车和换行符。

二、总结

没啥好说的,有具体问题评论区问。

三、Q&A

在使用VScode下载的时候,出现下图的错误,导致无法下载:

在这里插入图片描述解决方法:关闭其他正在占用串口的软件或者关闭该软件上的串口。
分析:可能是调试时忘记“关闭串口”,导致串口一直被串口助手占用,令VScode无法使用该串口。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐