再來開始進入正題跑馬燈,首先我們需要用到四顆LED燈,下圖為電路接法
接法1
接法2
程式碼部分
程式1(正常寫法鑑別度高):https://drive.google.com/folderview?id=0B-z-UZB41PNbS3pzTDZZX1FUak0&usp=sharing
========================================================================
int ledPin2 = 2; //宣告ledPin2為D2腳位
int ledPin4 = 4; //宣告ledPin4為D4腳位
int ledPin6 = 6; //宣告ledPin6為D6腳位
int ledPin8 = 8; //宣告ledPin8為D8腳位
void setup() //在setup裡面的程式只會執行一次
{
pinMode(ledPin2, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin8, OUTPUT);
} //將D2,D4,D6,D8設定為輸出
void loop() // 在LOOP裡面的程式會一直重複執行
{
digitalWrite(ledPin2, HIGH); //將數位ledPin2寫入(設定)為高電位(1)
digitalWrite(ledPin4, LOW); //將數位ledPin4寫入(設定)為低電位(0)
digitalWrite(ledPin6, LOW); //將數位ledPin6寫入(設定)為低電位(0)
digitalWrite(ledPin8, LOW); //將數位ledPin8寫入(設定)為低電位(0)
delay(1000); //延遲1000毫秒
digitalWrite(ledPin2, LOW); //將數位ledPin2寫入(設定)為低電位(0)
digitalWrite(ledPin4, HIGH); //將數位ledPin4寫入(設定)為高電位(1)
digitalWrite(ledPin6, LOW); //將數位ledPin6寫入(設定)為低電位(0)
digitalWrite(ledPin8, LOW); //將數位ledPin8寫入(設定)為低電位(0)
delay(1000); //延遲1000毫秒
digitalWrite(ledPin2, LOW); //將數位ledPin2寫入(設定)為低電位(0)
digitalWrite(ledPin4, LOW); //將數位ledPin4寫入(設定)為低電位(0)
digitalWrite(ledPin6, HIGH); //將數位ledPin6寫入(設定)為高電位(1)
digitalWrite(ledPin8, LOW); //將數位ledPin8寫入(設定)為低電位(0)
delay(1000); //延遲1000毫秒
digitalWrite(ledPin2, LOW); //將數位ledPin2寫入(設定)為低電位(0)
digitalWrite(ledPin4, LOW); //將數位ledPin4寫入(設定)為低電位(0)
digitalWrite(ledPin6, LOW); //將數位ledPin6寫入(設定)為低電位(0)
digitalWrite(ledPin8, HIGH); //將數位ledPin8寫入(設定)為高電位(1)
delay(1000); //延遲1000毫秒
}
========================================================================
程式2(鑑別度較低):https://drive.google.com/folderview?id=0B-z-UZB41PNbUVlJakgzelVQNTQ&usp=sharing
========================================================================
void setup() //在setup裡面的程式只會執行一次
{
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(8, OUTPUT);
} //將D2,D4,D6,D8設定為輸出
void loop() // 在LOOP裡面的程式會一直重複執行
{
digitalWrite(2, HIGH); //將D2寫入(設定)為高電位(1)
digitalWrite(4, LOW); //將D4寫入(設定)為低電位(0)
digitalWrite(6, LOW); //將D6寫入(設定)為低電位(0)
digitalWrite(8, LOW); //將D8寫入(設定)為低電位(0)
delay(1000); //延遲1000毫秒
digitalWrite(2, LOW); //將D2寫入(設定)為低電位(0)
digitalWrite(4, HIGH); //將D4寫入(設定)為高電位(1)
digitalWrite(6, LOW); //將D6寫入(設定)為低電位(0)
digitalWrite(8, LOW); //將D8寫入(設定)為低電位(0)
delay(1000); //延遲1000毫秒
digitalWrite(2, LOW); //將D2寫入(設定)為低電位(0)
digitalWrite(4, LOW); //將D4寫入(設定)為低電位(0)
digitalWrite(6, HIGH); //將D6寫入(設定)為高電位(1)
digitalWrite(8, LOW); //將D8寫入(設定)為低電位(0)
delay(1000); //延遲1000毫秒
digitalWrite(2, LOW); //將D2寫入(設定)為低電位(0)
digitalWrite(4, LOW); //將D4寫入(設定)為低電位(0)
digitalWrite(6, LOW); //將D6寫入(設定)為低電位(0)
digitalWrite(8, HIGH); //將D8寫入(設定)為高電位(1)
delay(1000); //延遲1000毫秒
}
========================================================================
若是第一次接觸程式的人,在看完LED亮與滅這篇以後大概會使用這種寫法,但是其實還有更精簡的寫法,就是使用迴圈,以下為使用迴圈後的程式,各位可以比對程式的差異性。
程式3(較精簡):https://drive.google.com/folderview?id=0B-z-UZB41PNbS25EWV9CckVCalE&usp=sharing
========================================================================
void setup() //在setup裡面的程式只會執行一次
{
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(8, OUTPUT);
} //將D2,D4,D6,D8設定為輸出
void loop() // 在LOOP裡面的程式會一直重複執行
{
for(int i=2; i<9 ;i=i+2)
{ digitalWrite(i, HIGH); //將i寫入(設定)為高電位(1)
delay(500); //延遲500毫秒
digitalWrite(i, LOW); //將i寫入(設定)為低電位(0)
delay(500); //延遲500毫秒
}
}
========================================================================
digitalWrite( 腳位, 高低電位);
for(起始值; 條件式 ;更新值)