以下使用低態點亮之反邏輯模式控制 6 個 LED:
實體圖


電路圖

控制程序

void setup() {
     pinMode(2, OUTPUT);digitalWrite(2, HIGH);
     pinMode(3, OUTPUT);digitalWrite(3, HIGH);
     pinMode(4, OUTPUT);digitalWrite(4, HIGH);
     pinMode(5, OUTPUT);digitalWrite(5, HIGH);
     pinMode(6, OUTPUT);digitalWrite(6, HIGH);
     pinMode(7, OUTPUT);digitalWrite(7, HIGH);
}

void loop() {
     digitalWrite(2, LOW); //低態點亮
     delay(500); //延遲0.5秒
     digitalWrite(2, HIGH);//高態熄滅
     digitalWrite(3, LOW);//低態點亮
     delay(500); //延遲0.5秒
     digitalWrite(3, HIGH);//高態熄滅
     digitalWrite(4, LOW);//低態點亮
     delay(500); //延遲0.5秒
     digitalWrite(4, HIGH);//高態熄滅
     digitalWrite(5, LOW);//低態點亮
     delay(500); //延遲0.5秒
     digitalWrite(5, HIGH);//高態熄滅
     digitalWrite(6, LOW);//低態點亮
     delay(500); //延遲0.5秒
     digitalWrite(6, HIGH);//高態熄滅
     digitalWrite(7, LOW);//低態點亮
     delay(500); //延遲0.5秒
     digitalWrite(7, HIGH);//高態熄滅
}

問題思考:
1)為何最後一行 digitalWrite(7, HIGH); 不用 delay ?
2)若在
     digitalWrite(2, HIGH);//高態熄滅
     digitalWrite(3, LOW);//低態點亮
     delay(500); //延遲0.5秒
     中間穿插一行如下,會有和效果?
     digitalWrite(2, HIGH);//高態熄滅
     delay(1000);
     digitalWrite(3, LOW);//低態點亮
     delay(500); //延遲0.5秒
同樣的電路,同樣的效果,使用迴圈方式。
void setup() {
     for(int i=2; i<=7; i++){
         pinMode(i, OUTPUT);
         digitalWrite(i, HIGH);
    }
}

void loop() {
     for(int i=2; i<=7; i++){
          digitalWrite(i, LOW); //低態點亮
          delay(500); //延遲0.5秒
          digitalWrite(i, HIGH);//高態熄滅
     }
}

問題思考:
1)若將下列程式碼順序更換一下效果會如何?
     digitalWrite(i, LOW); //低態點亮
     delay(500); //延遲0.5秒
     digitalWrite(i, HIGH);//高態熄滅

同樣的電路,同樣的效果,使用陣列+迴圈方式。
const int Led[]={2, 3, 4, 5, 6, 7};
void setup() {
     for(int i=0; i<6; i++){
         pinMode(Led[i], OUTPUT);
         digitalWrite(Led[i], HIGH);
    }
}

void loop() {
     for(int i=0; i<6; i++){
          digitalWrite(Led[i], LOW); //低態點亮
          delay(500); //延遲0.5秒
          digitalWrite(Led[i], HIGH);//高態熄滅
     }
}