From d9c3c73b0002ad5567a228acce08926bc669cace Mon Sep 17 00:00:00 2001
From: Benjamin Koch <bbbsnowball@gmail.com>
Date: Sat, 13 May 2023 01:15:44 +0200
Subject: [PATCH] don't hang if I2C is not available

... which is rather important when JLC has made solder bridges on
the TMP102 for 20% of the boards...
---
 firmware/test1/heizung-test1/src/main.cpp | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/firmware/test1/heizung-test1/src/main.cpp b/firmware/test1/heizung-test1/src/main.cpp
index 39b2743..6e524f6 100644
--- a/firmware/test1/heizung-test1/src/main.cpp
+++ b/firmware/test1/heizung-test1/src/main.cpp
@@ -58,6 +58,13 @@ Adafruit_NeoPixel pixelsDigout1(2, DIGOUT1, NEO_GRB + NEO_KHZ800);
 void setup() {
   rp2040.enableDoubleResetBootloader();
 
+  Serial.begin(9600);  // USB serial, baudrate is ignored
+  if (0) {
+    while (!Serial)
+      ;
+    Serial.println("a1");
+  }
+
   pinMode(DRIVE1, OUTPUT); digitalWrite(DRIVE1, LOW);
   pinMode(DRIVE2, OUTPUT); digitalWrite(DRIVE2, LOW);
   pinMode(WS2812_DISPLAY, OUTPUT);
@@ -83,7 +90,6 @@ void setup() {
   Wire.setSDA(I2C_OLED_SDA);  // I2C0
   Wire.setSCL(I2C_OLED_SCL);
 
-  Serial.begin(9600);  // USB serial, baudrate is ignored
   Serial1.begin(115200);
   Wire.begin();
   Wire.setClock(100000);
@@ -266,7 +272,7 @@ void loop() {
   }
   prevButton4 = buttons[3];
 
-  if (rp2040.getCycleCount64() > 2 * 133*1000*1000 && displayMode == 0) {
+  if (rp2040.getCycleCount64() > 2 * 133*1000*1000 && displayMode == 0 && hasDisplay) {
     if (displayModePrev != 0) {
       display.fillRect(67, 0, 128-67, 64, SSD1306_BLACK);
       display.drawBitmap(0, 0, logo_data, logo_width, logo_height, SSD1306_WHITE);
@@ -314,7 +320,7 @@ void loop() {
     display.println();
 
     display.display();
-  } else if (displayMode >= 1 && displayMode <= 3) {
+  } else if (displayMode >= 1 && displayMode <= 3 && hasDisplay) {
     int first = (displayMode-1) * 12, last = first + 11;
     display.fillRect(0, 0, 128, 64, SSD1306_BLACK);
     display.setTextSize(1);
@@ -338,7 +344,7 @@ void loop() {
         display.write("  ");
     }
     display.display();
-  } else if (displayMode == 4) {
+  } else if (displayMode == 4 && hasDisplay) {
     display.fillRect(0, 0, 128, 64, SSD1306_BLACK);
     display.setTextSize(1);
     display.setTextColor(SSD1306_WHITE);
@@ -377,7 +383,7 @@ void loop() {
       display.drawFastHLine(0, y++, v/16, SSD1306_WHITE);
     }
     display.display();
-  } else if (displayMode == 5) {
+  } else if (displayMode == 5 && hasDisplay) {
     display.fillRect(0, 0, 128, 64, SSD1306_BLACK);
     display.setTextSize(1);
     display.setTextColor(SSD1306_WHITE);
@@ -442,7 +448,7 @@ void loop() {
     display.println(v5);
 
     display.display();
-  } else if (displayMode == 6) {
+  } else if (displayMode == 6 && hasDisplay) {
     if (displayModePrev != 6) {
       display.fillRect(0, 0, 128, 64, SSD1306_BLACK);
       display.drawBitmap(0, 0, logo_data, logo_width, logo_height, SSD1306_WHITE);
-- 
GitLab