diff --git a/src/config.hpp b/src/config.hpp index 30ab0de..1447e17 100644 --- a/src/config.hpp +++ b/src/config.hpp @@ -10,8 +10,25 @@ #define BUTTON_SHORT_PRESS_TIME_MS 150 #define BUTTON_LONG_PRESS_TIME_MS 2000 +#define FAN1_BUTTON_PIN 4 +#define FAN2_BUTTON_PIN 5 +#define FAN3_BUTTON_PIN 6 +#define FAN4_BUTTON_PIN 7 +#define FAN5_BUTTON_PIN 8 +#define PUMP_BUTTON_PIN 9 +#define STADIUM_RIGHT_BUTTON_PIN 10 +#define STADIUM_LEFT_BUTTON_PIN 11 + #define RIGHT_LIGHT_RELAY_PIN 0 #define LEFT_LIGHT_RELAY_PIN 1 +#define FAN1_RELAY_PIN 2 +#define FAN2_RELAY_PIN 3 +#define FAN3_RELAY_PIN 4 +#define FAN4_RELAY_PIN 5 +#define FAN5_RELAY_PIN 6 +#define PUMP_RELAY_PIN 7 +#define STADIUM_RIGHT_LIGHT_RELAY_PIN 8 +#define STADIUM_LEFT_LIGHT_RELAY_PIN 9 /*********************************************** * Display Configuration * diff --git a/src/main.cpp b/src/main.cpp index 345c139..87a5c8d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -136,6 +136,21 @@ void button_init() void loop() { espmega.loop(); + + // If pump is on and all fans are off, turn off pump + // Because pump pumps water to the radiator in front of the fans + // Without the fans, no cooling effect will be achieved + if (espmega.outputs.getState(PUMP_RELAY_PIN) == HIGH) + { + if (espmega.outputs.getState(FAN1_RELAY_PIN) == LOW && + espmega.outputs.getState(FAN2_RELAY_PIN) == LOW && + espmega.outputs.getState(FAN3_RELAY_PIN) == LOW && + espmega.outputs.getState(FAN4_RELAY_PIN) == LOW && + espmega.outputs.getState(FAN5_RELAY_PIN) == LOW) + { + espmega.outputs.digitalWrite(PUMP_RELAY_PIN, LOW); + } + } } void send_stop_bytes(HardwareSerial &uart) @@ -147,7 +162,35 @@ void send_stop_bytes(HardwareSerial &uart) void handle_input_change(uint8_t pin, bool state) { - // Do nothing + switch (pin) + { + case FAN1_BUTTON_PIN: + espmega.outputs.digitalWrite(FAN1_RELAY_PIN, !espmega.outputs.getState(FAN1_RELAY_PIN)); + break; + case FAN2_BUTTON_PIN: + espmega.outputs.digitalWrite(FAN2_RELAY_PIN, !espmega.outputs.getState(FAN2_RELAY_PIN)); + break; + case FAN3_BUTTON_PIN: + espmega.outputs.digitalWrite(FAN3_RELAY_PIN, !espmega.outputs.getState(FAN3_RELAY_PIN)); + break; + case FAN4_BUTTON_PIN: + espmega.outputs.digitalWrite(FAN4_RELAY_PIN, !espmega.outputs.getState(FAN4_RELAY_PIN)); + break; + case FAN5_BUTTON_PIN: + espmega.outputs.digitalWrite(FAN5_RELAY_PIN, !espmega.outputs.getState(FAN5_RELAY_PIN)); + break; + case PUMP_BUTTON_PIN: + espmega.outputs.digitalWrite(PUMP_RELAY_PIN, !espmega.outputs.getState(FAN5_RELAY_PIN)); + break; + case STADIUM_RIGHT_BUTTON_PIN: + espmega.outputs.digitalWrite(STADIUM_RIGHT_LIGHT_RELAY_PIN, !espmega.outputs.getState(STADIUM_RIGHT_LIGHT_RELAY_PIN)); + break; + case STADIUM_LEFT_BUTTON_PIN: + espmega.outputs.digitalWrite(STADIUM_LEFT_LIGHT_RELAY_PIN, !espmega.outputs.getState(STADIUM_LEFT_LIGHT_RELAY_PIN)); + break; + default: + break; + } } void handle_mqtt_message(char *topic, char *payload)