如何延迟Arduino程序,确保串口监视器连接后再执行?
解决Arduino串口监视器乱码问题:等待串口连接后再执行代码
核心解决方案
在setup()函数中加入等待串口连接的循环,替代固定延迟。不同电脑建立串口连接的时间差异较大,固定的10ms延迟无法适配所有场景,而通过循环检测串口连接状态,能确保程序在串口完全就绪后再执行后续代码。
对于Arduino Uno和Mega(使用默认USB串口Serial),可以用以下代码实现等待:
while (!Serial) { // 空循环,直到串口连接建立 }
修改后的完整代码
const String str = "Hello, world"; // 存储目标字符串 void setup() { Serial.begin(9600); // 初始化串口波特率 // 等待串口监视器连接完成 while (!Serial); } void loop() { int charInMessage = 0; // 存储字符串长度 // 手动遍历统计字符数 for (int i = 0; str[i] != '\0'; i++) { charInMessage++; } Serial.println(charInMessage); // 输出字符数 while(true); // 程序仅运行一次 }
代码优化建议
你手动遍历统计字符数的写法可行,但Arduino的String类自带length()方法,可以直接获取字符串长度,简化代码:
// 替换原有的for循环部分 int charInMessage = str.length();
修改后loop()会更简洁高效,同时兼容Uno和Mega。
兼容性说明
上述代码在Arduino Uno和Mega上均可正常工作:
- Uno:程序会停在
while (!Serial)循环,直到打开串口监视器才继续执行。 - Mega:默认USB串口(
Serial)的检测逻辑和Uno一致,同样能等待连接完成。
内容的提问来源于stack exchange,提问作者Comrade Bacon
相关产品推荐
相关产品推荐

