Buzzer integrated, pin assignment improvements

This commit is contained in:
2025-11-30 09:56:05 +01:00
parent 830d1b53c1
commit 736c0644f2
4 changed files with 126 additions and 110 deletions

View File

@@ -59,9 +59,14 @@ bool rgb_r = false;
bool rgb_g = false;
bool rgb_b = false;
char destination = 'A'; // A | B | C
char destination = 'A'; // A | B | C
uint8_t led_brightness = 128; // analog pin: 0 .. 255
uint8_t rgp_brightness = 128;
uint buzzerpower = 50; // TBD make use of this
SHT31 sht(SHT31_ADDRESS);
bool sht_available = false;
int nodeid; // NMEA2000 id on bus
Nmea2kTwai &NMEA2000=*(new Nmea2kTwai(CAN_TX, CAN_RX, CAN_RECOVERY_PERIOD));
@@ -110,8 +115,15 @@ void wifi_init_softap()
}
*/
void setup() {
Serial.begin(115200);
delay(500);
Serial.println("Starting...");
ESP_LOGI(TAG, "Test logging: %d", 100);
nodeid = N2K_DEFAULT_NODEID;
Serial.print("N2K default node id=");
Serial.println(nodeid);
@@ -120,15 +132,7 @@ void setup() {
nodeid = preferences.getInt("LastNodeId", N2K_DEFAULT_NODEID);
preferences.end();
/*
// Connect as client to existing network
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP()); */
// Setup webserver
WiFi.persistent(false);
WiFi.mode(WIFI_MODE_AP);
@@ -154,7 +158,7 @@ void setup() {
}
server.begin();
// NMEA2000 configuration
NMEA2000.SetProductInformation("00000001", // Manufacturer's Model serial code
74, // Manufacturer's product code
"OBPkeypad6/1", // Manufacturer's Model ID
@@ -184,38 +188,51 @@ void setup() {
delay(1000);
digitalWrite(LED_USER, LOW);
// destination leds
pinMode(LED_A, OUTPUT);
digitalWrite(LED_A, HIGH);
pinMode(LED_B, OUTPUT);
digitalWrite(LED_B, LOW);
pinMode(LED_C, OUTPUT);
digitalWrite(LED_C, LOW);
// Buzzer
ledcSetup(LEDC_CHANNEL, LEDC_BASE_FREQ, LEDC_TIMER_8_BIT);
ledcAttachPin(BUZZER, LEDC_CHANNEL);
// Test tone while booting
if (ledcWriteTone(BUZZER, 4000) == 0) {
Serial.println("Error setting buzzer tone");
} else {
delay(750);
ledcWriteTone(BUZZER, 0); // Buzzer off
}
// Init onbard RGB LED
// TODO
// enclosure rgb led (common anode)
pinMode(LED_RGBA, OUTPUT);
digitalWrite(LED_RGBA, HIGH);
pinMode(LED_RGBB, OUTPUT);
digitalWrite(LED_RGBB, HIGH);
pinMode(LED_RGBC, OUTPUT);
digitalWrite(LED_RGBC, HIGH);
// destination leds
pinMode(LED_A, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(LED_C, OUTPUT);
Serial.begin(115200);
delay(500);
Serial.println("Starting...");
//digitalWrite(LED_A, HIGH);
//digitalWrite(LED_B, LOW);
//digitalWrite(LED_C, LOW);
analogWrite(LED_A, led_brightness);
analogWrite(LED_B, 0);
analogWrite(LED_C, 0);
// 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!
digitalWrite(RGBLED_R, HIGH);
digitalWrite(RGBLED_G, HIGH);
digitalWrite(RGBLED_B, HIGH);
// I²C
Serial.print("SHT31_LIB_VERSION: ");
Serial.println(SHT31_LIB_VERSION);
Wire.begin(I2C_SDA, I2C_SCL);
Wire.setClock(100000);
Wire.setClock(I2C_SPEED);
uint16_t stat = sht.readStatus();
Serial.print(stat, HEX);
// stat = ffff anscheinend Fehler
// = 8010 läuft anscheinend
sht_available = (stat == 0x8010);
Serial.print(stat, HEX);
Serial.println();
}
@@ -229,10 +246,10 @@ void loop() {
button = 1;
if (rgb_r) {
rgb_r = false;
digitalWrite(LED_RGBA, HIGH);
digitalWrite(RGBLED_R, HIGH);
} else {
rgb_r = true;
digitalWrite(LED_RGBA, LOW);
digitalWrite(RGBLED_R, LOW);
}
}
if (digitalRead(KEY_2) == LOW) {
@@ -240,10 +257,10 @@ void loop() {
button += 2;
if (rgb_g) {
rgb_g = false;
digitalWrite(LED_RGBB, HIGH);
digitalWrite(RGBLED_G, HIGH);
} else {
rgb_g = true;
digitalWrite(LED_RGBB, LOW);
digitalWrite(RGBLED_G, LOW);
}
}
if (digitalRead(KEY_3) == LOW) {
@@ -251,10 +268,10 @@ void loop() {
button += 4;
if (rgb_b) {
rgb_b = false;
digitalWrite(LED_RGBC, HIGH);
digitalWrite(RGBLED_B, HIGH);
} else {
rgb_b = true;
digitalWrite(LED_RGBC, LOW);
digitalWrite(RGBLED_B, LOW);
}
}
@@ -315,7 +332,7 @@ void loop() {
delay(200);
}
// ---- PRINT NUMBER EVERY SECOND ----
// development heartbeat
if (millis() - lastPrint >= 1000) {
lastPrint = millis();
counter++;