ich hab jetzt alles mögliche versucht, habe die initialisierung wie auch die I2C-suche xmal hin und her verschoben, muss mich wohl damit abfinden, dass es wirklich nicht geht...
Code:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
byte I2CAdd;
byte LCDadr = 0x27; //phantom_adresse
byte fehler;
boolean done = false;
//0x3F = 63
//0x27 = 39
//vorinitialisierung mit phantom_adresse
LiquidCrystal_I2C lcd(LCDadr, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup()
{
Serial.begin(115200);
Wire.begin();
lcd.begin(16, 2);
lcd.clear();
// I2c_suche();
}
void loop()
{
if (!done)
{
I2c_suche();
Serial.print(I2CAdd);
Serial.print(" ");
Serial.println(LCDadr, HEX);
//initialisierung mit echter I2C adresse überschreiben
LiquidCrystal_I2C lcd(LCDadr, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
LCD_meldung();
}
//weiterer code
}
void I2c_suche()
{
Wire.setClock(100000L);
for (I2CAdd = 39; I2CAdd < 63; I2CAdd++)
{
Wire.beginTransmission(I2CAdd);
fehler = Wire.endTransmission();
if (fehler == 0)
{
LCDadr = I2CAdd;
Serial.print("Baustein mit Adresse 0x");
Serial.print(I2CAdd, HEX);
Serial.println(" gefunden!");
// I2CAdd_hex = (I2CAdd);
// Serial.println(I2CAdd_hex, HEX);
Serial.print(I2CAdd);
Serial.print(" ");
Serial.println(LCDadr, HEX);
done = true;
}
}
}
void LCD_meldung ()
{
lcd.setCursor(0, 0);
lcd.setBacklight(HIGH);
lcd.print("I2C scanner");
lcd.setCursor(0, 1);
lcd.print("LCD lokal");
delay(2000);
lcd.clear();
done = true;
}
Lesezeichen