TOP
 接線
  1. 把 LED 接到 pin13,長腳(陽極)接到 pin13,短腳(陰極)接到 GND
  2. PushButton 一支腳接到 +5V
  3. pin2 接到 Pushbutton 的另一支腳,同一支腳位接一個 10K 電阻連到 GNDimage 
電路圖

image 

程式碼

const int buttonPin = 2; // 按鈕接腳宣告

 

const int ledPin = 13; // LED接腳宣告

int buttonState = 0; // 宣告LED狀態,初始狀態預設不亮

 

void setup() {

 

pinMode(ledPin, OUTPUT);    //設定LED為輸出

 

pinMode(buttonPin, INPUT);  //設定按鈕為輸入

 

}

 

void loop(){

 

buttonState = digitalRead(buttonPin);  //讀取按鈕狀態

 

if (buttonState == HIGH) {  //High代表按鈕未按

 

digitalWrite(ledPin, HIGH);   //LED不亮 (LED為低態動作)

 

}

 

else {

 

digitalWrite(ledPin, LOW);    //LED亮

 

}

 

}

---------延伸思考----------------------------------------

當按下開關瞬間改變LED狀態

   

 

程式說明:

// 常數宣告,宣告 I/O 腳號
const int buttonPin = 2; // 宣告按鍵為 D2 的常數
const int ledPin = 10; // 宣告 LED 為 D10 的常數

// 變數宣告,執行期間數值會改變
boolean buttonState; // 宣告讀取按鍵狀態的變數
boolean ledState = HIGH; // 宣告LED的狀態,一開始預設為不亮

void setup() {
pinMode(ledPin, OUTPUT); // 初始化 LED pin 為輸出
digitalWrite(ledPin, ledState); // 輸出LED狀態至LED,預設為不亮
pinMode(buttonPin, INPUT); // 初始化 按鍵開關 pin 為輸入
}

void loop(){
buttonState = digitalRead(buttonPin); // 讀取按鍵開關的狀態

// 檢查按鍵開關是否被按下,若是,其狀態值為 LOW
if (buttonState == LOW) {
ledState=!ledState; // 將 ledState 取補數,即High變Low, Low變High
digitalWrite(ledPin, ledState); // 將 ledState 的值直接輸出至LED
delay(20); // 延遲20ms略過開關彈跳時間
while (1) { // 永久迴圈(等待按鍵放開)
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) break; // 若按鍵放開則離開 while 迴圈
}
delay(20); // 延遲20ms略過開關彈跳時間
}
}

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 choufifi 的頭像
    choufifi

    choufifi教學網

    choufifi 發表在 痞客邦 留言(3) 人氣()