Forum: Compiler & IDEs C/C++ LCD Lib für Arduino 2560 Board mit LCD Shield 1602


von Andi C. (piece)


Lesenswert?

Hi,

hab jetzt ein paar Stunden damit verbracht das Forum und Google zu 
durchstöbern, aber ich finde einfach nicht was ich brauche oder kann die 
Funde nicht erfolgreich nutzen. Hoffe hier kann mir jemand weiterhelfen.

Ich bin noch ziemlich am Anfang mit all dem Zeug. Was ich bisher habe:

Sainsmart ATMega 2560 Board -> 
http://www.ebay.de/itm/SainSmart-Mega2560-1602-LCD-Keypad-Prototype-Shield-Kit-For-Arduino-ATMEL-ATMEGA-/320878489546?pt=Wissenschaftliche_Ger%C3%A4te&hash=item4ab5d92fca#ht_7521wt_1397
Atmel Studio 6 lauffähig und kann damit Code aufs Board laden

Da ich in C/C++ programmieren möchte und nicht in der Arduino Sprache, 
suche ich eine library zur Ansteuerung des LCD. Auf 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung 
steht viel Interessantes, allerding schaffe ich den Code nicht zum 
laufen zu bringen. Gleiches gilt für die 
http://homepage.hispeed.ch/peterfleury/avr-software.html#libs lib. In 
beiden muss man einige Anpassungen machen. Soweit ich das verstehe die 
Taktfrequenz des Chips (16000000 Hz) und den Port des LCD setzen. Da hab 
ich PORTA bis PORTH durchprobiert, aber nix geht davon. Habe ich die 
falsche library? Bin für jeden Hinweis dankbar.

von Karl H. (kbuchegg)


Lesenswert?

Andi C. schrieb:

> Da hab
> ich PORTA bis PORTH durchprobiert,

Was heißt: du hast durchprobiert?

Das LCD ist an einem Port physikalisch angeschlossen und den benutzt du.

Wenn du weg von den Arduino Libs willst, dann musst du dich daran 
gewöhnen dass es da eben keine standardisierten Anschlüsse gibt und die 
Libs das wissen und benutzen. Du bist dafür verantwortlich, dass das 
alles korrekt eingestellt wird.

Schaltplan raus und Leitungen verfolgen. Welche Leitung vom LCD geht zu 
welchem µC-Pin? Dann wird das auch was.

von PittyJ (Gast)


Lesenswert?

>>Da ich in C/C++ programmieren möchte und nicht in der Arduino Sprache,

Und ich dachte immer, der Compiler hinter dem Arduino wäre ein avr-g++.
Jedenfalls gingen alle C++ Klassen, die ich probiert habe. Habe ich wohl 
Glück gehabt.


Da muss man den Jungs von Arduino schon gratulieren, dass ihre eigene 
Sprache wohl auch eine Untermenge von C++ versteht.

von Andi C. (piece)


Lesenswert?

okay, ich versuche das mal zu verstehen ...

auf http://arduino.cc/en/Hacking/PinMapping2560 ist das mapping der pins 
von controller zum board nachzulesen. wenn ich nun auf die lcd platine 
schaue, dann ist das lcd mit den pins 0 bis 13 vom board verbunden, 
welche wieder rum recht chaotisch mit dem chip verbunden sind. d.h. in 
nicht aufeinanderfolgenden ports/pins. ich muss also nun für den 
folgenden code bereich genau herausfinden welcher port/pin der richtige 
ist für jede zeile hier, richtig?
1
#define LCD_PORT         PORTH        /**< port for the LCD lines   */
2
#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
3
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
4
#define LCD_DATA2_PORT   LCD_PORT     /**< port for 4bit data bit 2 */
5
#define LCD_DATA3_PORT   LCD_PORT     /**< port for 4bit data bit 3 */
6
#define LCD_DATA0_PIN    0            /**< pin for 4bit data bit 0  */
7
#define LCD_DATA1_PIN    1            /**< pin for 4bit data bit 1  */
8
#define LCD_DATA2_PIN    2            /**< pin for 4bit data bit 2  */
9
#define LCD_DATA3_PIN    3            /**< pin for 4bit data bit 3  */
10
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
11
#define LCD_RS_PIN       4            /**< pin  for RS line         */
12
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
13
#define LCD_RW_PIN       5            /**< pin  for RW line         */
14
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
15
#define LCD_E_PIN        6            /**< pin  for Enable line     */

es fällt mir schon schwer zu glauben, dass das nirgends im forum oder 
bei google zu finden ist. so exotisch ist die hardware und mein problem 
doch gar nicht hätt ich gedacht.

aber grundsätzlich bin ich also richtig mit der library, die ich da 
nutzen möchte?

von Karl H. (kbuchegg)


Lesenswert?

Andi C. schrieb:

> es fällt mir schon schwer zu glauben, dass das nirgends im forum oder
> bei google zu finden ist.

Stell dir mal vor. Es gibt doch tatsächlich Dinge, die hat man schneller 
selber gemacht, als danach gegoggelt.

PS: wenn man faul ist, dann nimmt man ein Multimeter mit 
Durchgangsprüfer. Eine Messstrippe auf den ersten 'Datenpin' vom LCD 
(also nicht gerade die Versorgungspins), und mit der anderen Messstrippe 
fährt man am µC alle Pins durch. Bei irgendeinem Pin schlägt der 
Durchgangsprüfer an und piepst. Pinnummer abzählen, im Datenblatt des µC 
nachsehen, wie seine Bezeichnung ist und auf einem Blatt Papier 
notieren, welcher Pin vom µC zu welchem Pin vom LCD führt. Das dauert 
für einen einzelnen Pin keine 30 Sekunden. Die 7 relevanten 
LCD-Verbdindungen hat man in weniger als 10 Minuten durchgeklingelt.

Im lcd.h entsprechend eintragen und wenn man keinen Fehler gemacht hat - 
dann muss das funktionieren.

von Andi C. (piece)


Lesenswert?

was mache ich denn mit dem LCD_RW_PORT und LCD_RW_PIN? die hängen am 
GND.

von Karl H. (kbuchegg)


Lesenswert?

Andi C. schrieb:
> was mache ich denn mit dem LCD_RW_PORT und LCD_RW_PIN? die hängen am
> GND.

Ganz einfach.
Dann kannst du die Fleury Lib (erst mal) nicht benutzen. Denn die ist 
darauf ausgelegt, an diese Pins ranzukommen.

Also entweder umschreiben (was relativ leicht möglich ist) oder eine 
andere LCD Lib benutzen.

von Uwe (de0508)


Angehängte Dateien:

Lesenswert?

Hallo !

Peter Dannegger (peda), hat eine eigene LCD Bibliothek geschrieben.

*Basisdownload*:

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=102296

Ich habe sie mir etwas angepasst und alles nochmal als ZIP Datei 
gespeichert.

Damit kannst Du Erfolgreich sein - viel Spaß damit !

.

von Andi C. (piece)


Lesenswert?

vielen dank. endlich mal code, der funktioniert!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.