|
以下使用低態點亮之反邏輯模式控制 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);//高態熄滅
}
} |
|