Arduino Lektion 24: LCD 4×20 Modul mit I2C Schnittstelle

In diesem Tutorial möchte das LCD Display 4×20 Beschreiben. Die Bezeichnung 4×20 bezieht sich in diesem Fall auf 4 Zeilen mit je 20 Zeichen.
Da ich im Tutorial „Arduino Lektion 7: LCD Display ansteuern“ bereits ein Display beschrieben habe möchte hier auf die Besonderheit eingehen.
Es sind nunmehr 4 PINs am IIC I2C Modul zu belegen (statt 16 PINs) damit mit dem Display kommuniziert werden kann. Das ist besonders für größere Projekte sinnvoll.

LCD Modul 4×20 am Arduino UNO

Es ist in dem Bild ein kleiner Drehpotentiometer (blau) zu erkennen, über diesen lässt sich die Helligkeit des Displays regeln.

LCD 4×20 Display (hinten)

Das Display ist bereits in einen Rahmen geklebt für ein anderes Projekt.

Technische Daten

  • Format: 4 Zeilen zu je 20 Zeichen
  • Maße (in mm):
    • Platine: 98x60x5
    • Display: 98x40x5
  • Stromversorgung: 5V
  • Umgebungstemperatur: -20°C bis 70°C

Anschlussplan

Das Display verfügt über 4 PINs welche auf dem IIC I2C Modul wiefolgt beschrieben sind : GND,VCC,SDA (Data Line) und SCL (Clock Line).

Display Arduino UNO
 GND  GND
VCC 5V
SDA A4
 SCL A5

Quellcode

benötigte Bibliothek

Für die Kommunikation mit dem I2C Modul wird die LiquidCrystal Bibliothek benötigt. Diese Bibliothek kann unter https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads heruntergeladen werden. Wie man eine externe Bibliothek in die Arduino IDE einbindet habe ich im Tutorial „Arduino IDE, Einbinden einer Bibliothek“ ausführlich beschrieben.

Arduino Sketch

Wer das Tutorial „Arduino Lektion 7: LCD Display ansteuern“ kennt, wird hier nicht weiter überrascht werden denn die Funktionen sind geblieben.

// Einbinden Wire Bibliothek
#include <Wire.h>
// Einbinden der LiquidCrystal Bibliothek für das I2C Modul des Displays.
#include <LiquidCrystal_I2C.h> 

// Es gibt min. 2 Adressen welche ein Display verwenden kann: 0x3F oder 0x27.
// Setzt die PINs des I2C Moduls für die Kommunikation mit dem Display.
// Adresse: 0x27
// EN: 2
// RW; 1
// RS: 0
// D4: 4
// D5: 5
// D6: 6
// D7: 7
// BL: 3
// BLPOL: POSITIVE
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 
 
 
void setup()
{
  // initialisieren des Displays mit 20 Zeichen und 4 Zeilen
  lcd.begin(20,4);
  // setzten des Cursors auf die erste Zeile (gebinnend bei 0) und dem ersten Zeichen
  lcd.setCursor ( 0, 0 );
  // setzten eines Textes
  lcd.print("LCD 20x4 Modul");  
  // setzten des Cursors auf die zweite Zeile (1) und dem ersten Zeichen (0)
  lcd.setCursor ( 0, 1 );        
  // setzten eines Textes
  lcd.print ("01234567890123456789");   
  // setzten des Cursors auf die dritte Zeile (2) und dem ersten Zeichen (0)
  lcd.setCursor ( 0, 2 );
  // setzten eines Textes
  lcd.print ("!@$%&/()=?");     
  // setzten des Cursors auf die vierte Zeile (3) und dem ersten Zeichen (0)
  lcd.setCursor ( 0, 3 );
  // setzten eines Textes       
  lcd.print ("www.draeger-it.blog");    
}
 
void loop()
{
 
}

Download

Hier nun der Download des Sketches:

Ausblick

Im nächsten Tutorial möchte ich nun mehrere Sensoren benutzen um das Display mit Daten zu befüllen.

7 Gedanken zu „Arduino Lektion 24: LCD 4×20 Modul mit I2C Schnittstelle

  • April 17, 2018 um 17:05
    Permalink

    Ich habe ein 20×4 Modul und habe den Sketch von oben übernommen.
    Die Andresse habe ich auf 0x3F geändert.
    Bekomme nun die Fehlermeldung: POSITIVE was not declared in this scope.
    Wo kann mein Fehler sitzen? ….im Voraus schon vielen Dank.

    Antwort
  • Juni 5, 2018 um 20:53
    Permalink

    Hallo Stefan,
    Du hattest Recht !!! Es lag an „NewliquidCrystal 1.3.4“ Ich hatte eine andere Version.
    Vielen Dank!

    Antwort
  • Oktober 9, 2018 um 07:26
    Permalink

    Ich habe ebenfalls den Sketch von oben übernommen. Leider bekomme ich auch den Fehler „POSITIVE was not declared in this scope.“

    Ich habe es mit der v1.3.4. und mit der Version 1.3.5 versucht. Danach habe ich den Link im Kommentar ausprobiert (welcher ja direkt zum Download der Version 1.3.4 führt).

    Das Einbinden der Blibliothek habe ich wie folgt vorgenommen:
    1. Die Zip-Datein heruntergeladen.
    2. In der Arduino IDE auf Sketch->Bibliothek einbinden->.ZIP-Bibliothehinzufügen->“NewliquidCrystal_1.3.4″
    3. Den Sketch von oben Markiert und in der IDE eingefügt
    4. Auf Hochladen geklickt

    Wo liegt der Fehler?

    Antwort
    • Oktober 9, 2018 um 08:02
      Permalink

      Hallo Manuel,

      du findest unter dem Link https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/ mehrere Bibliotheken. Die Version „LiquidCrystal_V1.2.1“ enthält die Headerdatei „LCD.h“ welche wiederum das ENUM mit dem gesuchten Wert „POSITIVE“ enthält. Ich werde mir dieses heute abend einmal genauer anschauen und dann ggf. das Tutorial anpassen.

      Gruß,

      Stefan Draeger

      Antwort
  • Dezember 28, 2018 um 00:25
    Permalink

    Hallo Stefan,

    ich habe die NewLiquidDisplay Lib 1.3.4 eingebunden. Beim kompilieren erscheint diese Fehlermeldung:
    C:\Users\Thomas\Documents\Arduino\libraries\NewliquidCrystal/SoftI2CMaster.h:503:46: error: ‚SDA_PIN‘ was not declared in this scope
    [SDADDR] „I“ (SDA_DDR), [SDAPIN] „I“ (SDA_PIN), [SDAIN] „I“ (SDA_IN)
    ^
    exit status 1
    Fehler beim Kompilieren für das Board Arduino Nano.

    Hast Du eine Idee was ich verkehrt mache?

    Vielen Dank und viele Grüße
    Werner

    Antwort
  • Dezember 28, 2018 um 10:35
    Permalink

    Hallo Stefan,
    mein gestern in einem Kommentar geschildertes Problem hat sich erledigt. Ich kenne zwar die Ursache nicht aber die Fehlermeldung verschwand, nachdem ich den gesamten Code kopiert und als Ganzes in den sonst leeren Arduiono IDE Editor eingefügt habe. Vorher hatte ich nur den Inhalt vor void sowie innerhalb des Void Funktionsblocks {} in die Vorgabe im Editor kopiert. Vermutlich lief da irgendetwas schief.
    Nervigerweise kamen beim kompletten kopieren noch irgendwelche nicht sichtbaren Sonderzeichen mit, die dann beim kompilieren Fehlermeldungen erzeugt haben. Das ließ sich schließlich verhindern, in dem ich oben nicht auf „Download“ geklickt habe sondern in der Menuzeile des Codefensters oben auf „copy“.

    Das kompilieren geht jetzt also. Das übertragen des Codes auf den Nano Clone jedoch nicht. Aber das ist ein ganz anderes Problem. Danke für Deine LCD Lektion!

    Viele Grüße
    Werner

    Antwort

Schreibe einen Kommentar

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