Arduino Mega引脚测试代码运行后串口监视器输出乱码是什么原因?
异常输出原因分析
- 核心错误:
Serial.write()接口使用不当Serial.write()会将传入的数值直接作为ASCII编码发送,而digitalRead()返回的结果是整数0(低电平)和1(高电平)。ASCII编码中0、1都属于不可见控制字符,不属于常规可打印字符,直接输出就会出现乱码、占位符、异常符号等表现,你需要改用Serial.print()接口,它会把数值转换为对应的可打印字符'0'/'1'再发送。 - 串口数据发送速率过载
loop()函数没有加任何延时逻辑,会以Arduino运行主频持续往串口发送数据,远超过115200波特率的承载上限,会导致串口缓冲区溢出、数据丢包错位,进一步加重乱码表现。建议在loop()末尾添加至少delay(10);控制发送频率。 - 可排查项:串口监视器波特率不匹配
需确认IDE串口监视器的波特率设置和代码中Serial.begin(115200)的参数完全一致,波特率不匹配会直接导致全量乱码。
修正后参考代码:
void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, INPUT); pinMode(5, INPUT); Serial.begin(115200); // 可选:等待USB串口连接完成 while (!Serial) {} } void loop() { digitalWrite(2, LOW); digitalWrite(3, HIGH); // 输出可打印字符 Serial.print(digitalRead(4)); Serial.print(" "); Serial.print(digitalRead(5)); Serial.println(); // 控制发送频率 delay(100); }
内容的提问来源于stack exchange,提问作者PiThee
相关产品推荐
相关产品推荐

