You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:39:02