Arduino入门教程:4、打印字符到电脑
飞书文档https://x509p6c8to.feishu.cn/docx/TBuSdqVU9oBlDTx4MBbcI1t3nLh
应用场景:
看Arduino板卡的运行状态
与电脑上位机软件通信、与Android工控机通讯
| |
串口模块:以太网、WiFi、蓝牙、Zigbee、Lora等串口模块
什么是串口?
串行通讯端口,简称串口,也称COM口,串行接口的数据是通过一条线一位位地顺序传送。
并行接口,简称并口,是指8位数据同时通过8条并行线进行传送。
串口形容一下就是一条车道,而并口就是有8个车道同一时刻能传送8位(一个字节)数据。但是并不是并口快,由于8位通道之间的互相干扰。传输受速度就受到了限制。而且当传输出错时,要同时重新传8个位的数据。串口没有干扰,传输出错后重发一位就可以了。
| |
什么是串口波特率?
波特率(bandrate),指的是串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制位。比如每秒钟可以传输9600个二进制(传输一个二进制位需要的时间是1/9600秒,也就是104us),波特率就是9600。
串口的通信波特率不能随意设定,而应该再一些值中去选择。一般常见的波特率是9600或者115200(低端的单片机如51常用9600,高端的单片机和嵌入式SOC一般用115200)。
数据位:
1010 1010 -> 0xaa ->170
10*16+10
也就是说我们可以通过控制引脚按上面的高低电平,每104us改变一次,就可以完成一个字节的传输。
但是芯片已经帮我们做好了这些操作,我们要做的只是配置好波特率,然后填写数据即可。
接线图:
参考代码:
//引入头文件
#include <Arduino.h>uint8_t temp_data;void setup() {Serial.begin(9600);// Serial.begin(115200);Serial.print("setup\n");
}void loop() {delay(1000);Serial.print("loop\n");//判断串口是否可用while(Serial.available()) {//读取接收到的数据temp_data = Serial.read();if(temp_data == '$') {Serial.printf("get data %d\n",temp_data);}}
}/*
如果设置Serial.begin(115200);
则需要在platformio.ini中添加
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
*///可以尝试,使用电脑控制LED灯