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

Arduino中for循环变量设为全局后串口仅输出一次的原因

问题根因

核心原因是全局变量的生命周期特性:全局变量只会在程序上电时初始化一次,运行过程中对它的修改会一直保留,不会随函数反复调用自动重置。
具体执行流程:

  • 上电启动时,全局变量i被赋值为'A'(对应ASCII值65)。
  • 第一次进入loop(),for循环判定i <= 'Z'('Z'对应ASCII值90)成立,逐次打印字母同时i持续自增;等A到Z全部打印完,i已经自增到91,超过'Z'的判定阈值,循环跳出,执行500ms延时。
  • 第一次loop()执行完后,Arduino会自动反复调用loop(),但此时i的值一直停在91,从来没有被重置回'A',后续每次进loop()时for循环的条件从一开始就不成立,根本不会进入循环执行打印,自然只会输出一次A-Z序列。
修复方法

把循环变量i挪到for循环内部或者loop()函数里定义就行,这样每次跑loop()的时候i都会重新初始化为'A',就能每隔500ms重复打印A-Z了,修正后的代码:

void setup() {
    Serial.begin(9600);
}

void loop() {
    for (char i = 'A'; i <= 'Z'; i++) {
        Serial.print(i);
    }
    delay(500);
}

内容的提问来源于stack exchange,提问作者Berat Durmus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:03:19