
Zitat von
basteluwe
Das "Anpingen" würde ich ja gern probieren, nur wie macht man das? Unwissenheit kann nerven, ich weiß!
Gibt es einen Befehl in der Wire-Library (keinen gefunden), oder muß man das jeweils handisch coden, ähnlich wie im I2C-Scanner Code?
Gruß Uwe
habe ich doch oben geschrieben!
vor jedem einzelnen Geräte-Zugriff (Radio, OLED, was auch immer) IMMER zwischendurch diesen Code einfügen:
Code:
Wire.beginTransmission(addr); // transmit to device I2C addr
int ioerr=Wire.endTransmission();
if(ioerr) { // Ausgabe eines Fehlers samt i2c-addr.
Serial.print("Fehler bei addr 0x");
if (addr<16) { Serial.print("0"); }
Serial.print(addr,HEX);
Serial.print(" ioerr=");
Serial.println(ioerr);
}
am besten sogar noch mit Debug-Zusätzen wie
Serial.println("vor Lautstärke:");
...
Serial.println("vor Sender:");
...
Serial.println("vor RDS:");
...
Serial.println("vor OLED print:");
...
usw usf
Für addr musst du ntl dort jeweils die exakte i2c-Geräteadresse einsetzen (z.B. wenn OLED die Adresse 0x3c hat, dann jeweils vor OLED-Zugriff):
Code:
int addr=0x3c; // für OLED
Wire.beginTransmission(addr); // transmit to device I2C addr
int ioerr=Wire.endTransmission();
if(ioerr) { // Ausgabe eines Fehlers samt i2c-addr.
Serial.println("vor OLED print:");
Serial.print("Fehler bei addr 0x");
if (addr<16) { Serial.print("0"); }
Serial.print(addr,HEX);
Serial.print(" ioerr=");
Serial.println(ioerr);
}
PS:
für diesen Code-Block kannst du ntl auch eine eigene Debug-Funktion spendieren
Code:
void i2c_debug(int addr, char * message) {
Wire.beginTransmission(addr); // transmit to device I2C addr
int ioerr=Wire.endTransmission();
if(ioerr) { // Ausgabe eines Fehlers samt i2c-addr.
Serial.println(message);
Serial.print("Fehler bei addr 0x");
if (addr<16) { Serial.print("0"); }
Serial.print(addr,HEX);
Serial.print(" ioerr=");
Serial.println(ioerr);
}
}
Aufruf dieser Funktion ist dann ja wohl trivial
Lesezeichen