Das vierte Türchen

In den vergangenen drei Tagen haben Sie Grundkenntnisse zum Thema Aufbau einer kleinen Schaltung, Löten und Inbetriebnahme eines Micro Controllers bekommen. Was bisher die Weihnachtswichtel nicht herausgegeben haben, war Peripherie für den Micro Controller. Dies wollen die Weihnachtswichtel heute korrigieren und haben gleich 6 Bauteile hinter Tür vier versteckt.

Was ist drin hinter Türchen Nummer 4

Hinter Türchen Nummer vier befinden sich:

  • 3 x HD44780 1602 LCD Modul Display (grüne Beleuchtung)
  • 3 x I2C-Schnittstellenadapter zum Anlöten

Zusätzlich benötigen Sie für die Arduino IDE die Programm-Bibliotheken LiquidCrystal und/oder LiquidCrystal_I2C. Wie das geht, zeigen wir u.a. hier

Generell haben Sie drei verschiedene Möglichkeiten, das Display mit einem Micro Controller zu verbinden, siehe Abbildung 1.

 Abbildung 1: HD44780 1602 LCD Modul Displays Anschlussvarianten

Die erste Variante, im Bild oben, ist die Ursprungsvariante mit angelöteter Stiftleiste (nicht im Lieferumfang). Dies bedeutet aber auch, dass auf einem Micro Controller mindestens 6 Pins belegt werden, gleich mehr dazu.

Die andere Variante ist mit dem angelöteten I2C-Schnittstellenadapter, der wahlweise vorne oder hinten angelötet werden kann. Achten Sie darauf, dass die vier Stiftleisten zum Anschluss an den Micro Controller immer nach außen zeigen, da sonst das HD44780 1602 LCD Modul Display zerstört werden kann.

Verbindung klassisch

In der klassischen Variante wird das LCD-Display an insgesamt 6 Pins mit dem Micro Controller verbunden. Abbildung 2 zeigt eine solche Verbindung, wobei das 10kOhm Potentiometer für den Kontrast am Display genutzt wird.

Abbildung 2: LCD-Anschluss paralleles Interface

Der entsprechende Code dazu, siehe Code 1, ist schlank und gibt in zwei Zeilen die Nachricht „LCD-Display without ic2“ aus.

 

//-----------------------------------------------------
// LiquidCrystal parallel interface
// Autor: Joern Weise
// License: GNU GPl 3.0
// Created: 24. Nov 2020
// Update: 24. Nov 2020
//-----------------------------------------------------
#include <LiquidCrystal.h> //include the LiquidCrystal library

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//define LCD pins (RS, E, D4, D5, D6, D7)

void setup() {
  lcd.begin(16, 2); //initializes the LCD and specifies the dimensions
  lcd.home();
  lcd.print(" LCD-Display ");
  lcd.setCursor(0, 1);
  lcd.print(" without i2c ");
}

void loop()
{

}

Code 1: Simple Ausgabe

Die Zählung für die Cursorposition und die Zeile beginnt übrigens jeweils bei 0, also lcd.setCursor(0,1); ist die erste Stelle in der zweiten Zeile.

Verbindung mit I2C-Schnittstellenadapter

Wollen Sie das Display mit I2C betreiben, müssen Sie den I2C-Schnittstellenadapter an das Display löten. Vom Prinzip können Sie, sofern sie über die Adresspads verschiedene Hex-Adressen einstellen, bis zu 8 LCD-Displays betreiben. Tabelle 1 zeigt, wie Sie welchen Adresspad löten müssen, um die gewünschte HEX-Adresse zu bekommen, siehe Abbildung 3. „X“ steht für verbunden, „0“ für nicht verbunden.

Pos

A0

A1

A2

Hex-Adresse

1

X

X

X

0X20

2

0

X

X

0X21

3

X

0

X

0X22

4

0

0

X

0X23

5

X

X

0

0X24

6

0

X

0

0X25

7

X

0

0

0X26

8

0

0

0

0X27

Tabelle 1: Hex-Adresse für Adresspads

 Abbildung 3: Position Adresspads zum Ändern der HEX-Adresse

Die Basisadresse ist also 0x27, alle drei Löt-Brücken sind offen.

Der Anschluss an ein z.B. Mikrocontroller Board kompatibel mit Arduino Uno R3 ist recht simpel, da die I2C-Pins des Micro Controllers verwendet werden, also SDA an A4, SCL an A5, VCC an 5V und GND an GND, siehe Abbildung 3. Hier auf Abbildung 3 auch gut zu erkennen das Poti für den Kontrast des LCD.

Abbildung 4: Anschluss HD44780 1602 LCD mit I2C an Mikrocontroller Board

Code 2 gibt auch auf zwei Zeilen eine Nachricht aus; hier ist es der Satz „LCD-Display with i2c“. Hier verwenden wir die zweite Bibliothek für LiquidCrystal mit dem Zusatz I2C.

//-----------------------------------------------------
// LiquidCrystal I2C connection
// Autor: Joern Weise
// License: GNU GPl 3.0
// Created: 24. Nov 2020
// Update: 24. Nov 2020
//-----------------------------------------------------
#include <Wire.h>
#include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init(); // initialize the lcd
  lcd.backlight(); // backlight on

  lcd.home(); // set cursor to 0,0

  //Write some text
  lcd.print(" LCD-Display ");
  lcd.setCursor(0, 1);
  lcd.print(" with i2c ");

}

void loop()
{

Code 2: Simple Ausgabe via i2c

Natürlich ist auch die Kombination beider Anschlussvarianten möglich, dazu müssen Sie die Schaltung aus Abbildung 2 und Abbildung 4 gleichzeitig aufbauen und natürlich beide Bibliotheken inkludieren.

In diesem Sinne…. 

Abbildung 5: We wish a Merry Christmas

Damit haben Sie Türchen Nummer 4 in Betrieb genommen und noch ein bisschen Hintergrundwissen erhalten. Sie wollen Projektideen, dann hier einige Projekte:

Weitere Projekte für AZ-Delivery von mir, finden Sie unter https://github.com/M3taKn1ght/Blog-Repo.

Das Team von AZ-Delivery wünscht eine schöne Adventszeit!

Specials

3 Kommentare

Yannic Thiel

Yannic Thiel

Guten Tag
Ich bin absoluter Neuling im Bereich Arduino und Co. Ich hangele mich derzeit von Forum zu Forum und kleine, einfach Programme zum laufen zu bekommen. Ich habe aber ein Problem, dass mich seit Freitag Abend beschäftigt und ich keine vernünftige Lösung dazu finde. Wie kann ich Text, der länger als 16 Zeichen ist, durchscrollen lassen?

Bernd Albrecht

Bernd Albrecht

Unser französischer Freund fragt nach Unterschieden bei den Programm-Bibliotheken und wie man die tatsächliche I2C-Adresse eines Bauteils überprüft.
1. Der einzige Unterschied, den ich festgestellt habe, war bei der Initialisierung des Display-Objekts lcd. Wer bei lcd.init() eine Fehlermeldung erhält, sollte es mit lcd.begin() probieren.
2. Zur Überprüfung der I2C-Adresse benötigt man einen Micro Controller, auf dem die Programm-Bibliothek SoftwareSerial funktioniert, z.B. unseren Nano, sowie einen geeigneten Sketch, z.B. aus unserem Blog-Beitrag vom 5. Oktober 2020: https://www.az-delivery.de/en/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/ein-praktischer-und-kostengunstiger-i2c-scanner.
Notre ami français demande quelles sont les différences dans les bibliothèques de programmes et comment vérifier l’adresse I2C réelle d’une pièce.
1. La seule différence que j’ai remarquée était l’initialisation de l’objet d’affichage lcd. Si vous obtenez un message d’erreur avec lcd.init (), vous devriez essayer lcd.begin ().
2. Pour vérifier l’adresse I2C, vous avez besoin d’un microcontrôleur sur lequel fonctionne la bibliothèque de programmes SoftwareSerial, par ex. notre nano, ainsi qu’un croquis approprié, par ex. de notre article de blog du 5 octobre 2020: https://www.az-delivery.de/en/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/ein-praktischer-und-kostengunstiger-i2c-scanner.

Reitzer

Reitzer

Bonjour, merci pour votre partage!
Je démarre dans le “hobby” Arduino et il est difficile pour moi de savoir si toute les bibliothèques “LiquidCrystal_I2C.h” sont équivalentes (en fonction des auteurs) ou non, comment les choisir et ou les trouver…
D’autre part je ne suis pas sur de comprendre… L’adresse du LCD (ici 0×27) est un paramètre ‘physique’ du composant, je me trompe? si oui comment puis-je vérifier si l’adresse est effectivement correcte?
Merci a l’avance pour votre aide,
et bonne fête a vous aussi!

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert