Updates
Some checks failed
Test compiling project / test (push) Failing after 0s

This commit is contained in:
2025-11-02 12:50:10 +01:00
parent f0e237cd71
commit 27ebbe22ac
14 changed files with 221 additions and 276 deletions

View File

@@ -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);
}