#define BUTTON_PIN 5 // Button connected to GPIO 5
#define RELAY_PIN 18 // Relay IN pin connected to GPIO 18
bool relayState = false;
bool lastButtonState = HIGH;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // Start with relay OFF (HIGH = OFF for active LOW relay)
Serial.begin(115200);
Serial.println("System started - Relay OFF");
}
void loop() {
bool buttonState = digitalRead(BUTTON_PIN);
// Toggle relay on button press (button is active LOW)
if (buttonState == LOW && lastButtonState == HIGH) {
relayState = !relayState;
// Fixed: Inverted logic for active LOW relay module
digitalWrite(RELAY_PIN, relayState ? LOW : HIGH);
// Debug output
Serial.print("Button pressed! Relay is now: ");
Serial.println(relayState ? "ON" : "OFF");
Serial.print("Relay pin set to: ");
Serial.println(relayState ? "LOW" : "HIGH");
delay(200); // debounce delay
}
lastButtonState = buttonState;
}