bei der I2C Suche in setup() musst du nur auf 0x3F testen, falls du mit 0x27 vorinitialisiert hast (oder umgekehrt), um ggf auf die andere Adresse umzuschalten, ansonsten muss es bleiben wie es war.
hingegen die Instantiierung
LiquidCrystal_I2C lcd(LCDadr, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
gehört lokal in die loop() ganz nach oben, NICHT global, habe ich doch geschrieben!
- - - Aktualisiert - - -
PS,
ggf darf dann auch
lcd.begin(16, 2);
nicht in setup() sondern auch nur in loop, da ja dort erst instantiiert wird.
Wiederholtes lcd.begin in jeder loop muss aber evtl über eine Variable nach dem ersten Mal verhindert werden.
Code:
void loop()
{
static bool initok=false;
LiquidCrystal_I2C lcd(LCDadr, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
if(!initok) { // nur beim 1. Durchlauf
lcd.begin(16, 2); // kenne deine lib nicht, ggf anpassen
lcd.setCursor(0, 0); // kenne deine lib nicht, ggf anpassen
lcd.setBacklight(HIGH); // kenne deine lib nicht, ggf anpassen
lcd.print("LCD init done."); // kenne deine lib nicht, ggf anpassen
initok=true;
Serial.println("LCD init done.");
}
// Rest der loop()-Befehle
}
Lesezeichen