#define buttonPin 17
#define ledPin 21
bool ledState = LOW;
bool lastButtonState = HIGH; // HIGH because of INPUT_PULLUP
bool currentButtonState;
void setup() {
Serial.begin(115200);
pinMode(buttonPin, INPUT_PULLUP); // Button to GND
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState); // LED initially OFF
Serial.println("System Initialized");
}
void loop() {
currentButtonState = digitalRead(buttonPin);
// Toggle only when button goes from HIGH -> LOW
if (lastButtonState == HIGH && currentButtonState == LOW) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
Serial.println(ledState ? "LED ON" : "LED OFF");
delay(200); // Debounce delay
}
lastButtonState = currentButtonState;
}