Adaptions for prototype PCB: LED testing

This commit is contained in:
2025-12-26 07:49:03 +01:00
parent 2b421d69a7
commit 12687b17ab
3 changed files with 98 additions and 72 deletions

4
README
View File

@@ -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

View File

@@ -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

View File

@@ -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: ");