#include <blinker.h>
#include <mapper.h>
#define PCPSU_READ_PIN A0
#define pump_READ_PIN A1
#define lights_READ_PIN A2
#define LEDPSU0 2
#define LEDPSU1 3
#define LEDPUMP0 4
#define LEDPUMP1 5
#define LEDLIGHTS0 6
#define LEDLIGHTS1 7
#define pumpFail 8
#define CUTOFF_V 4
blinker pumpOffLED(LEDPUMP0);
mapper vMapper(0, 1023, 0, 5);
bool PCSUState;
bool pumpState;
bool lightsState;
bool pumpFailState;
int timeDelay;
void setup() {
PCSUState = false;
pumpState = false;
lightsState = false;
pumpFailState = false;
timeDelay = 0;
pinMode(LEDPSU0, OUTPUT);
pinMode(LEDPSU1, OUTPUT);
pumpOffLED.setOnOff(false);
pumpOffLED.setPeriod(400);
pinMode(LEDPUMP1, OUTPUT);
pinMode(LEDLIGHTS0, OUTPUT);
pinMode(LEDLIGHTS1, OUTPUT);
pinMode(pumpFail, OUTPUT);
}
void readVolts(void) {
float rawV;
rawV = vMapper.map(analogRead(PCPSU_READ_PIN));
PCSUState = rawV > CUTOFF_V;
rawV = vMapper.map(analogRead(pump_READ_PIN));
pumpState = rawV > CUTOFF_V;
rawV = vMapper.map(analogRead(lights_READ_PIN));
lightsState = rawV > CUTOFF_V;
}
void setLEDs(void) {
digitalWrite(pumpFail, HIGH);
digitalWrite(LEDPSU1, PCSUState);
digitalWrite(LEDPSU0, !PCSUState);
digitalWrite(LEDLIGHTS1, lightsState);
digitalWrite(LEDLIGHTS0, !lightsState);
digitalWrite(LEDPUMP1, pumpState);
if (pumpState) {
pumpOffLED.setOnOff(false);
timeDelay = 0;
} else {
if (PCSUState) {
pumpOffLED.setPercent(20);
timeDelay++;
} else {
pumpOffLED.setPercent(100);
}
pumpOffLED.setOnOff(true);
if (timeDelay > 10000) {
digitalWrite(pumpFail, LOW);
delay(200);
timeDelay = 0;
}
}
}
void loop() {
idle();
readVolts();
setLEDs();
}