// --------------------------------------------------------------------------------
/*
05 使用開關按鈕控制 LED 開關 (挑戰的答案)
[學習重點]
1. 認識開關 (Push Button Switch, Slide Switch)
2. 認識 digitalRead
[挑戰]
- 現時要長按按鈕開關 LED 才會亮,能否改成按一下按鈕開關便可以改變 LED 的狀態呢?
(提示:要加入一個新的參數 - ledState)
Created by Jason on 5 Aug 2022.
*/
// --------------------------------------------------------------------------------
int ledPin = 9; // 定義 ledPin 變數並設定適合的 Pin 號
int buttonPin = 2; // 定義接收開關狀態的 Pin 號
int buttonState; // 開關的狀態 (HIGH / LOW)
int ledState = -1; // 決定 LED 的開關狀態
void setup() {
pinMode(ledPin, OUTPUT); // 設定 ledPin 為輸出模式
pinMode(buttonPin, INPUT); // 設定 buttonPin 為輸入模式
}
void loop() {
buttonState = digitalRead(buttonPin); // 讀取開關的狀態 (LOW / HIGH)
// 當按下按鈕開關便會切換一次 ledState
if (buttonState == HIGH) {
ledState = ledState * -1; // 切換 ledState 的狀態 (-1 / +1)
// 因應 ledState 開關 LED
if (ledState > 0) {
digitalWrite(ledPin, HIGH); // ledPin 輸出高電位
} else {
digitalWrite(ledPin, LOW); // ledPin 輸出低電位
}
}
delay(100); // 延時 0.1 秒
}