接線
- 把 LED 接到 pin13,長腳(陽極)接到 pin13,短腳(陰極)接到 GND
- PushButton 一支腳接到 +5V
- pin2 接到 Pushbutton 的另一支腳,同一支腳位接一個 10K 電阻連到 GND
電路圖
程式碼
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略過開關彈跳時間
}
}
留言列表