LCD Display I²C will nicht.

Da ich den Kabalsalat Leid war, ein Display direkt an den Arduino anzuschließen, entschloss ich mich es mal mit einem 'Backpack' zu versuchen. Durch Busleitung benötigt das LCD Display neben Versorgung auch nur noch 2 statt 6 Pins.
Das Problem: Es funktioniert nicht.

Viel verkehrt machen kann man ja eigentlich nicht. Richtig draufstecken und los gehts.
SCL geht an pin A5 (ich nutze einen Arduino Uno)
SDA geht an A4.
Schnell noch die Adresse scannen: 0x27 und fertig.

Aber der LCD blieb Dunkel. Nach langem Rätseln fand ich heraus dass zumindest das Hintergrundlicht anging, wenn ich Chip leicht an das Display gedrückt habe. Vielleicht ein Wackelkontakt?
Kurz wurde alles korrekt angezeigt, wurde aber schnell zu kauderwelsch. Nach dem installieren und deinstallieren vieler verschiedener Libraries funktioniert allerdings immer noch nichts.
Code gibts nicht, ich verwendete stets den Beispiel Code der jeweiligen Libraries (natürlich mit geänderter Adresse falls nötig).

Ich benutze einen Arduino Uno
ein 44780 1602 LCD Display:
https://www.amazon.de/Zeichen-Display-HD44780-Backlight-Arduino-Blau/dp/B009GEPZRE/ref=pd_bxgy_107_img_2?_encoding=UTF8&psc=1&refRID=1Y0D06N9NQNMSD4AJQKD
und diese Schnittstelle:

und z.B eine der Libraries die ich (mehrfach) probiert habe ist folgende:
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/

Also, da ich mit meinem Latein am Ende bin, hat jemand eine Idee was ich falsch mache bzw. was ich noch ausprobieren könnte?

Das hört sich doch nach einem Wackelkontakt bzw. einer schlechten Lötstelle an.
Sieh dir auch mal an ob ein Kurzschluss zwischen dem I2C-Adapter und dem Displaygehäuse besteht.
Die Halter des Gehäuses ragen meist zu weit hervor und können mit der Zusatzplatine einen Kurzschluss bilden.

Danke für den Tipp, hab auch nocheinmal nachgeschaut. Die Pins kommen vom Adapter und berühren nur die Kontakte die sie sollen. Auch sollte der Absstand zwischen den beiden Platinen groß genug sein.

Da die Teile auf Amazon sehr billig waren hab ich gleich doppelt zugeschlagen. Den einen Adapter direkt verlötet und den anderen dann später nur gesteckt. Beim verlöteten geht gar nichts, die Lötstellen sind aber relativ ordentlich und das Multimeter sagt dass sich die Lötstellen nicht berühren.

Bei dem gesteckten Setup ergaben sich oben gennante Probleme. Da ich doppelt gekauft habe, schließe ich eine Fehlfunktion einfach mal aus.

Ich will unbedingt ein Display zum laufen bringen ohne gleich auf 6 - 8 Pins verzichten zu müssen.
Gibt des denn eine andere Attraktive Methode ein LCD Display zu betreiben?

Und was macht der Kontrast ?
Mal am Poti gedreht ?

Mache ich nach jedem Test. Wäre ja doof, wenn's funktionieren würde, und ich's nicht mitbekäme.
Gerade probiere ein weiteres mal eins der Beispiele der oben genannten library:
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
Bei dem I²C Beispiel, blinkt das Display nur einmal ganz kurz auf.

Dann zeig uns doch mal ein Foto deines Aufbaus.

Sind die Kabelverbindungen ohne Wackelkontakt ?
Welche Spannung schließt du an und wo ?

Also gesteckt halte ich für Lottospielen.

Hier gibt es Infos zu den verschiedenenn I2C-Backpacks.

Hast Du mal den I2C-Scanner laufen lassen? Manche LCD-Backpacks laufen auch auf einer anderen I2C-Adresse.

Gruß Tommy

Sodele,
hier die Bilder, ich hoffe sie sind ausreichend beschriftet:

Scanner hab ich laufen lassen, ja. Ergebnissadresse: 0x27.
Falls es hilft, ich bin ein Anfänger, also könnte es was total banales sein.

Habe auch noch ein "hello World" Beispiel probiert, allerdings wird nichts ausgegeben.
So nebenbei, was muss ich tun um Code lesbar zu posten?

BlinkingCursor.ino (497 Bytes)

Zalto:
Sodele,
hier die Bilder, ich hoffe sie sind ausreichend beschriftet:

Scanner hab ich laufen lassen, ja. Ergebnissadresse: 0x27.
Falls es hilft, ich bin ein Anfänger, also könnte es was total banales sein.

Habe auch noch ein "hello World" Beispiel probiert, allerdings wird weder etwas ausgegeben, noch geht die Hintergrund LED an.
So nebenbei, was muss ich tun um Code lesbar zu posten?

und hier nochmal der Link, damit nicht jeder den Quelltext der Seite durchsuchen muss: Imgur: The magic of the Internet

Moko:
und hier nochmal der Link, damit nicht jeder den Quelltext der Seite durchsuchen muss: Imgur: The magic of the Internet

Danke Moko....

@zalto: Die Lötstellen sehen "grottenschlecht" aus.

Edit:
Und nochmal zur Wiederholung.
Die schwarzen Metallfahnen zur Befestigung des LCD-Gehäuses können einen Kurzschluss mit der I2C-Platine machen.

Zalto:
hier die Bilder, ...

Mein I2C-Adapter sieht aus wie Deiner. Bei mir paßte die Zuordnung der Pins nicht, daher funktioniert das Beispiel HelloWorld_i2c.pde erst, wenn ich sie manuell festlege:

// Funktioniert mit Bibliothek http://www.instructables.com/id/How-to-connect-a-serial-LCD-to-an-Arduino-UNO/step2/The-Sketch/   Beschreibung
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads   Download

#include <LCD.h>                //NewliquidCrystal
#include <LiquidCrystal_I2C.h>  //NewliquidCrystal
#include <Wire.h>

#define I2C_ADDR     0x27
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

LiquidCrystal_I2C  lcd2(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin, BACKLIGHT_PIN, POSITIVE);

void setup() {
  lcd2.begin(16, 2);                     // initialize the lcd
  lcd2.setCursor (5, 0);
  lcd2.print("Hallo");
  lcd2.setCursor(0, 1);
  lcd2.print("Zalto!");
}

void loop() {}

Ergebnis:

IMG_9433.png

Der Compiler schmeißt ein paar Warnungen raus, es funktioniert aber dennoch.

@agmue
Im 1. Post hat der TO geschrieben, die Anzeige hat kurz richtig funktioniert.
Damit kann man normal davon ausgehen dass die Pindefinition stimmt.

Ich tippe nach wie vor auf die schlechten Lötstellen oder einen Kurzschluss.

Als ersten Schritt würde ich das Display ordentlich löten. Dann sieht man weiter. An jeden Pin Mit Lötkolben und Lötzinn ran und einige Sekunden warten bis das Lötzinn gut verronnen ist.
Grüße Uwe

Ich hatte auch probleme mit der in Betriebnahme. Das Problem war, dass es verschiedene "LiquidCrystal_I2C" Library gibt. Die haben den selben Namen,aber leider keine Funktion. Du hast geschrieben, dass das Display schon kurz funktioniert hat, aber du hast dann weil es nicht mehr ging, alles nochmal neu Installiert.

Tommy hat dir hier weiter oben eine Seite verlinkt, von dort habe ich meine "LiquidCrystal_I2C" Library geholt und diese hat funktioniert, nachdem ich vorher einige andere von anderen Seiten geholt habe, selber Name aber keine Funktion. Ich würde also empfehlen, die LiquidCrystal_I2C Library auf deinem Rechner nochmal zu löschen und die von der Seite nehmen die Tommy verlinkt hat. Dann ist zumindest schon mal klar das die Library funktioniert. Sonst sind es zuviele Baustellen gleichzeitig und du findest den Fehler nicht. Wenn es dann noch nicht geht, noch ein wenig nachlöten, dann wird es wohl funktionieren.

Hi

Wichtig beim Nachlöten:
Frisches Lötzinn mit Flussmittelseele
Optional Flussmittel separat bei geben, gibt es als Stift oder auch als 'Brocken' (Kolophonium, ist ein Harz, lässt sich in Isopropanol auflösen und per Q-tip (Wattestäbchen) auftragen) - Geigenharz ist das Gleiche.

MfG

Man kann es auch in Spiritus auflösen.

Gruß Tommy

Hi

Richtig, laß nur, daß dort teilweise ein weißer Schleier zurück bleiben soll von den Vergällungsmitteln.
Müsste nachschauen, was mich die 100ml Isopropanol gekostet haben, denke aber, daß ich damit noch ein paar Jahre hin komme, wodurch sich der Preis relativieren wird.

MfG

So wie es aussieht, werde ich alles wohl noch einmal neu verlöten.
Ich werde den Adapter dieses mal "neben" die Platine Löten sodass ich ausschließen kann das Kontakte/schwarze-Abstandhalter einen Kurzschluss verursachen.
Habe leider erst in ein paar Tagen Zeit mich drum zu kümmern, aber für alle die es interessiert, werde ich hier weiterschreiben, und mitteilen ob es funktioniert.
Vielen Dank schonmal für die vielen Antworten,
Vielen Dank auch an agmue, der umgestellte Code hat leider bisher nicht geholfen, aber ich werde den Tipp im Hinterkopf behalten sobald alles wieder schön verlötet ist.

MfG

Zalto:
So wie es aussieht, werde ich alles wohl noch einmal neu verlöten.
Ich werde den Adapter dieses mal "neben" die Platine Löten sodass ich ausschließen kann das Kontakte/schwarze-Abstandhalter einen Kurzschluss verursachen.

Mit genügend Abstand zueinander, kannst du die beiden Platinen auch wieder wie vorgesehen verlöten.
So nehmen diese weniger Platz in Anspruch.
Einfach nur darauf achten, dass diese sich nicht berühren.
Und natürlich interessiert uns das Ergebnis.

Anstelle der verwendeten libraries, wo man zum Aufbau des Constructors exakt wissen muss, wie die Pinbelegung aussieht und auch die I2C Adresse des backpacks, kann man auch die library von Bill Perry verwenden - z.Zt. noch Version 0.9, aber funktioniert mit meinen I2C displays tadellos.

Hier der link zu der library site:
Bill Perry's HD44780 library

Hier braucht man keine I2C-Adresse eingeben und die Pinbelegung sucht sich die library alles automatisch zusammen ("Nachteil": die Initialisierung des displays braucht gefühlt eine halbe Sekunde länger).