Loading…

Mein neuer 15 Stunden Android 7 Kurs

Lern Android 7 und Google Firebase
jetzt Loslegen

I2C LCD Display mit Arduino Nano v3

Der Arduino Nano v3 ist ein kleiner Microcontroller. Eigentlich super für die meisten Projekte hat diese kleine Platine alles was man so braucht.
Wenn man jetzt aber ein Display anschließen will braucht man bei den einfachen Displays eine menge Pins.


Allerdings braucht man auch noch Pins für vieles andere in einem Projekt. = Problem.
Dafür gibt es aber eine schöne Lösung.
Den I2C Bus.

 

Was ist ein (I2C) Bus?

Erst mal möchte ich kurz erklären was überhaupt ein Bussystem ist.
Ein Bussystem ist ein System das Daten zwischen verschiedenen Geräten hin und her schickt.
Als Beispiel will ich den USB Anschluss eines Computers nehmen.
Ein USB Anschluss hat mehrere Geräte.
USB bedeutet Universal Serial Bus. Also viele Geräte die seriell aneinander angeschlossen sind.
Seriell, also hintereinander.
D.h. auch wenn man die Tastatur und die Maus an verschiedene Anschlüsse steckt, hängen sie aus Sichtweise des Computers alle hintereinander, an denselben vier Anschlüssen.
Genauso ein Bussystem gibt es auch für Arduino.

I2C Pins bei Arduino Nano

Auf manchen Boards gibt es die dafür zwei notwendigen Anschlüsse (SLA und SLC) als separate Pins.
Bei dem Arduino Board das ich verwende, diesen Namo Clone, gibt es sie nicht separat ausgewiesen. Das trift auf die Meisten Nano Bords zu die ich kenne.
Die Pins A4 und A5 haben jedoch die benötigten Funktionen.

 

  • SDA = A4
  • SCL  = A5

um bei dem Beispiel mit dem Display zu bleiben, verwende ich ein Display das direkt die notwendige Schnittstelle mitbringt.

Ich verwende dieses LCD Display das ein kleines I2C Modul mitbringt, das ich an das Display direct Löten kann.

Nachdem man nun zusätzlich zu den beiden Pins Plus und Minus verbunden hat, hierbei auf den 5 V und den GND Anschluss achten, ist man auch schon fertig.

 

 

Jetzt kann man das Display programmieren.

Dieser kleine Code den ich im Internet gefunden habe steuert jetzt das Display.
Er macht nicht viel außer dass er in der Setup Methode das Display initialisiert, über das Objekt LCD, einen Test in beide Zeilen des Displays schreibt und in der loop Methode die Hintergrundbeleuchtung an und wieder ausschaltet mit jeweils 1 Sekunde Pause.

Und schon funktioniert das Display und kann in anderen Projekten verwendet werden.

Die interessante Zeile in diesem Code ist: LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);
den genauen Aufbau dieser Zeile erfährt man aus dem Datenblatt oder dem Handbuch des Displays. 0X27 ist die Adresse des Displays.

Man kann es sich jetzt so vorstellen, der Arduino erzeugt ein Datenpaket.
Jedes Datenpaket hat einen Empfänger.
Wenn jetzt der Bus frei ist sendet ein Gerät ein Datenpaket durch das Netzwerk (den Bus) und jedes andere Gerät empfängt dieses Datenpaket auch. Jetzt ist das Datenpaket für alle Geräte uninteressant außer unser Display.

Nehmen wir mal an wir haben noch 100 weitere Geräte an diesem Bus Angeschlossen, wie beispielsweise noch ein weiteres Display und noch ein Sensor. Mit den Displayinformationen kann keines der anderen Geräte etwas anfangen. Was soll ein Temperatursensor schon mit dem Text für ein Display anfangen. Von Hersteller wurde die Adresse 0x27 als Adresse des Displays festgesetzt. D.h. jedes Gerät das die Adresse 0x27 hat, wird diesen Text anzeigen. (Man kann die Adresse auch verändern, um zwei Displays zu unterscheiden. Zumindest manche Displays haben diese Option).

An die Adresse (0x27) sendet der Arduino mithilfe der Bibliotheken (Noch mehr Programmcode der uns hilft eine Aufgabe zu erfüllen) , in diesem Fall LiquidCrystal_I2C, den Text den das Display anzeigen soll.

Tipp: Wenn man nicht weiß welche Adresse ein Gerät hat, findet man nach einer Googlesuche nach I2C Scanner schnell Beispielcode mit dem man seine Geräte absuchen kann, um die Adressen herauszufinden.

Also werden die Geräte innerhalb des I2C Bussystems  durch deren individuelle Adresse unterschieden.

In dem Code kann man auch sehen wie man auf unterschiedliche Zeilen oder Zeichen innerhalb des Bussystems kommt.