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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.