This commit is contained in:
@@ -7,93 +7,29 @@
|
||||
extern ActiveErrors active_errors;
|
||||
extern WaterData water_data;
|
||||
|
||||
void display_percentage(float percentage)
|
||||
{
|
||||
digitalWrite(LED_RED, 0);
|
||||
|
||||
if (percentage > 0) {
|
||||
digitalWrite(LED_1, 1);
|
||||
} else {
|
||||
digitalWrite(LED_1, 0);
|
||||
}
|
||||
if (percentage > 20) {
|
||||
digitalWrite(LED_2, 1);
|
||||
} else {
|
||||
digitalWrite(LED_2, 0);
|
||||
}
|
||||
if (percentage > 40) {
|
||||
digitalWrite(LED_3, 1);
|
||||
} else {
|
||||
digitalWrite(LED_3, 0);
|
||||
}
|
||||
if (percentage > 60) {
|
||||
digitalWrite(LED_4, 1);
|
||||
} else {
|
||||
digitalWrite(LED_4, 0);
|
||||
}
|
||||
if (percentage > 80) {
|
||||
digitalWrite(LED_5, 1);
|
||||
} else {
|
||||
digitalWrite(LED_5, 0);
|
||||
}
|
||||
|
||||
if (percentage > 10) {
|
||||
delay(3000);
|
||||
} else if (percentage > 0) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
digitalWrite(LED_1, 1);
|
||||
delay(500);
|
||||
digitalWrite(LED_1, 0);
|
||||
delay(500);
|
||||
}
|
||||
} else if (percentage <= 0) {
|
||||
for (int i = 0; i < 15; i++) {
|
||||
digitalWrite(LED_1, 1);
|
||||
delay(100);
|
||||
digitalWrite(LED_1, 0);
|
||||
delay(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void display_error_code(byte err_code)
|
||||
{
|
||||
digitalWrite(LED_RED, 1);
|
||||
digitalWrite(LED_1, bitRead(err_code, 0));
|
||||
digitalWrite(LED_2, bitRead(err_code, 1));
|
||||
digitalWrite(LED_3, bitRead(err_code, 2));
|
||||
digitalWrite(LED_4, bitRead(err_code, 3));
|
||||
digitalWrite(LED_5, bitRead(err_code, 4));
|
||||
}
|
||||
|
||||
void display_task(void* parameter)
|
||||
{
|
||||
while (true) {
|
||||
if (!is_error(active_errors)) {
|
||||
// We have no error, refresh status display and wait half a second
|
||||
display_percentage(water_data.percentage);
|
||||
ledcWrite(LED_GREEN, 255);
|
||||
ledcWrite(LED_RED, 0);
|
||||
} else {
|
||||
// We have an error, display error code for 3 seconds and then water level for 3 seconds
|
||||
if (active_errors.voltage_low) {
|
||||
display_error_code(1);
|
||||
LOG(WARNING, "Sensor Error - Voltage low");
|
||||
delay(3000);
|
||||
} else if (active_errors.voltage_high) {
|
||||
display_error_code(2);
|
||||
LOG(WARNING, "Sensor Error - Voltage High");
|
||||
delay(3000);
|
||||
} else if (active_errors.current_low) {
|
||||
display_error_code(3);
|
||||
LOG(WARNING, "Sensor Error - Current low");
|
||||
delay(3000);
|
||||
} else if (active_errors.current_high) {
|
||||
display_error_code(4);
|
||||
LOG(WARNING, "Sensor Error - Current high");
|
||||
delay(3000);
|
||||
} else {
|
||||
delay(3000);
|
||||
}
|
||||
display_percentage(water_data.percentage);
|
||||
ledcWrite(LED_RED, LED_RED_HIGH);
|
||||
ledcWrite(LED_GREEN, 0);
|
||||
}
|
||||
delay(250);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Setup pin modes etc.
|
||||
void led_setup() {
|
||||
pinMode(LED_RED, OUTPUT);
|
||||
pinMode(LED_GREEN, OUTPUT);
|
||||
|
||||
ledcAttach(LED_RED, LED_PWM_FREQUENCY, LED_PWM_RESOLUTION);
|
||||
ledcAttach(LED_GREEN, LED_PWM_FREQUENCY, LED_PWM_RESOLUTION);
|
||||
ledcWrite(LED_RED, LED_RED_HIGH);
|
||||
ledcWrite(LED_GREEN, 255);
|
||||
}
|
||||
Reference in New Issue
Block a user