Steuerpult Rittal


Google-Suche auf MEINE-SCHALTUNG.de :





Dauerkalender


- Das Geheimnis des Kreises -
Textausgabe mit LCD 20x4 (I2C) und Arduino Nano


In der folgenden Schaltung treten das 20x4 Display und Arduino Nano als Hauptakteure auf. Es soll auf dem Display ein Text angezeigt werden. Das Display könnte man über seine digitalen Eingänge D0-D7 direkt ansteuern, doch das würde einen großen Verlust an digitalen Ein-bzw. Ausgängen bei Arduino bedeuten. Um diese für andere Zwecke freizuhalten, soll in diesem Beispiel das Display über I2C-Bus angesteuert werden. Damit werden lediglich zwei Anschlüsse des Arduino Nano in Anspruch genommen.

Ein Beispiel für direkte Ansteuerung des Displays. Hier kann man erkennen, dass sechs Verbindungen zwischen Display und Arduino hergestellt werden müssen.

Display direkt angesteuert


LCD 20x4

LCD 20x4

Das Display kann allerdings ohne bestimmte Vorbereitungsmaßnahmen nicht über I2C-Bus mit Außenwelt kommunizieren. Hier muss ein „Zwischenstück“ her, das eine solche Kommunikation ermöglicht. Die Rolle des Dolmetschers übernimmt in dem Beispiel der Displaytreiber PCF8574T. Der IC-Baustein wurde extra für solche Anwendungen entwickelt und eignet sich sehr gut für die gestellte Aufgabe. Der PCF8574T Expander kommuniziert selbst über I2C-Bus, übersetzt die ankommenden Kommandos und setzt entsprechend acht seiner Ausgänge auf Low oder High. Diese müssen mit den Anschlüssen D0-D7 des Displays verbunden werden. Der Baustein benötigt ein wenig Umgebungselektronik, einige Verbindungen, Widerstände etc. (Datenblatt), doch dieser Aufwand ist nicht immer zwingend notwendig. Wir umgehen das Problem und setzen in der Schaltung ein fertiges Adapter mit dem IC, das für die I2C-Kommunikation und Datenaustausch mit dem Display bereits vorbereitet ist, ein. Das fertige Interface-Modul mit dem Mikrochip PCF8574T wird einfach an das Display angelötet. Die fertigen Module mit PCF8574T werden im Handel breit angeboten und kosten nicht selten weniger als der Selbstbau.
Das Duo sieht dann wie folgt aus:

Display mit I2C-Modul

LCD-Display mit angelötetem I2C-Modul

Die kleine Interface-Platine stellt uns zwei Pins (SCL, SDA) für die I2C-Kommunikation und zwei für Spannungsversorgung zur Verfügung. Sie beinhaltet einen Poti, mit dem der Kontrast der Anzeige eingestellt werden kann. Mit einem Jumper kann die Hintergrundbeleuchtung ein- bzw. ausgeschaltet werden.

Arduino Nano

Arduino Nano

Nachdem alle Komponenten zusammengestellt wurden, kann man mit der Verdrahtung beginnen. Es sind nur wenige Verbindungen notwendig. In diesem Beispiel wird Arduino mit 9 VDC eingespeist. Das Display wird mit 5 VDC versorgt. Die Verschaltung erfolgt nach folgendem Plan:

Schaltplan

Schaltplan

Testschaltung

Testschaltung

Das Programm

Im Programm werden wir folgenden Text:

„Der Kreis
ist eine geometrische Figur,
bei der an allen Ecken und Enden gespart wurde.“

von unten nach oben scrollen. Um die I2C-Kommunikation mit dem Display herzustellen verwenden wir die Bibliothek „LiquidCrystal_I2C.h“.
Die Bibliothek kann über das Menü „Bibliotheken verwalten“ installiert werden. Infos im Internet findet man unter: https://github.com/johnrickman/LiquidCrystal_I2C.
Im Programm wird die Länge der einzelnen Wörter ermittelt und so die X-Position jedes Wortes innerhalb einer Zeile bestimmt. Zwei verschachtelte Schleifen sorgen für das Scrollen des Textes von unten nach oben.

// --------------------------------------------------------
// Textausgabe LCD-Display 20x4
// Arduino Nano, IDE 1.8.12
// --------------------------------------------------------

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // Adresse, Zeichen, Zeilen

String Satz [] = { " ", " ", " ",
               "Der", "Kreis", "ist", "eine",
               "geometrische", "Figur,", "bei",
               "der", "an", "allen", "Ecken",
               "und", "Enden", "gespart", "wurde.", 
               " ", " ", " ", " " };

void setup() {
  lcd.init();                      // Display initialisieren 
  lcd.backlight();                 // Hintergrundbeleuchtung
  lcd.setCursor(3,1);              // Cursor Position
  lcd.print("Das Geheimnis");      // Displayausgabe
  lcd.setCursor(4,2);
  lcd.print("des Kreises");
  delay (3000);
  lcd.clear();
  lcd.setCursor(4,1);              
  lcd.print("Textausgabe");        
  lcd.setCursor(2,2);
  lcd.print("ueber I2C - Bus");
  delay (3000);}


void loop()
{
  for (int i=0; i<18; i++) {
    lcd.clear();
    for (int j=0; j<4; j++) {
      String Wort = Satz [i+j];
      int Laenge = Wort.length();
      int XPos = (20 - Laenge) / 2;    
      lcd.setCursor(XPos,j);
      lcd.print(Wort);
    }
    delay(1000);
  }
}
// ----------------------------------------------------------
        

Kurzvideo

Kurzvideo: Das Geheimnis des Kreises


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz