C/C++ LCD Lib für Arduino 2560 Board mit LCD Shield 1602

OP #3154031
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.
#3154201
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.
Gast #3154213
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.
OP #3154319
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?
#3154347
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren