#define LED_PIN 13
#define BUTTON_PIN 2
#define BTN_DEBOUNCE_DELAY 200
bool btnState = false;
volatile unsigned int ledDuration = 1000;
volatile unsigned long lastDebounceTime = 0;
unsigned long lastLEDBlink = 0;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), toggleLEDTime, FALLING);
Serial.begin(115200);
}
void loop() {
unsigned long currentTime = millis();
if (currentTime - lastLEDBlink >= ledDuration) {
btnState = !btnState;
lastLEDBlink = currentTime;
digitalWrite(LED_PIN, btnState ? LOW : HIGH);
}
}
void toggleLEDTime() {
unsigned long currentTime = millis();
if (currentTime - lastDebounceTime >= BTN_DEBOUNCE_DELAY) {
ledDuration *= 10;
if (ledDuration%10 != 0) ledDuration = 100;
Serial.print("LED duration set to ");
Serial.println(ledDuration);
lastDebounceTime = currentTime;
}
}