Remote power/reset button
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

94 lines
2.0 KiB

#include <Arduino.h>
#include "connect.h"
#define POWER_BUTTON_PIN 2
#define RESET_BUTTON_PIN 10
#define POWER_LED_PIN 1
#define RESET_LED_PIN 3
#define POWER_GATE_PIN 6
#define RESET_GATE_PIN 7
int previousPowerButtonState = HIGH;
int previousResetButtonState = HIGH;
bool powerButtonPressed = false;
bool resetButtonPressed = false;
void processButtons();
void setPowerPin(bool enable);
void setResetPin(bool enable);
void setup()
{
Serial.begin(9600);
Serial.setDebugOutput(true);
pinMode(POWER_BUTTON_PIN, INPUT_PULLUP);
pinMode(RESET_BUTTON_PIN, INPUT_PULLUP);
pinMode(POWER_GATE_PIN, OUTPUT);
pinMode(POWER_LED_PIN, OUTPUT);
pinMode(RESET_GATE_PIN, OUTPUT);
pinMode(RESET_LED_PIN, OUTPUT);
delay(3000);
Serial.println("Server booted!");
wifiSetup();
}
void loop()
{
delay(20); // used for button debounce
int powerButtonState = digitalRead(POWER_BUTTON_PIN);
int resetButtonState = digitalRead(RESET_BUTTON_PIN);
// Unsupported usecase
if (powerButtonState == LOW && resetButtonState == LOW) {
previousPowerButtonState = HIGH;
previousResetButtonState = HIGH;
powerButtonPressed = false;
resetButtonPressed = false;
return;
}
powerButtonPressed = powerButtonState == LOW;
resetButtonPressed = resetButtonState == LOW;
processButtons();
}
// -----------------------------------------
void processButtons()
{
if ((powerRemotePressed && resetRemotePressed)
|| (powerButtonPressed && resetButtonPressed)) {
Serial.println("Double input..");
setPowerPin(false);
setResetPin(false);
return;
}
setPowerPin(powerRemotePressed || powerButtonPressed);
setResetPin(resetRemotePressed || resetButtonPressed);
}
void setPowerPin(bool enable)
{
digitalWrite(POWER_GATE_PIN, (enable) ? HIGH : LOW);
digitalWrite(POWER_LED_PIN, (enable) ? HIGH : LOW);
}
void setResetPin(bool enable)
{
digitalWrite(RESET_GATE_PIN, (enable) ? HIGH : LOW);
digitalWrite(RESET_LED_PIN, (enable) ? HIGH : LOW);
}
// connect + to drain
// connect - to source