如何修改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; } }
关键修改说明
- 变量类型调整:把
const long interval改成long interval,让间隔值可以被动态修改。 - 移除无效代码:删掉了那个会导致程序卡死的for循环。
- 简化状态切换:用
ledState = !ledState替代原有的if-else判断,代码更简洁高效。 - 实现间隔递增:每次LED完成一次亮/灭切换后,给
interval加上1000毫秒(1秒),这样下一次的亮灭间隔就会比当前多1秒。
内容的提问来源于stack exchange,提问作者Ciri Zireal Blaviken
相关产品推荐
相关产品推荐

