Skip to content

Instantly share code, notes, and snippets.

@glblduh
Created November 26, 2025 13:17
Show Gist options
  • Select an option

  • Save glblduh/6622167ef7f5c6b6e7b0ddfd9cd25262 to your computer and use it in GitHub Desktop.

Select an option

Save glblduh/6622167ef7f5c6b6e7b0ddfd9cd25262 to your computer and use it in GitHub Desktop.
#define RELAY_PIN D5
#define SENSOR_PIN D1
unsigned long debounceTime = 500;
int relayState = HIGH;
int lastButtonState;
int currentButtonState;
unsigned long lastSensorActivate;
int lastSensorState;
int currentSensorState;
void toggleRelay() {
if (relayState == LOW) {
relayState = HIGH;
} else {
relayState = LOW;
}
}
void setup() {
pinMode(RELAY_PIN, OUTPUT);
pinMode(SENSOR_PIN, INPUT);
pinMode(0, INPUT_PULLUP);
}
void loop() {
lastButtonState = currentButtonState;
currentButtonState = digitalRead(0);
lastSensorState = currentSensorState;
currentSensorState = digitalRead(SENSOR_PIN);
if (lastSensorState == HIGH && currentSensorState == LOW && ((millis() - lastSensorActivate) > debounceTime)) {
lastSensorActivate = millis();
toggleRelay();
}
if (lastButtonState == HIGH && currentButtonState == LOW) {
toggleRelay();
}
digitalWrite(RELAY_PIN, relayState);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment