// L1-011 8灯双向流水灯【教师完整版·无缝去重终极版】
// 引脚阵列:13红、12橙、11黄、10绿、9青、8蓝、7紫、6白
const int ledPins[] = {13,12,11,10,9,8,7,6};
// 自适应计算LED数量,代码通用可拓展
const int ledCount = sizeof(ledPins) / sizeof(ledPins[0]);
// 全局流水速度参数
const int flowSpeed = 300;
void setup() {
// 批量初始化所有引脚为输出,上电默认全灭
for(int i = 0; i < ledCount; i++){
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
}
void loop() {
// ========== 正向全程流水:红→橙→黄→绿→青→蓝→紫→白 ==========
for(int i = 0; i < ledCount; i++){
// 全局清零,消除长阵列拖尾残影
for(int j = 0; j < ledCount; j++){
digitalWrite(ledPins[j], LOW);
}
digitalWrite(ledPins[i], HIGH);
delay(flowSpeed);
}
// ========== 反向无缝回流:紫→蓝→青→绿→黄→橙(去重优化) ==========
// ledCount-2 跳过末尾白灯,i>0 跳过开头红灯,杜绝端点重复闪烁
for(int i = ledCount - 2; i > 0; i--){
for(int j = 0; j < ledCount; j++){
digitalWrite(ledPins[j], LOW);
}
digitalWrite(ledPins[i], HIGH);
delay(flowSpeed);
}
}