Servus,
wie steuere ich einen 4x20 lcd mit i^2C korrekt an.?
Verwendet wird ein ELEGO MEGA2560, ein UNO ebenfalls vorhanden.
Am 2560 ist noch ein 2x16 lcd ,,konventionell verkabelt,,(DigialPins 2 bis 7 ...) und der 4x20 lcd soll ebenfalls angesteuert werden.
Nach einiger Recherche im Internet, und einigen ausprobierten Tutorials und librarys kein Erfolg. Größtenteils sind die links nicht mehr aktuell.
Irgentjemand im Internet meinte man solle bezüglich Anschluss des i2c anstatt A4, A5, beim Mega auf Communication SDA20, SCL21 stecken. Dazu kann ich nichts sagen.
Auf dem i2c steht auf dem Chip : PCF8574T
Die Brücken A0, A1,A2 sind nicht verlötet.
Die Hintergrundbeleuchtung ist momentan an. Es sind in der Schaltung somit im Moment 2 lcds und ein RTC verbaut und verdrahtet am Elego.
Ein Scann ergab bisher:
/*
Scanning...
I2C device found at address 0x27 !
I2C device found at address 0x57 !
I2C device found at address 0x68 !
done
*/
Falls jemand weiß wo aktuelle Links und Bibs zu haben sind bin ich sehr dankbar !
LÖSUNG:
-Alle anderen Geräte abstecken.
-Zuerst Beispiel aus Bib. ausprobieren.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
uint8_t bell[8] = {0x4, 0xe, 0xe, 0xe, 0x1f, 0x0, 0x4};
uint8_t note[8] = {0x2, 0x3, 0x2, 0xe, 0x1e, 0xc, 0x0};
uint8_t clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0};
uint8_t heart[8] = {0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0};
uint8_t duck[8] = {0x0, 0xc, 0x1d, 0xf, 0xf, 0x6, 0x0};
uint8_t check[8] = {0x0, 0x1 ,0x3, 0x16, 0x1c, 0x8, 0x0};
uint8_t cross[8] = {0x0, 0x1b, 0xe, 0x4, 0xe, 0x1b, 0x0};
uint8_t retarrow[8] = { 0x1, 0x1, 0x5, 0x9, 0x1f, 0x8, 0x4};
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
lcd.begin();
lcd.backlight();
lcd.createChar(0, bell);
lcd.createChar(1, note);
lcd.createChar(2, clock);
lcd.createChar(3, heart);
lcd.createChar(4, duck);
lcd.createChar(5, check);
lcd.createChar(6, cross);
lcd.createChar(7, retarrow);
lcd.home();
lcd.print("Hello world...");
lcd.setCursor(0, 1);
lcd.print(" i ");
lcd.write(3);
lcd.print(" arduinos!");
delay(5000);
displayKeyCodes();
}
// display all keycodes
void displayKeyCodes(void) {
uint8_t i = 0;
while (1) {
lcd.clear();
lcd.print("Codes 0x");
lcd.print(i, HEX);
lcd.print("-0x");
lcd.print(i + 16, HEX);
lcd.setCursor(0, 1);
for (int j = 0; j < 16; j++) {
lcd.write(i + j);
}
i += 16;
delay(4000);
}
}
void loop()
{
// Do nothing here...
}