const int LED_PIN = 10; // LED 接腳
const int BUTTON_PIN = 2; // 按鈕接腳
const unsigned long delayTime = 5000; // 5 秒延遲
bool buttonPressed = false;
unsigned long pressTime = 0;
void setup() {
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
pinMode(BUTTON_PIN, INPUT_PULLUP); // 使用內部上拉電阻
}
void loop() {
// 讀取按鈕狀態(按下為 LOW)
if (!buttonPressed && digitalRead(BUTTON_PIN) == LOW) {
// 按下按鈕的瞬間
buttonPressed = true;
pressTime = millis(); // 記錄當下時間
}
// 若按鈕已按過,且過了延遲時間,就亮燈
if (buttonPressed && (millis() - pressTime >= delayTime)) {
digitalWrite(LED_PIN, HIGH); // 開燈
}
// 重新按下就重設燈和時間
if (digitalRead(BUTTON_PIN) == LOW && (millis() - pressTime > 200)) {
digitalWrite(LED_PIN, LOW); // 關燈
buttonPressed = true;
pressTime = millis(); // 重設時間
}
}