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

如何修改Arduino程序使LED开关间隔每次循环重启时增加1秒?

Arduino Uno 修改程序实现LED间隔每次增加1秒

原代码的问题

  • const long interval是常量,无法修改,满足不了“间隔递增”的需求,必须改为可读写的普通变量。
  • 代码里的for(int interval = 500; interval >= 20; interval++)逻辑完全错误:循环条件是interval >=20但每次interval++会让值越来越大,永远满足条件,导致程序卡死,而且这段代码和需求无关,必须删除。

修改后的完整代码

const int ledPin = LED_BUILTIN;

int ledState = LOW;  
unsigned long previousMillis = 0;
long interval = 1000; // 改为普通变量,初始间隔1秒

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    // 切换LED亮灭状态
    ledState = !ledState;
    digitalWrite(ledPin, ledState);

    // 每次状态切换后,间隔增加1秒(1000毫秒)
    interval += 1000;
  }
}

关键修改说明

  1. 变量类型调整:把const long interval改成long interval,让间隔值可以被动态修改。
  2. 移除无效代码:删掉了那个会导致程序卡死的for循环。
  3. 简化状态切换:用ledState = !ledState替代原有的if-else判断,代码更简洁高效。
  4. 实现间隔递增:每次LED完成一次亮/灭切换后,给interval加上1000毫秒(1秒),这样下一次的亮灭间隔就会比当前多1秒。

内容的提问来源于stack exchange,提问作者Ciri Zireal Blaviken

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:10:25