按鈕結合LED跑馬燈

上一篇介紹按鈕控制LED燈的方法現在我們要結合之前所學的LED跑馬燈(二)來做一個小實驗,就是按鈕按下時LED燈不亮,放開後繼續從上次亮完的燈泡繼續,也就是用按鈕來達到暫停的效果。材料這邊就不介紹了。

電路圖


程式https://drive.google.com/file/d/0B-z-UZB41PNbVzFpdlQzdkpSSms/view?usp=sharing
========================================================================

byte LED [ ] ={2,4,6,8};                //宣告LED陣列
byte sum = sizeof(LED);              //陣列內空間總數
int buttonstatus =0;                      //宣告按鈕變數
void setup()                                  //在setup裡面的程式只會執行一次 
{  
  for (byte i=0 ; i<sum ; i++)         //sum=4
  {pinMode(LED[i], OUTPUT); }   //將D2,D4,D6,D8設定為輸出
  pinMode(7, INPUT);                  //將D7設定為輸入模式
}                                  

void loop()                                 // 在LOOP裡面的程式會一直重複執行
{   


for(int i=0; i<sum ;i++)
      {      
       buttonstatus = digitalRead(7);                   //讀取按鈕的電位(高電位為1,低電位為0) 
       if(buttonstatus == 1 )                                 //如果按鈕狀態為高電位(1)
             {   do                                                    //執行
                     {  buttonstatus = digitalRead(7);    //讀取按鈕的電位(高電位為1,低電位為0) 
                        delay(1000);                              //延遲1秒
                     }while(buttonstatus == 1);            //當按鈕狀態為高電位(1)時重複此迴圈                     
              }       
        digitalWrite(LED[i], HIGH);   //將LED[i]寫入(設定)為高電位(1)  
        delay(500);                             //延遲500毫秒  
        digitalWrite(LED[i], LOW);    //將LED[i]寫入(設定)為低電位(0)
        delay(500);                             //延遲500毫秒
      }
  

}


========================================================================

do{          }while(條件式成立時重複此迴圈,不成立時跳出);