diff --git a/README b/README index 23e72b8..28be06b 100644 --- a/README +++ b/README @@ -118,8 +118,8 @@ ggf. ein Epaper angeschlossen werden. CAN Pin Remarks ------ ---------- ---------------------- - RX D9 GPIO18 - TX D10 GPIO21 + TX D9 GPIO18 + RX D10 GPIO21 BUZZER TBD diff --git a/include/main.h b/include/main.h index ad8448b..c9cb90b 100644 --- a/include/main.h +++ b/include/main.h @@ -23,16 +23,16 @@ #define LEDC_BASE_FREQ 5000 // LEDS -#define LED_A GPIO_NUM_1 // A0 +#define LED_A GPIO_NUM_3 // A2 #define LED_B GPIO_NUM_2 // A1 -#define LED_C GPIO_NUM_3 // A2 -#define RGBLED_R GPIO_NUM_4 // A3 red +#define LED_C GPIO_NUM_1 // A0 +#define RGBLED_R GPIO_NUM_14 // A7 red #define RGBLED_G GPIO_NUM_13 // A6 green -#define RGBLED_B GPIO_NUM_14 // A7 blue +#define RGBLED_B GPIO_NUM_4 // A3 blue #define LED_USER GPIO_NUM_48 // internal red user led -#define LED_IR GPIO_NUM_46 // intername rgb led on strapping pins +#define LED_IR GPIO_NUM_46 // internal rgb led on strapping pins #define LED_IG GPIO_NUM_0 // ! B1 <-> Buzzer #define LED_IB GPIO_NUM_45 diff --git a/src/main.cpp b/src/main.cpp index 7cfb86a..75c4a29 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -140,12 +140,100 @@ String uptime_with_unit() { return String(uptime) + " " + uptime_unit; } +void ledtest() { + // all led one after another to test functionality + + Serial.print("LED test started"); + + // Onbard RGB LED, inverted mode + digitalWrite(LED_IR, LOW); + digitalWrite(LED_IG, HIGH); + digitalWrite(LED_IB, HIGH); + delay(500); + digitalWrite(LED_IR, HIGH); + digitalWrite(LED_IG, LOW); + delay(500); + digitalWrite(LED_IG, HIGH); + digitalWrite(LED_IB, LOW); + delay(500); + digitalWrite(LED_IB, HIGH); + + // destination leds + analogWrite(LED_A, 0); + delay(250); + // test every led + analogWrite(LED_A, led_brightness); + analogWrite(LED_B, 0); + analogWrite(LED_C, 0); + delay(500); + analogWrite(LED_A, 0); + analogWrite(LED_B, led_brightness); + delay(500); + analogWrite(LED_B, 0); + analogWrite(LED_C, led_brightness); + delay(500); + analogWrite(LED_C, 0); + // select dst A finally + analogWrite(LED_A, led_brightness); + delay(500); + + // enclosure rgb led (common cathode, so low is off) + analogWrite(RGBLED_R, rgb_brightness); + analogWrite(RGBLED_G, 0); + analogWrite(RGBLED_B, 0); + delay(700); + analogWrite(RGBLED_R, 0); + analogWrite(RGBLED_G, rgb_brightness); + delay(700); + analogWrite(RGBLED_G, 0); + analogWrite(RGBLED_B, rgb_brightness); + delay(700); + analogWrite(RGBLED_B, 0); + + Serial.print("LED test finished"); + +} + void setup() { Serial.begin(115200); // while (!Serial) delay(10); delay(500); + // Configure I/O pins + + // internal user led (red) + pinMode(LED_USER, OUTPUT); + + // Init onbard RGB led + pinMode(LED_IR, OUTPUT); + pinMode(LED_IG, OUTPUT); + pinMode(LED_IB, OUTPUT); + + // destination leds + pinMode(LED_A, OUTPUT); + pinMode(LED_B, OUTPUT); + pinMode(LED_C, OUTPUT); + + // enclosure RGB led + pinMode(RGBLED_R, OUTPUT); + pinMode(RGBLED_G, OUTPUT); + pinMode(RGBLED_B, OUTPUT); + + // Buttons active-low, internal resistor + pinMode(KEY_1, INPUT_PULLUP); + pinMode(KEY_2, INPUT_PULLUP); + pinMode(KEY_3, INPUT_PULLUP); + pinMode(KEY_4, INPUT_PULLUP); + pinMode(KEY_5, INPUT_PULLUP); + pinMode(KEY_6, INPUT_PULLUP); + pinMode(KEY_DST, INPUT_PULLUP); + + // Early signal system activity + analogWrite(RGBLED_R, 255); + analogWrite(RGBLED_G, 0); + analogWrite(RGBLED_B, 0); + // Arduino ESP32 logging esp_log_level_set("*", ESP_LOG_INFO); esp_log_level_set("default", ESP_LOG_INFO); @@ -271,17 +359,8 @@ void setup() { 2046 ); - // Buttons active-low, internal resistor - pinMode(KEY_1, INPUT_PULLUP); - pinMode(KEY_2, INPUT_PULLUP); - pinMode(KEY_3, INPUT_PULLUP); - pinMode(KEY_4, INPUT_PULLUP); - pinMode(KEY_5, INPUT_PULLUP); - pinMode(KEY_6, INPUT_PULLUP); - pinMode(KEY_DST, INPUT_PULLUP); // internal user led (red) - pinMode(LED_USER, OUTPUT); digitalWrite(LED_USER, HIGH); delay(1000); digitalWrite(LED_USER, LOW); @@ -290,7 +369,7 @@ void setup() { ledcSetup(LEDC_CHANNEL, LEDC_BASE_FREQ, LEDC_TIMER_8_BIT); ledcAttachPin(BUZZER, LEDC_CHANNEL); // Test tone while booting - if (ledcWriteTone(LEDC_CHANNEL, 4000) == 0) { + if (ledcWriteTone(LEDC_CHANNEL, 2300) == 0) { Serial.println("Error setting buzzer tone"); } else { delay(750); @@ -298,62 +377,9 @@ void setup() { } // Startup sequence: test all led and short beep buzzer - - // Init onbard RGB LED - // inverted mode: - pinMode(LED_IR, OUTPUT); - pinMode(LED_IG, OUTPUT); - pinMode(LED_IB, OUTPUT); - digitalWrite(LED_IR, LOW); - digitalWrite(LED_IG, HIGH); - digitalWrite(LED_IB, HIGH); + analogWrite(RGBLED_R, 0); // boot status off delay(500); - digitalWrite(LED_IR, HIGH); - digitalWrite(LED_IG, LOW); - delay(500); - digitalWrite(LED_IG, HIGH); - digitalWrite(LED_IB, LOW); - delay(500); - digitalWrite(LED_IB, HIGH); - - // destination leds - pinMode(LED_A, OUTPUT); - pinMode(LED_B, OUTPUT); - pinMode(LED_C, OUTPUT); - analogWrite(LED_A, 0); - delay(250); - // test every led - analogWrite(LED_A, led_brightness); - analogWrite(LED_B, 0); - analogWrite(LED_C, 0); - delay(500); - analogWrite(LED_A, 0); - analogWrite(LED_B, led_brightness); - delay(500); - analogWrite(LED_B, 0); - analogWrite(LED_C, led_brightness); - delay(500); - analogWrite(LED_C, 0); - // select dst A finally - analogWrite(LED_A, led_brightness); - delay(500); - - // enclosure rgb led - pinMode(RGBLED_R, OUTPUT); - pinMode(RGBLED_G, OUTPUT); - pinMode(RGBLED_B, OUTPUT); - // common anode so we need high here to switch off! - analogWrite(RGBLED_R, 255 - rgb_brightness); - analogWrite(RGBLED_G, 255); - analogWrite(RGBLED_B, 255); - delay(500); - analogWrite(RGBLED_R, 255); - analogWrite(RGBLED_G, 255 - rgb_brightness); - delay(500); - analogWrite(RGBLED_G, 255); - analogWrite(RGBLED_B, 255 - rgb_brightness); - delay(500); - analogWrite(RGBLED_B, 255); + ledtest(); // I²C Serial.print("SHT31_LIB_VERSION: ");