// L1-009 6灯双向流水灯【教师完整版·无缝去重版】
// 引脚阵列:13红、12橙、11黄、10绿、9青、8蓝
const int ledPins[] = {13,12,11,10,9,8};
// 自适应计算LED数量
const int ledCount = sizeof(ledPins) / sizeof(ledPins[0]);
// 统一流水速度参数
const int flowSpeed = 400;
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);
}
}