Arduino小實驗 - 按鈕霹靂燈

功能展示:


此實驗,主要是練習LED與按鈕的控制,

功能是:
             若沒按下按鈕時,LED燈會輪流暗掉,從最右邊的黃燈到最左邊的綠燈,

         
             若按下靠近黃燈的按鈕時,就只執行黃燈的部分,
          
           若按下靠近綠燈的按鈕時,就只執行綠燈的部分, 




實驗材料:

Arduino Uno控制板

麵包板

LED  *  8  (4個綠  4個黃)

按鈕兩顆

接LED 電阻 *8  (220歐姆~1k歐姆之間)

接按鈕 電阻 *2  10K歐姆

麵包板接線14條




麵包板接線:




此圖使用123d練習網站製作,需要注意的是,燈泡+腳(長腳)要接+ , -腳(短腳)要接-,
還有Ardunio的第0、1腳位勿接,會影響程式的寫入。








程式碼


const int LED_G = 5;
const int LED_Y = 5;

int Button_G = A0;
int Button_Y = A1;

int LED_G_GO[]={8,9,10,11,12};
int LED_Y_GO[]={3,4,5,6,7};

//以上初始值設定

void setup() {
  Serial.begin(9600);//初始化串口
  pinMode(Button_G,INPUT);  //測試當下綠按鈕是否按下
  pinMode(Button_Y,INPUT);  //測試當下黃按鈕是否按下

  for(int i = 0 ; i < LED_Y ; i++)  //告知接黃led的腳位都為輸出
  {
    pinMode(LED_Y_GO[i],OUTPUT);
  }
  for(int i = 0 ; i < LED_G ; i++)  //告知接綠led的腳位都為輸出
  {
    pinMode(LED_G_GO[i],OUTPUT);
  }


}

void loop() {
  int Button_G_GO = digitalRead(Button_G);    //取得綠按鈕的狀態
  int Button_Y_GO = digitalRead(Button_Y);    //取得黃按鈕的狀態

  Serial.println(Button_G_GO);  //顯示綠按鈕的狀態
  Serial.println(Button_Y_GO);  //顯示黃按鈕的狀態

    if(Button_G_GO == HIGH && Button_Y_GO == LOW)
     //當綠按鈕按下,黃按鈕沒按下時,執行閃綠燈
     {
     for(int i = 0 ; i<LED_Y; i++)
     {
      digitalWrite(LED_Y_GO[i],LOW);
     }
   
     for(int i = 0 ; i<LED_G; i++)
     {
      digitalWrite(LED_G_GO[i],HIGH);
     }

     for(int i = 0 ; i<LED_G; i++)
     {
      digitalWrite(LED_G_GO[i],LOW);
      delay(200);
      digitalWrite(LED_G_GO[i],HIGH);
     }
    }

    if(Button_G_GO == LOW && Button_Y_GO == HIGH)
     //當綠按鈕沒按下,黃按鈕按下時,執行閃黃燈
    {
   
     for(int i = 0 ; i<LED_G; i++)
     {
      digitalWrite(LED_G_GO[i],LOW);
     }
 
     for(int i = 0 ; i<LED_Y; i++)
     {
      digitalWrite(LED_Y_GO[i],HIGH);
     }
     for(int i = 0 ; i<LED_Y; i++)
     {
      digitalWrite(LED_Y_GO[i],LOW);
      delay(200);
      digitalWrite(LED_Y_GO[i],HIGH);
     }
 
    }

     if(Button_G_GO == LOW && Button_Y_GO == LOW)
     //當按鈕都沒按下時,執行閃黃、綠燈
    {
     for(int i = 0 ; i<LED_Y; i++)
     {
      digitalWrite(LED_Y_GO[i],HIGH);
     }
   
     for(int i = 0 ; i<LED_G; i++)
     {
      digitalWrite(LED_G_GO[i],HIGH);
     }
   
     for(int i = 0 ; i<LED_Y; i++)
     {
      digitalWrite(LED_Y_GO[i],LOW);
      delay(200);
      digitalWrite(LED_Y_GO[i],HIGH);
     }
   
     for(int i = 0 ; i<LED_G; i++)
     {
      digitalWrite(LED_G_GO[i],LOW);
      delay(200);
      digitalWrite(LED_G_GO[i],HIGH);
     }

    }
}






附錄:   


程式碼下載
https://drive.google.com/file/d/0B6ny8fOEPdSPcWEwTTcwMmR3akk/view?usp=sharing

電阻值計算機
http://www.digikey.tw/zh/resources/conversion-calculators/conversion-calculator-resistor-color-code-5-band

123d-Ardunio練習網站
https://123d.circuits.io/





留言

這個網誌中的熱門文章

SQL語法整理