Natürlich auch gleich die beiden vereint, getestet (5V über Arduino), funktionierte.
Jetzt will ich natürlich Text darstellen, habe dazu verschiedene Librarys probiert, jedoch funktioniert keine.
Am weitesten bin ich mit der LiquidCrystal_I2C gekommen, wo zumindest die Beleuchtung vom LCD während des Uploads/Resets kurz flackerte.
Sturm:
Wenn ich das Teil falsch rum aufgelötet hätte, könnte ich den Kontrast nicht steuern.
Sieht soweit korrekt aus.
Hast Du mal "doppelte Initialisierung" versucht, falls die Initialisierungszeit in Deiner Library zu knapp bemessen ist:
lcd.init(); // initialize the lcd
lcd.init();
?
Oder mal probiert, ob irgendein anderes I2C-Gerät funktioniert, wenn Du es statt des Displays anschließt?
Z.B. eine RTC-Echtzeituhr (DS1307 oder DS3231) oder irgendwas anderes, das über I2C angesteuert wird?
Wie gesagt, ich hab noch keine Ahnung von der Materie (I2C), ich lese mich immer ein wenn ich was benötige oder frage halt nach.
Doppelt initialisieren hilft leider auch nicht, blinkt halt nur mehrmals
Sturm:
Wie gesagt, ich hab noch keine Ahnung von der Materie (I2C), ich lese mich immer ein wenn ich was benötige oder frage halt nach.
Doppelt initialisieren hilft leider auch nicht, blinkt halt nur mehrmals
Da fällt mir nicht viel zu ein. Vielleicht handelt es sich um einen I2C Adapter mit abweichender LCD-Verdrahtung, von denen gibt es auch diverse Ausführungen, die nicht zu der "Standard" LiquidCrystal_I2C-Library kompatibel sind.
Dann müßtest Du eine alternative LiquidCrystal_I2C-Library installieren, bei der Du im Sketch zur Laufzeit die richtige LCD-Verdrahtung initialisieren kannst. Z.B. diese Library von hier: https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
Und dann kannst Du es ggf. mit dieser Library versuchen mit:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
Oder wie auch immer die Hardware bei Deinem Adapter zu initialisieren ist.
Ohne Datenblatt mit Schaltplan ist das schwierig vorhersagbar.
Die I2C-Adresse bekommst Du jedenfalls mit dem I2C-Scanner heraus.
Und wenn Du keinen Schaltplan hast, müßtest Du wohl mal verschiedene gängige "alternative" Pinbelegungen ausprobieren.
ich habe schon auf anraten des Admins ne Mail an den Verkäufer geschickt mit der Bitte mir ein Sheet zukommen zu lassen, ebenso wie eine Library.
Mal sehen was wird, aber danke schonmal für die Hilfe
Also wegen den 7 Bit, Du musst die hardwaremäßig eingestellte Adresse durch 2 teilen, z.B. am Display 0x40 dann übergibst Du 0x20. Es kann aber sein das die Lib das schon für Dich macht, deshalb musst Du es einfach mal probieren.
Sturm:
ich habe schon auf anraten des Admins ne Mail an den Verkäufer geschickt mit der Bitte mir ein Sheet zukommen zu lassen, ebenso wie eine Library.
Also dass er bei technischen Fragen wie "kann ich diese Perücke mit den Plastikhaaren mit Haarschampoo waschen" eine Antwort weiß, würde ich ja vermuten. Aber ich würde nicht unbedingt auf qualifizierten technischen Support für Deinen I2C-Adapter wetten.
Aber lasse Dich überraschen!
Die Hoffnung stirbt bekanntlich zuletzt.
]
ich habe das gleiche I2C-Modul. Das funktioniert allerdings nur mit Adresse 0x27, obwohl ebenso 0x20 angegeben ist.
[quote]
/******************************************
PURPOSE: HelloWorld test sketch for Arduino
Created by Sam Leong
Website: www.b2cqshop.com
DATE: 2012/9/20
*******************************************/
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.print("Hello, world!");
}
void loop()
{
}
[/quote]
Bei einem 20x4 LCD-Modul ersetze ich einfach in der Addressierungszeile 16,2 durch 20,4
der Hersteller hat hier die Adresse des I²C-LCD-Backpacks sogar auf die Platine gedruckt:
Wie Du unschwer erkennen kannst, ist mit den Jumpern die Adresse 0x40 eingestellt.
Angesprochen wird das Display unter:
#define I2C_ADDR 0x40 >> 1 // I2C-Addresse
Die beiden Pfeile und die 1 bedeuten, dass die Adresse um ein Bit nach rechts geschoben wird, das entspricht einem geteilt durch 2.
Was spricht also dagegen, es einfach mal zu versuchen?
Gruß,
Ralf
[Edit:]Ich habe gerade nochmal nach diesem Problem gegoogelt und dabei gefunden:
If the sensor does not seem to work then try using the address divided by 2, leJOS uses 7 bit I2C addresses but some devices specify the address as an 8 bit value and to convert you need to shift the 8 bit address right by 1 bit (divide by 2)...
Oder auf deutsch: Falls der Sensor nicht richtig zu funktionieren scheint, dann versuch die Adresse geteilt durch 2 zu benutzen, leJOS benutzt 7 Bit I²C Adressen aber manche Bauelemente spezifizieren die Adresse als 8 Bit Wert und zum konvertieren musst Du die 8 Bit Adresse um ein Bit nach rechts schieben (geteilt durch 2)...
Sturm:
Mit ner alten Library konnte ich jetzt dann doch nen blinkenden Cursor darstellen, aber der Text davor fehlte einfach.
Wie sieht es denn mit Deinen Lötkünsten beim Auflöten der Backpack-Platine aus?
Sind das alles saubere und einwandfreie Lötstellen geworden?
Oder könnte es sein, dass es zwischen Backpack-Platine und LCD-Platine nun entweder "kalte" Lötstellen gibt (kein Kontakt, Wackelkontakt) oder eine Lötbrücke zwischen zwei Pins?