News-Ticker

Wie die Zeilen eines LCD-Displays mit I2C-Interface mit Text gefüllt werden können, wird im vorangestellten Kapitel erläutert. Als Erweiterung dazu soll hier nun ein Weg aufgezeigt werden, wie längere Texte als „Ticker“ (Buchstabe für Buchstabe) zur Darstellung gebracht werden können.

Aufbau:

Gelb: A5 – Grün: A4 – Schwarz: GND – Rot: 5V

Code: 

#include <LiquidCrystal_I2C.h> // Bibliothek
LiquidCrystal_I2C lcd(0x27, 16, 2); // Art des Displays

char text[] = "Neu.. Neu.. Neu"; // Eine Textvariable definieren

void setup() {
  lcd.begin(); // LCD aktivieren
}
void loop() {
  unsigned int i = 0; // Variable definieren
  lcd.setCursor(0, 0); // Cursor an den Anfang der ersten Displayzeile setzen
  while (text[i] != '\0') // Text bis zum Ende ausgeben
  {
     lcd.print(text[i]); // Obigen Text auf dem Display ausgeben
     delay(300); // Tempo der Ausgabe
     i++; // Ausgabe buchstabenweise
  }
  lcd.clear(); // Inhalt des Displays löschen
}

Der obige Code setzt – wie beim Tippen – auf dem Display die einzelnen Buchstaben zu dem Text „Neu.. Neu.. Neu“ zusammen. Dann wird die Zeile gelöscht und der Vorgang neu gestartet.

Statt des Neustarts kann die Routine auf eine neue Methode (Anweisungsblock) weitergeleitet und so neuer Text zur Anzeige gebracht werden.

Programmiertechnisch kann das so gelöst werden, dass die Methode „void loop“ kopiert und unter dem obigen Code eingefügt wird. Der neue Anweisungsblock wird in „void loop2″ umbenannt und der neue Text über <char text[] = “ “ ;> eingefügt. Die Weiterleitung gelingt mit dem Befehl <loop2();> am Ende des Startloops.

Und so sieht der erweiterte Code dann aus:

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

char text[] = "Neu.. Neu.. Neu";

void setup() {
  lcd.begin();
}
void loop() {
  unsigned int i = 0;
  lcd.setCursor(0, 0);
  while (text[i] != '\0')
  {
     lcd.print(text[i]);
     delay(300);
     i++;
  }
  lcd.clear();
  loop2();
}
void loop2() {
char text[] = "Bei mint-unt.de";
  unsigned int i = 0;
  lcd.setCursor(0, 0);
  while (text[i] != '\0')
  {
     lcd.print(text[i]);
     delay(300);
     i++;
  }
  lcd.clear();
}

Es wird immer nur eine Displayzeile (16 Zeichen einschließlich der Leerstellen) gefüllt, sodass für längere Texte eine ansehnliche Zahl von Loops generiert werden muss. EinTicker wie beispielsweise „Neu.. Neu.. Neu | Bei mint-unt.de | findet ihr als | Geschenktipp ei- | ne Box, die beim | Oeffnen ein Mu- | sikstueck spielt“ benötigt sieben Loops. Da die meiste Arbeit über Copy & Paste gelöst werden kann, sollte das keine besondere Hürde darstellen.

Viel Spaß beim Ausprobieren!