Hallo Gemeinde
mühe mich jetzt seit einigen Stunden ab, ein LCD (RN) mit einem PCF 8574
zu betreiben. Leider geht ausser der Beleuchtung nicht viel (und einigen
schwarzen Rechtecken).
Auch Goo.. tut sich damit sehr schwer. Findet zwar viel, aber (sehr)
wenig zu gebrauchen. Könnte mir jemand weiterhelfen? Bin für jede Hilfe
dankbar.
achim
Es ist nicht für Arduino, sonder als normaler Code in C gedacht. Das LCD
und die Platine dazu mit dem PCF ist von Pollin (erster Versuch)
Atmega 32 16MHz
1
#define F_CPU 16000000
2
#include"i2cmaster.h" // Einbinden der i2cmaster.h
3
#include"i2clcd.h" // Einbinden der i2clcd.h
4
intmain(void)
5
{// Hauptprogramm
6
lcd_init();// Starte I2CLCD
7
lcd_command(LCD_CLEAR);// Leere Display
8
lcd_wait_ms(30);// Warte 30ms
9
lcd_printlc(1,1,"Hallo Welt");// Ausgabe an 1.Zeile, 1. Stelle
10
while(1)
11
{...// Ab hier beginnt Hauptschleife
12
}
13
}
Mit diesen Stück soll es schon gehen. Leider unklar. Es fehlt die
Adresse, I2C init, _delay usw.
Die beiden Datein habe ich eingebunden. Leider ist das schon eines der
besten was tante Goo zu bieten hat (unverständlich)
achim
Achim Seeger schrieb:> Die beiden Datein habe ich eingebunden
Und was ist met den zugehörgien C-Dateien?
Und damit delay funktioniert, sollte auch delay.h einbezogen werden.
Hallo Harald
werde es mir gleich ansehen. Vielleicht finde ich die Sttelle die ich
vergessen habe
Nach den beiden C Datein werde ich gleich schauen, eigentlich sund sie
mit drin, schaue zur Vorsicht noch mal nach.
achim
Habe weiter gesucht. Schaut es euch mal an.
In meinem Programm verwende ich diese Zeile
1
lcd_printlcd(1,1,"Hallo Welt");
Als Fehlermeldung bekomme ich die Datei i2clcd genannt.
Dann wird meine Zeile aus dem kleinen Programm genannt. Verstehe leider
den Zusammenhang nicht
achim
Achim Seeger schrieb:> Als Fehlermeldung bekomme ich die Datei i2clcd genannt.> Dann wird meine Zeile aus dem kleinen Programm genannt. Verstehe leider> den Zusammenhang nicht
Immerhin kennst du den genauen Wortlaut der Fehlermeldung.
Kein Problem, anbei die Fehlermeldungen:
Error 2 'LCD_BL_PIN' undeclared (first use in this function)
Error 1 'OFF' undeclared here (not in a function)
Warning 3 each undeclared identifier is reported only once for each
function it appears in ...\i2clcd.c
Habe mir die Stellen in der i2clcd.c angesehen. Komme damir aber auch
nicht weiter
achim
Im Moment habe ich nur das kleine Stückchen Code. Gehe langsam ran.
Möchte nur das ansprechen des LCD erst mal begreifen.
Die i2clcd.c habe ich aus dem netz. Soll so wie sie funktionieren.
Leider scheint die Ausbeute im Netz nicht gross zu sein. Viele haben die
gleiche Frage gestellt. Einiges habe ich in Basic gefunden. Damit ist
wohl Tante Goo .. am Ende.
Hat wirklich keiner ein kleines Stück für mich? Alle sprechen darüber,
aber scheinbar gibt es das Problem schon länger.
Ist zeit was zu machen.
achim
>Die i2clcd.c habe ich aus dem netz.
Das du das nicht selber programmiert hast ist klar.
>Soll so wie sie funktionieren.
Tut es aber nicht. Wo ist die i2c_init()?
Wie kommst du darauf das es ohne geht.
Harald Nagy schrieb:> Ach so. Sollte trotzdem nicht so schwer zu adaptieren sein!? Jedenfalls> ist das Board von Pollin und das von Sainsmart sehr gleich aufgebaut.
Sainsmart sagt mir nichts? Das I2C-LCD Modul von Pollin ist aber etwas
anders als diejenigen, die ich bisher von Ebay-China erhalten habe:
RS-Bit und Enable-Bit sind vertauscht
Das Bit für Hintergrundbeleuchtung wird invertiert verwendet
Bei der Adresse ist das letzte Bit für Lesen/Schreiben IMHO schon mit
reingerechnet.
>Fehler sind die selben>Kein Problem, anbei die Fehlermeldungen:>>Error 2 'LCD_BL_PIN' undeclared (first use in this function)>Error 1 'OFF' undeclared here (not in a function)
So, ich rate jetzt mal:
Warum hast du die beiden defines in der i2clcd.h gelöscht?
Richtig, beim Pollin Modul sind RS und EN vertauscht.
Du mußt die normale I2C Lib patchen. Siehe hier:
http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/
Wenn man derlei Fallstricke einmal gemeistert hat, das Display über I2C
zu betreiben, ist es recht easy zu handhaben. Auch wenn es direkt am µC
geht, ziehe ich die I2C Lösung vor, da man das Display dann etwas vom µC
abgesetzt montieren kann. 1m mit einem 4 pol. Kabel sind absolut kein
Problem.
Gruß Gerald
Hallo gerald
Danke für die Info. Werde gleich nachschauen. Bei dem Pollin ist ja
nicht einmal der Prozessor angegeben.
Hallo Holger
ich habe in der i2clcd nichts gelöscht. Der Fehler kommt schon im ori.
Hallo Tommy
auf dem Modul habe ich 3x GND eingestellt, das müsste die x040 sein. In
der Software sehe ich keine Einstellung, warum auch immer. Ist mir klar,
das ohne nicht geht.
Da werde ich heute nochmal alles durchsuchen. Es muss doch einen Hinweis
dazu geben. Ein Tut dazu ist schon fast ein Wunder. nicht gleich
übertreiben.
achim
Achim Seeger schrieb:> Es scheint aus dieser Stelle zu kommen:
Nochmal, ganz langsam geschrieben:
Wo hast du "OFF" definiert? In i2clcd.c oder i2clcd.h muss ein
#define OFF ...
stehen.
Und genauso muss irgendwo ein
#define LCD_BL_PIN ...
zu finden sein.
Wenn das nicht definiert ist, hat der Compiler keine Chance zu erkennen,
was du von ihm verlangst.
Die von dir nicht gefundene I2C-Adresse des Boards findest du, indem du
nach
#define LCD_I2C_DEVICE ...
suchst.
"grep" ist eine gute Hilfe bei diesen Suchereien in mehreren Dateien.
Dr. Gurgel hilft dir bei dem Thema bestimmt.
Anbei auch die h datei. Ich habe das nicht definiert. Habe die beiden
Datein so übernommen. Sollen so gehen.
Ganz zu Anfang habe ich das nachfolgende auskommentiert, ist aber wider
raus
1
intbacklight=OFF;
Was du sagst ist aber eine gute Idee (ganz vergessen). Werde alles
durchsuchen, jetzt auch besonders die h datei. muss ja irgendwo stehen.
achim
Achim Seeger schrieb:> Anbei auch die h datei
Dann habe ich eine traurige Nachricht für dich: Die Header Datei passt
nicht 100% zur C-Datei. Da haben die Autoren etwas geschlampt.
Kontrolliere, ob deine Verdrahtung zu den Definitionen in der Header
Datei passt. Und dann benamse den LCD_EMPTY_PIN um in LCD_BL_PIN -
sofern du überhaupt Backlight verwendest.
Dann noch
#define ON 1
#define OFF 0
einfügen und es sollte funktionieren.
Allerdings sind die Chancen gut, dass noch mehr Macken in dem Beispiel
sind.
Für die Zukunft: Poste dein komplettes Projekt mit allen Dateien. Dann
geht es deutlich schneller.
Danke dir Georg. Werde es so machen und über den Erfolg berichten.
Eigentlich hatte ich alles drin. Leider besteht die Sache bisher erst
aus wenigen Sachen. Mache es aber so.
achim
Hab da was komisches gefunden.
Diese Datein scheint es 2 mal zu geben. Beide mit der gleichen
Versionsnummer. Unterschied ist gerade das backlight bzw die Abfrage
dazu.
Das werde ich mal testen
achim
Achim Seeger schrieb:> Diese Datein scheint es 2 mal zu geben
Dr. Gurgel wirft bei der Suche nach "i2clcd.h lcd_bl_pin" auf Anhieb die
richtige Datei aus. Und da sieht man, dass deutlich mehr als nur dieser
eine Pin geändert wurde. Du musst es schon an deine Hardware anpassen.
AVR Studio zeugt keine Fehler mehr. Comp geht, jetzt geht es an Hardware
Ansonsten habe ich gesehen, eine Version stammt von 2006 un die andere
von 2012
achim
damit bekomme ich einen blinkenden Strich oben links. Die beiden Datein
vom i2clcd habe ich auch mit reingestellt. Diese unterscheiden sich zu
meinen vorher genutzten Datein. Nach dem anderen Hinweis habe ich RS und
EN (P4 und P7) getauscht. In der Datei i2clcd.h die Angaben geändert
Leider ohne Erfolg bzw, das gleiche.
Was mache ich wieder falsch?
achim
@ Achim Seeger (achims)
> Schaltbild_Poll.docx (50 KB, 1 Downloads)>Sorry, hab ich vberschlafen, kommt sofort
In der Tat, du hast das Thema Bildformate verschlafen.
@ Achim Seeger (achims)
> Bild_Poll.png> 100 KB, 1 Downloads>noch mal anders
Immer noch Mist. Wie schafft man es, so einen verwaschenen Screenshot zu
machen?
Gängige Displays haben den E Anschluss an Pin 6. Wenn du das i2clcd.h so
verwendet hast, wie du es gepostet hast, hast du es aber richtig und nur
dein Beitrag von 18:30 ist falsch.
Und lass bei Gelegenheit die Masseverbindungen an 7-8-9-10 des Displays
weg. Sie müssen nicht stören, sind aber überflüssig.
Werde das mit 6 überprüfen. Von der Bauart kann ich 7,8,9,10 nicht frei
lassen, sind als Lötstützpunkte ausgeführt.
Habe mir die Anleitung vom Display genommen, da ist was, muss es testen.
achim
Ja, das ist der Schaltplan des Pollin Adapter.
Es blinkt das erste Zeichen oben links, abwechselnd ein Strich unten
oder das volle Quadrat (5x7). Der Aufbau entspricht genau dem Bild auf
der Beschreibung von Pollin.
Sorry, was du da schreibst
i2c von Pollin schrieb:> #define LCD_EMPTY_PIN 7> #define LCD_E_PIN 6
verstehe ich nicht. Muss ich da was ändern oder ..?
achim