LED跑馬燈

這次準備的材料跟LED亮與滅一樣,因為上次沒有介紹電阻的看法這次補介紹一下,電阻判別法每一環代表的涵義分別為,第一環個位數,第二環十位數,第三環十的N次方,第四環誤差值,假設色環為"黃紫棕金"就是47*10±5%=470±5%歐姆。




再來開始進入正題跑馬燈,首先我們需要用到四顆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(起始值; 條件式 ;更新值)