LC-Display funktioniert nicht

Hallo,
ich bin neu hier und auch nur hier, weil ich nicht mehr weiter weiß. Ich habe mir ein 3 Zeilen und 12 Spalten LC-Dispay mit I2C Modul gekauft. Jedoch schaffe ich es nicht, es zum laufen zu bringen. Kann mir jemand sagen ob es falsch angeschlossen ist oder ob es an der Software liegt? Ich habe auch mal gehört ich benötige ein bestimmte Library, habe auch noch keine gefunden.
http://www.conrad.com/ce/de/product/181891/LC-Display-Schwarz-Weiss-B-x-H-x-T-46-x-33-x-285-mm-EA-T123W-I2C/?ref=home&rt=home&rb=1
Dies ist das besagte Display. Angeschlossen ist es von rechts nach links GND, 5V, Poti Mittelabgriff, Poti GND, A5 und A4. Die Spannungsversorung des Potis kommt einmal von 5V, läuft duch ein 10 kO Wiederstand und dann an GND und ans Display.
Hoffe ihr könnt mir folgen :wink:

Hier noch das Programm:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20, 12, 3);   

void setup()
{
 lcd.begin();
 lcd.home();
}

void loop()
{
 lcd.setCursor(0, 0);
 lcd.print("Hello World!");
}

Die Library müsste diese sein:GitHub - fdebrabander/Arduino-LiquidCrystal-I2C-library: Library for the LiquidCrystal LCD display connected to an Arduino board.

Danke für die Hilfe.
MFG jaja2stein

Hi,

ich fürchte, da hast du dir ein potenziell unlösbares Problem eingekauft.

Habe mal ein wenig im Datenblatt gelesen und was ich verstanden habe ist folgendes:

  1. die Adresse ist nicht 0x20, sondern - wahrscheinlich - 0x74 (Conrad sagt: $74) -> ok,kein Problem
  2. der verbaute Treiber-Chip ist ein PCF2116-C (kompatibel u.a. mit Philips LPH3827) -> oje, ein Problem
  3. angeblich ist der Befehlssatz identisch mit dem Hitachi HD44780 -> ok, wenn es denn stimmt
  4. ich kenne keine HD44780 library, die 3 x 12 unterstützt

Ich kenne mich ein wenig mit LCD-I2C Modulen aus, zumindest habe ich alle bislang bei mir ans Laufen gebracht. Allerdings kann ich nicht präzise sagen, ob es ausreicht, dass der Befehlssatz deines Displays mit dem des HD44780 übereinstimmt. Der HD44780 ist der defacto - Standard beim Arduino geworden und alle mir bekannten LCD_I2C-Libraries basieren darauf - allerdings müssen auch die entsprechenden Anschlüsse alle im Constructor mitgeliefert werden, wenn die library nicht automatisch diese abscannen und identifizieren kann.

Die library, die du bei github geladen hast, kenne ich nicht.
Ich arbeite zur Zeit (in Kürze soll eine noch bessere herauskommen) nur mit der von F. Malpartida.
Informationen über die diversen I2C backpacks, die auf die Standard-Anzeigen huckepack aufgelötet sind, findest du hier (incl. Hinweis auf F.Malpartidas library):
https://arduino-info.wikispaces.com/LCD-Blue-I2C

Es kann sein, dass einer der Constructoren passt (aber immer die Adresse auf 0x74!) - befürchtungsweise aber auch nicht. Du müsstest versuchen, die internen Daten-Leitungen entsprechend zu identifizieren und den Constructor anpassen.

Wenn alles damit nicht klappt, gibt es noch 2 Möglichkeiten:

  1. eine geeignete library für Arduino finden (ich werde auch noch weiter suchen)
  2. du kaufst dir ein LCD Display, welches von einer Arduino library unterstützt wird.

Ein paar links, die evtl. weiterhelfen (viel Hoffnung habe ich nicht):
http://forum.arduino.cc/index.php?topic=83648.0
http://forum.arduino.cc/index.php?topic=211835.0
und der imho vielversprechendste link:
https://developer.mbed.org/users/wim/notebook/textlcd-enhanced/

Aus letzterem habe ich mal einen potenziellen Constructor für dich abgeleitet:

LiquidCrystal_I2C lcd(0x74, 6, 5, 4, 11, 12, 13, 14);

-> dieser kommt am besten direkt nach dem Einbinden der library und später im setup() musst du dann noch die Befehlszeile:

lcd.begin (12, 3);

einbauen.

Wenn, dann solltest du aber unbedingt mit der NewLiquidCrystal library arbeiten und die alte library komplett vorher löschen, sonst gibt es Probleme, da leider viele der parallel existierenden I2C LCD libraries den gleichen Namen benutzen und dann weiß der Compiler nicht, welche er nehmen soll und nimmt irgendeine ...

Warum die NewLiquid? Weil ich nur bei dieser sicher bin, dass so ein Constructor mitgegeben werden kann mit den allgemeinen Daten:
addr, en, rw, rs, d4, d5, d6, d7 (backlight habe ich nicht belegt)
Ich übernehme aber keinerlei Garantie, dass das klappt, da ich nur die Pin-Daten der angeblich am meisten benutzten Controller-Pins genommen und in den Constructor übertragen habe (siehe I2C Tabelle im letzten link). Leider gibt das Datenblatt deines Displays die interne Beschaltung zwischen I2C und den Datenleitungen des Displays nicht her, so bleibt nur ein Raten übrig.

Nachfolgend dann der komplette Test-Sketch:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x74, 6, 5, 4, 11, 12, 13, 14);   

void setup()
{
  lcd.begin(12, 3);
  lcd.home();
}

void loop()
{
  lcd.setCursor(0, 0);
  lcd.print("Hello World!");
}

Lass doch zuerst mal einen I2C Scanner drüber laufen, dann hast du wenigstens die Adresse sicher und weißt, dass die Verdrahtung stimmt. Weil auch beim korrektesten Constructor geht bei falschem Anschluss nix.

Lass doch zuerst mal einen I2C Scanner drüber laufen

Guter Hinweis; aber das Datenblatt spricht explizit von 0x74 - dennoch, schaden kann es nicht und man hat ja bekanntermaßen schon Pferde etwas Unappetitliches tun sehen :slight_smile:

Hallo,

ich hatte mir das Display mal auf der Webseite angesehen, dann aber doch nicht gekauft. In diesem Zusammenhang hatte ich einige Infos gefunden, die vielleicht helfen.

rpt007:
2. der verbaute Treiber-Chip ist ein PCF2116-C (kompatibel u.a. mit Philips LPH3827) -> oje, ein Problem
3. angeblich ist der Befehlssatz identisch mit dem Hitachi HD44780 -> ok, wenn es denn stimmt
4. ich kenne keine HD44780 library, die 3 x 12 unterstützt

Bei ARM mbed (kein Arduino) gibt es eine Library, wo diese Teile erwähnt werden
https://developer.mbed.org/users/wim/notebook/textlcd-enhanced/

The library controls the HD44780 through a 4-bit bus either directly or by using SPI or I2C portexpanders. Several compatible controllers also have native support for SPI and/or I2C serial interfaces in addition to, or instead of, the parallel bus (eg ST7032i, ST7036i, ST7070, SSD1803, AIP31068, PCF211X, AC780). The enhanced TextLCD library supports some of these devices.

16x3 LCD panel (actually 24x2 in different layout)

Danke für die Hilfe, aber nach dem ich jetzt noch so gut wie alles probiert habe und der I2C Scanner auch erfolgreich gesagt hat, es sei die Adresse 0x3A gefunden, wobei es mich auch verwundert hat, dass ich Kabel heraus ziehen konnte und es immer noch gefunden wurde. Jedoch habe auch die Librarys und so nicht geholfen. Ich werde es trotzdem noch weiter versuchen. Danke trotzdem für die Hilfe.
MFG jaja2stein

Bei ARM mbed (kein Arduino) gibt es eine Library, wo diese Teile erwähnt werden
TextLCD Enhanced | Mbed

Diese hatte ich in Post #2 bereits zitiert und daraus den Constructor für eine Arduino-kompatible library gebastelt. Wie ich aber bereits geschrieben habe - das wäre eine reine Glückssache, das Ding zum Laufen zu bringen, obwohl es ein tolles kleines Display für den Arduino wäre.

Ich habe Kontakt zu einem Experten im engl.sprachigen Forum, der sich gut mit Displays und libraries auskennt. Ich werde den mal fragen, ob er eine Chance sieht. Sollte das klappen, werde ich mir für ein anstehendes Projekt das Display mal zulegen.

Oh, sorry. Das habe ich glatt übersehen, dass das der selbe Link war.

Im Quelltext der Library wird übrigens noch mal für den PCF2116 unterschieden:

      case PCF2116_3V3:
          // PCF2116 controller: Voltage generator for VLCD. VDD=5V. V0 controls contrast voltage.                 
          // Initialise Display configuration
          switch (_type) {
 
            // ... 
            // gekürzt
 // ...
 
            case LCD12x3D:            // Special mode for KS0078 and PCF21XX                            
            case LCD12x3D1:           // Special mode for PCF21XX                     
            case LCD12x4D:            // Special mode for PCF21XX:
              _writeCommand(0x2E);    //FUNCTION SET 0 0 1 DL=0 4-bit, N=1/M=1 4-line/12 chars display mode, G=1 VGen on, 0                               
                                      //Note: 4 bit mode is ignored for I2C mode              

 // ... 
            // gekürzt
 // ...
 
 
//Experimental for cellphone 3-line display, SA=0x74, No Ack supported, Character set C or K, DL = 8 bit, N=0,M=1 (reserved mode !!), external VLCD -2V5
//@TODO                            
      case PCF2116_5V:
          // PCF2116 controller: No Voltage generator for VLCD. VDD=5V. V0 controls contrast voltage.                           
          // Initialise Display configuration
          switch (_type) {
  
     // ... 
            // gekürzt
 // ...
                                               
 
            case LCD12x3D:            // Special mode for KS0078 and PCF21XX                            
            case LCD12x3D1:           // Special mode for PCF21XX                     
            case LCD12x4D:            // Special mode for PCF21XX:

Der zweite hat 5V und Addresse 0x74, das würde zu obigen Daten passen.

Wäre toll, wenn man das mit dem Arduino ans Laufen kriegte; ich finde, es ist ein schönes display, wenn auch ein wenig teuer im Vergleich zu anderen.

Da gibt es noch von einer Firma welche, die auch ganz toll aussehen; momentan komme ich nicht auf den Namen; sind nicht so bekannt wie die "Standard" LCD displays, sind aber in vielen verschiedenen Farben incl. schwarz auf weiß erhältlich und laufen sofort am Arduino.

Nachtrag:
Habe den Namen wieder: Dog Display (dafür gibt es auch eine Arduino library).

Und, die kosten erheblich weniger und können mehr (20x4 schwarz auf weiß kostet bei Reich.... 13,30€)

An ArduFE:
Ich weiß nicht ob ich einfach gerade zu blöd bin aber ich schaffe es irgenwie keinen Download auf der Seite zu finden, auf die mich der Link schickt. Wo ist der?
MFG jaja2stein

.. was willst du denn da downloaden - die library kannst du nicht für Arduino nutzen, es sei denn, du willst sie für Arduino chips umschreiben ??

jaja2stein:
An ArduFE:
Ich weiß nicht ob ich einfach gerade zu blöd bin aber ich schaffe es irgenwie keinen Download auf der Seite zu finden, auf die mich der Link schickt. Wo ist der?
MFG jaja2stein

Ich habe ja dabei geschrieben (kein Arduino).

Auf die Lib sind wir beide Antwortenden wohl parallel gestossen, weil anscheindend keine andere so gut dokumentiert ist und so viele Chips unterstützt.

Ich bin jetzt auch am überlegen, ob ich mir bei meiner nächsten Bestellungen mal das Display mitbestelle, bin jetzt auch neugierig geworden. Passende ARM Boards für die Lib habe ich.

Ich habe eine Webseite zu dem Teil gefunden:

Das Beispiel scheint für eine DLL zur Ansteuerung eines I2C-Adapters zu sein, die da aus Excel (!) verwendet wird.

Aber wenn man sich das so ansieht, könnte man das unter Verwendung der Wire-Lib nachbauen.

Ich hab mir das nun mal angeschaut.. bis auf die Adresse "0x74" sollte das ganze Voll Kompatibel mit der Liquid Crystal Library sein. Ich habe es ja selbst nicht zum ausprobieren, würde fast Verdrahtungsfehler meinen.

Es kann natürlich in den Zeilen code irgendwo der Hund begraben sein.. ich habe lediglich die ganzen Initialisierungsbefehle grob verglichen und das ist kompatibel.

auch wenn die Lib nicht für 3 Zeilen ist, sollten die ersten beiden zeilen funktionieren.

Da ich es selbst nicht nachschauen kann bleibt es eine Vermutung.

Versuch mal einfach diesen Code:

for (int i=0;i<=20;i++) 
for (int b=0;b<=20;b++) {

lcd.setCursor(i, b);
 lcd.print("1");
}