1602A LC Display am Arduino

Die Post war da, und die erste Wundertüte meiner Fernost-eBay Einkäufe ist angekommen (Das ging mal echt schnell!). Im Umschlag war ein LC Display mit zwei Zeilen a 16 Zeichen und einer blauen Hintergrundbeleuchtung. Zum Debuggen und überhaupt um zu sehen, was in meinen Programmen (oder Arduino-neudeutsch: Sketches) so vor sich geht, habe ich gerne eine Anzeigemöglichkeit direkt an der Hardware (und nicht erst über ein serielles Terminal ;-).

1602A Hello WorldDas Display heißt ganz schmucklos 1602A und kommt auf einer Controllerplatine daher, auf der ein HD44780 (Hitachi) die Ansteuerung übernimmt. Dankenswerterweise gibt’s eine Arduino Library (LiquidCrystal.h), die die tatsächliche Kommunikation mit dem Displaycontroller kapselt. Bevor das Display aufs Breadboard gesteckt werden kann, muss noch eine Reihe Pins angelötet werden.

Mein Beipspielcode liest zwei Analogwerte (Potis) über Analog0 und Analog1 ein, rechnet den Wertebereich des AD Wandlers (0…1023) in 0° bis 180° um (damit könnte man ja jetzt ein Servo…) und gibt die Ergebnisse auf dem Display aus. Die Texte „Pin0“ und „Pin1“ werden nur einmal geschrieben, in der Folge wird der Cursor immer dahinter platziert um die Werte auf die Anzeige zu bringen.

//Beschaltung
//LCD RS - Pin 12
//LCD Enable  - Pin 13
//LCD D4 - Pin 8
//LCD D5 - Pin 7
//LCD D6 - Pin 4
//LCD D7 - Pin 2
//LCD R/W - Masse
//Poti zwischen +5V und Masse, Mittelabgriff an LCD VO pin
//LED Anode über Vorwiderstand (Bauartbedingt) an +5V
//LED Kathode an Minus
//VSS an Masse
//VDD an +5V

#include <LiquidCrystal.h>

int analogPin0 = 0;
int analogPin1 = 1;
float val0 = 0;
float val1 = 0;
int val0i = 0;
int val1i = 0;

LiquidCrystal lcd(12, 13, 8, 7, 4, 2);

void setup()
{
  //LCD Größe einstellen
  lcd.begin(16, 2);
  //LCD Ausgabe
  lcd.setCursor(0, 0);
  lcd.print("Pin0");
  lcd.setCursor(0, 1);
  lcd.print("Pin1");
}

void loop()
{
  lcd.setCursor(5, 0);
  val0 = analogRead(analogPin0);    // read the input pin
  val0i = int((val0/1023)*180);
  lcd.print(val0i);
  lcd.print("   ");

  lcd.setCursor(5, 1);
  val1 = analogRead(analogPin1);    // read the input pin
  val1i = int((val1/1023)*180);
  lcd.print(val1i);
  lcd.print("   ");
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.