const int buttonPin = 7;
const int relayPin = 8;
int buttonState = 0;
int lastButtonState = 1; // Stores PREVIOUS button state
int relayState = 0; // 0 = OFF, 1 = ON - for latching
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // Relay OFF at startup
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
// Only act on the MOMENT button is first pressed
// Not while it's held down
if (buttonState == LOW && lastButtonState == HIGH) {
if (relayState == 0) {
// Currently OFF → turn ON
digitalWrite(relayPin, LOW);
relayState = 1;
Serial.println("Status: RELAY ON — LED ON");
} else {
// Currently ON → turn OFF
digitalWrite(relayPin, HIGH);
relayState = 0;
Serial.println("Status: RELAY OFF — LED OFF");
}
}
lastButtonState = buttonState; // Remember this state for next loop
Serial.print("Button: ");
Serial.print(buttonState);
Serial.print(" | Relay State: ");
Serial.println(relayState);
delay(50); // Shorter delay for responsive debouncing
}