DIY Arduino – Display programmieren in C/C++

von Holger Fritzsch
Der nachfolgende Artikel stellt analog zum Beitrag "DIY Arduino – Display programmieren in Bascom" die alternative Programmierung unter der Arduino IDE in C/C++ vor.
Nachdem man den DIY-Einfachprogrammer, hoffentlich mit Erfolg nachgebaut hat, möchte man vielleicht auch die Daten einmal visuell darstellen. Es ist Ziel dieses Beitrags die Anschaltung des LCD der Fa. Pollin unter der Bascom- IDE darzustellen. Es handelt sich um ein 8*2 LCD der Fa. Hitachi, das dem Industriestandard nach mit einem HD4470/KS077 Prozessor bestückt ist. Es beinhaltet den ASCI- Zeichensatz. Wir wollen, wie oben erwähnt, es im 4- Bit- Mode ansteuern und unter der Arduino IDE in C/C++ nutzen.
HD47780 kompatibeles Display am DIY Arduino
Zusätzliche Hardware
Das LCD hat einen Flex- Kabelanschluß und einen zugehörigen Connector. Um es mit dem Steckboard zu kontaktieren bieten sich einzelnen Litzen eines IDE-HDD-Kabels an.
Zusätzlich verwendete Hardware
• LCD-Modul C0802-04 Bestellnr.120 622 (0,95€)
• Steckboard SYB 46 Bestellnr. 510 369 (1,95€)
Beschaltung und Verdrahtung
Das LCD hat einen Flex- Kabelanschluß und einen zugehörigen Connector. Um es mit dem Steckboard zu kontaktieren bieten sich einzelnen Litzen eines IDE-HDD-Kabels an.
Rückseite des LCD
Beschaltung
Der Kontrastpoti liegt zwischen Plus und Minus, der Schleifer wird an Pin 3 (LCD) angeschlossen. Der Werte für den Poti kann 1 bis 10kOhm betragen. Ist der Wert zu hoch ist die Kontrasteinstellung "auf den Punkt" kritischer.
Steckboard mit gesetzten Brücken, LM78L05, Pullup-Widerstand 10kOhm
Testprogramm in C/C++
/*Der Anschluß des LCD an ATMEGA328p / Arduino
* LCD RS an PB2 = pin 16 / 10   * LCD D4 an PB4 = pin 18 / 12
* LCD E  an PB3 = pin 17 / 11   * LCD D5 an PB5 = pin 19 / 13 
* LCD pin 2 = +5V               * LCD D6 an PB0 = pin 14 /  8 
* LCD R/W an Masse (pin 5)      * LCD D7 an PB1 = pin 15 /  9
* LCD pin 1 = Masse             * LCD pin 3 Kontrastreglung s.Text
*/ 

// LCD- Bibliothek einladen         
#include <LiquidCrystal.h>          
// Initialisierung der einzelnen Pin
LiquidCrystal lcd(10, 11, 12, 13, 8, 9);
  
void setup() {
    // LCD definieren, es sind jeweils 8 Zeichen in 2 Zeilen möglich
    lcd.begin(8, 2);
}

void loop() {
    // Startposition des Cursors, bedeutet " erstes Zeichen in erster Zeile"
    lcd.setCursor(0, 0);
    lcd.print("LCD mit");
    // Startposition des Cursors, bedeutet " erstes Zeichen in zweiter Zeile"
    lcd.setCursor(0, 1);
    lcd.print("Arduino");
}

Abschließende Erläuterungen
Das LCD hat, je nach Stellung des Kontrastreglers, einen Stromverbrauch von:
• pin3 an +UB 5V → 317µA
• pin3 an Masse → 820µA, dann hat man „Klötzchen“ auf dem Display
Das LCD eignet sich also für „Low Power“- Anwendungen. Im Zusammenwirken mit dem „Arduino- IC- AT328p“ stellt es die Ideallösung in puncto Stromverbrauch dar. Es ist nutzbar mit der Bascom- IDE, die schnelle Lösungen bei geringer Einarbeitung verspricht. Leider hat die DEMO- Version eine Programmgrenze von 4kB. Mehr geht nur mit der Kaufversion (ca. 75- €). Da ist die Arduino- IDE mit bis ca. 30kB (2KB nutzt der Bootloader) in dieser Hinsicht komfortabler. Hier ist der Einarbeitungsaufwand höher. Allerdings hat Arduino im Grafikbereich, wie im kürzlich im Franzis Verlag erschienenen, „Maker Kit – Grafikdisplay programmiern“ von T. Baum, durch einige Programmbibliotheken enorm an Attraktivität gewonnen. So daß es mit der Einarbeitung gut voran geht. Auf jeden Fall haben beide IDE 's ihre Berechtigung. Es ist also abhängig vom persönlichen Geschmack. Die Hardware für den schnellen Wechsel zwischen den Welten liegt vor.
Download und Links: