Alle Versuche ein HITACHI LCD Display am UNO zu betreiben schlugen fehl. Wer hat Erfahrung mit U8gLib und UNO? Wie schliesse ich das Display an?
Es handelt sich um ein 240x128 Pixel Display mit LC7981 Controller. (HITACHI SP14N003)
Eigentlich garnicht so schwer..
wie im Beispiel von U8Glib verkabeln und das Beispiel kompilieren, wenn es denn utnerstützt wird.
sollte so klappen.. vielleicht hier mal Deinen Sketch posten.
EDIT: sehe ich das richtig, -15V an VEE? Vermutlich der Kontrast.
Kontroller wird unterstützt. Dabei bin ich mir über die Bezeichnungen nicht ganz klar. Sind mit Pin 14-18 die analogen Pins 0-4 am UNO gemeint? en, cs, rw und reset ist klar. Was bedeuted di? Ich habe am Display einen Pin mit der Bezeichnung DOFF...
U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
LCD wird mit +5V und -15V betrieben. VEE ist Kontrast, ja.
Aber ich bekomme nur Streifen, sonst nichts.
Diesen Test benutze ich.
// Henry's Bench Hello World - for use with Monochrome OLEDs
include "U8glib.h"
//**************************************************
// Change this constructor to match your display!!!
U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//**************************************************
void setup() {
u8g.setFont(u8g_font_unifont);
u8g.setColorIndex(1); // Instructs the display to draw with a pixel on.
}
void loop() {
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
delay(1000);
}
void draw(){
u8g.drawStr( 0, 20, "Hello World");
}
Ich habe jetzt folgendes herausgefunden:
di ist die Bezeichnung für Daten/Instruktion. Bei meinem Display wird dieser Pin mit RS bezeichnet (Register select). DOFF muss immer auf GND sein, sonst ist das Display dunkel.
Hi
Das Display benötigt halt sehr viele Leitungen da die Daten parallel übertragen werden.
Dein Aufruf:
//**************************************************
// Change this constructor to match your display!!!
U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//**************************************************
ist so die typische Konfiguration für einen Arduino MEGA.
Nach dem Kompilieren hast du wie viel % vom UNO Leistung verbraucht?
Der Uno hat mal 13 Standard IO, davon brauchst du 8 (D0-D7) für die Daten und
5 Stück für die Steuerleitung - also da musst du wirklich auf die Analogports umleiten.
Wenn du die Analogports als Digitalport nicht belegst, verwendest du ja mit dem Display auch die serielle Schnittstelle und darfst diese in deinem Programm nicht mehr verwenden.
Ob die Lib auch die analogen Ports unterstützt bin ich überfragt. (Allerdings ist Olli Kraus ein Genie)
Für ein paar Steuerleitungen könnte es noch Sparpotential geben. EN sollte immer freigegeben werden können. RW eigentlich auch fix sein weil du wirst ja nur zum Display schreiben und nix lesen wollen.
Weil mich das Display ansteuern als Anfänger sehr gefordert hat, habe ich da mal was zusammen geschrieben.
Allerdings ein anderer Controller und eben genau wegen den Problemen ein Display mit serieller Datenübertragung.
http://forum.arduino.cc/index.php?topic=460736.0
Danke für Eure Antworten. Nachdem ich das Display richtig angeschlossen hatte, hat es auch funktioniert. Es gab ein paar Missverständnisse mit der Pinbezeichnung am Display. Die Bezeichnung in Klammern ist die Bezeichnung wie sie auf dem Datenblatt steht.
Display Pin 1 = GND (VSS)
Display Pin 2 = +5V (VDD)
Display Pin 3 = LCD Kontrastspannung (V0)
Display Pin 4 = Register Select (RS). Wird in der lib als di bezeichnet.
Display Pin 5 = R/W (R / W)
Display Pin 6 = Enable (E)
Display Pin 7-14 = D0-D7 (DB0-DB7)
Display Pin 15 = Chip select (CS)
Display Pin 16 = reset (RES)
Display Pin 17 = -15V (VEE)
Display Pin 18 = Display off (DOFF). Bei LOW ist Display aus.
Alle anderen Pins sind nicht verbunden.
Das Display "verbraucht" viele Pins am UNO. Sollte ja auch nur ein Test sein....