Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Sensormodule und Visuino - Kapitel 2

In diesem Kapitel werden angesprochen

 

  • Oled SSD1306 I2C Modul
  • LDR-Modul 
  • LCD-I2C-Modul
  • I2C Adresse bestimmen

Wie Messwerte oder Text in einem Terminalfenster ausgegeben werden, haben wir an anderer Stelle bereits gezeigt. In diesem Kapitel beschäftigen wir uns mit Oled-Displays (I2C) sowie LCD I2C Displays (2- bzw. 4-zeilig) und den Möglichkeiten, Text, Grafik und Messwerte darüber darzustellen.

OLED Displays sind sehr klein, haben einen geringen Stromverbrauch, liefern ein Schriftbild in leuchtenden Farben und sind sehr preiswert, wenn man auf die SSD1306 I2C OLED Module zurückgreift. Ein solches werde ich in diesem Kapitel benutzen. Als Ard-Board kommt ein Arduino UNO WiFi Rev2 Board zum Einsatz, jedes andere Ard-Board geht ebenso, wenn es über die entsprechenden Hardwarevoraussetzungen (hier: I2C, 5V und 3.3V Versorgung) verfügt.

 

 

 

 

 

 

 

 

Abb. 1 - Oled I2C Display 128x64, zweifarbig, mit vier Anschlüssen: GND, Vcc, SCL, SDA

Übung 1 - Ansteuerung eines Oled-Moduls

 

1 - Pflichtenheft oder Was soll die Schaltung können?

In dieser Übung werden unterschiedliche Texte und grafische Elemente auf dem Display ausgegeben. Einige Möglichkeiten der Darstellung von Text und Grafik auf dem Display werden aufgezeigt.

 

2 - Material

  • Arduino- oder Arduino kompatibles Board (Ard-Board)
  • Steckbrett und Steckdraht (Ma-Ma)
  • Oled Modul SSD1306 I2C
  • Arduino IDE und Visuino auf dem Rechner bereits installiert

 

3 - Anschlussbelegung - Oled-Modul -> Ard-Board

  • GND -> GND
  • Vcc   -> 5V
  • SCL -> SCL
  • SDA -> SDA

 

4 - Blockaufbau im Programm Visuino

 

Schritt 1 - Ard-Board festlegen

Starte das Programm Visuino und wähle in der Kopfzeile des Arduino-Blocks über das Werkzeug-Icon ganz rechts das eingesetzte Ard-Board aus.

 

Schritt 2 - Objekte auswählen

Gib in Filtersuche "oled" ein, wähle das Objekt "SSD1306 I2C" (s. Abb. 2) und ziehe es in die Arbeitsfläche.

 

 

 

 

 

 

Abb. 2 - Objekt-Inspektor mit der Auswahl SSD1306 I2C

Schritt 3 - Blöcke verbinden

Verbinde in der Arbeitsfläche die entsprechenden Punkte des Arduino- mit dem Oled-Block:

  • DisplayOled1 Out -> In I2C Channels
  • Speicher das Programm ab.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 3a - Blockverbindung

Schritt 4 - Display Elemente und Eigenschaften des Oled-Moduls festlegen

  • Öffne mit einem Doppelklick im DisplayOled1 Block das Elemente Fenster (s. Abb.4).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 4 - Elemente-Fenster

Die Typen Fill Screen1, Draw Line1 und Draw Text1 werden durch Doppelklick im rechten Fenster in das linke übertragen.

  • Anklicken eines Elements öffnet sein Eigenschaften Fenster. Für jedes der drei Elemente nimm folgende Änderungen vor:
  • FillScreen1: Color -> tmcwhite
  • DrawLine1: Width -> 128; X -> 0; Y -> 50
  • DrawText1 : Size -> 1; Text -> "Messwert"; X -> 0; Y -> 5
  • Schließe das Elemente-Fenster und öffne das Eigenschaften-Fenster des Objekts DisplayOled (s. Abb. 3b).

 

Eigenschaften-Fenster des Objekts OledDisplay SSD1306

 

 

 

 

 

 

 

 

 

 

 

Abb. 3b - Eigenschaften-Fenster des Objektes OLED Display SSD1306 128x64

Voreingestellt ist die I2C-Adresse 60. Die Höhe (Height = 64) und Weite (Width = 128) des Oled Display ist korrekt angegeben. Als Hintergrundfarbe ist tmcBlack eingestellt..

Schritt 5 - Kompilieren und Hochladen des Programmcodes

  • Öffne unten rechts durch Anklicken des roten Buttons das Arbeitsmenü, klicke den Reiter "Build" und anschließend den Button "Compile/Build and Upload" an. Wenn kein Fehler aufgetreten ist, wird das Programm nach kurzer Zeit in den Controller geladen sein und ein Text auf dem Oled Display ausgegeben.

    Viel Spaß beim Experimentieren!

Abb. 5 - Oled Display

Der Koordinatenursprung des Displays ist oben links (X=0/Y=0)

FillScreen -> tmcWhite zeigt die Werkseinstellung

FillScreen -> tmcBlack ergibt schwarzes Display

DrawLine erscheint an der Stelle (0/50) mit einer Länge von 128 Pixeln.

DrawText erscheint an der Koordinate (1/5) mit "Messwert"

Schritt 6 - Experimentierfeld

  • Verändere die Eigenschaften der drei Elemente nach deiner eigenen Vorstellung und schaue dir die Ergebnisse danach sofort an.Eine Anregung kann das nachfolgende Bild geben.

Übung 2 - LDR, Taster, Rohdatenausgabe auf Oled Display

 

1 - Pflichtenheft oder Was soll die Schaltung können?

In dieser Übung werden ein Taster- und ein LDR-Modul benutzt. Der Taster ist als Ein-/Ausschalter konfiguriert; mit ihm wird die Messwertaufnahme der LDR Daten ein- bzw.  ausgeschaltet. Die Messwerte (Rohdaten) werden auf einem Oled Display angezeigt.

 

2 - Material

  • gleiches Material wie in Übung 1 und zusätzlich
  • 1x Taster-Modul, 1x LDR-Modul

 

3a - Anschlussbelegungen

  • Oled-Modul -> Ard Board
  • GND -> GND, Vcc   -> 5V, SCL -> SCL, SDA -> SDA
  • Taster-Modul -> Ard Board
  • S -> D2, mittlerer Pin -> GND, rechter Pin -> 5V
  • LDR-Modul -> Ard Board
  • S -> A0, mittlerer Pin -> D4, rechter Pin -> GND

 

3b - Schaltungsaufbau

 

 

 

 

 

 

 

 

 

Schaltungsaufbau

In der Abbildung mit einem Oled Display 128x32.

 

4 - Blockaufbau im Programm Visuino

 

Schritt 1 - Ard-Board festlegen

Starte das Programm Visuino und wähle in der Kopfzeile des Arduino-Blocks über das Werkzeug-Icon ganz rechts das eingesetzte Ard-Board aus.

 

Schritt 2 - Objekte auswählen

  • Gib in Filtersuche "oled" ein, wähle das Objekt "SSD1306 I2C" (s. Abb. 2) und ziehe es in die Arbeitsfläche.
  • Gib in Filtersuche "flip" ein, wähle das Objekt "TFlipFlop" (s. Abb. 6) und ziehe es in die Arbeitsfläche.

 

 

 

 

 

 

 

 

 

 

 

Abb. 6 - Suchfenster

Gib "flip" ein und wähle das Toggle-FF aus.

  • Gib in Filtersuche "edge" ein, wähle das Objekt "DetectEdge" (s. Abb. 7) und ziehe es in die Arbeitsfläche.

 

 

 

 

 

 

 

 

Abb. 7 - Suchfenster im Objekt-Inspektor

Gib "edge" ein und wähle "Detect EdgeDigital to Clock"

Schritt 3 - Blöcke verbinden

Verbinde in der Arbeitsfläche die entsprechenden Punkte des Arduino- mit den ausgewählten Objekt-Blöcken:

  • DisplayOled1 Out -> In I2C Channels
  • Digital[2] Out -> In DetectEdge1 Out -> Clock TFlipFlop1 Out -> Digital Digital[4]
  • Digital[14]/Analog[0] Out -> In DisplayOled1 Out -> In I2C Channels
  • Speicher das Programm ab.

Abb. 8 - Visuino Blockdarstellung - Eingesetzte Objekte: Taster, LDR Oled-Display

Schritt 4 - Eigenschaften der ausgewählten Objekte festlegen

  • DisplayOled1 - Wie bereits in Übung 1 gezeigt, muss das Oled-Display so konfiguriert werden, dass die Daten in einer möglichst großen Schrift angezeigt werden.
  • DetectEdge1 - Soweit nicht schon Voreinstellung, sollte OnRising/True aktiviert werden.
  • TFlipFlop1 - keine Einstellung nötig

 

Schritt 5 - Kompilieren und Hochladen des Programmcodes

  • Öffne unten rechts durch Anklicken des roten Buttons das Arbeitsmenü, klicke den Reiter "Build" und anschließend den Button "Compile/Build and Upload" an. Wenn kein Fehler aufgetreten ist, wird das Programm nach kurzer Zeit in den Controller geladen sein und die Messwerte auf dem Oled Display ausgegeben.

    Viel Spaß beim Experimentieren!

Abb. 9

Das Oled-Display zeigt - je nach Stärke des Lichteinfalls - Werte zwischen 0 und 1 an, die auch in Spannungsgrößen umgerechnet werden können..

Der Taster ist hier Umschalter (ein-aus) . Um die Messwerte anzuzeigen, muss er einmal gedrückt werden. Wird er ausgeschaltet, zeigt das Display 0.00 an.

Fazit

Für ein schnelles Austesten einer Schaltung, ohne endlos lange Programmierung, nur um zu sehen, ob die Schaltungstruktur stimmt und die Vorgaben im Pflichtenheft erfüllt sind, ist der Einsatz von Visuino optimal. Der Anwender kümmert sich nur um die Hardware, nicht um die Tücken der Syntax einer Programmiersprache und kann auf diese Weise das Zusammenspiel der Schaltungsobjekte überprüfen, verbessern und neu austesten.

Die Einschränkungen sind z.B. bei einem Oled-Objekt, dass die Möglichkeiten der grafischen Darstellung mit Visuino nur teilweise ausgeschöpft werden können. Für den Ausbildungsbereich (Schule, Hochschule) reicht dieser Ansatz zunächst völlig aus.

Übung 3 - LDR, Taster, Rohdatenausgabe auf  LCD-I2C Display

 

1 - Pflichtenheft oder Was soll die Schaltung können?

In dieser Übung werden ein Taster- und ein LDR-Modul wie in Übung 2 benutzt. Die Messwerte (Rohdaten) werden auf einem LCD-Display angezeigt. Der Versuchsaufbau aus Übung 2 wird übernommen und angepasst.

 

2 - Material

  • gleiches Material wie in Übung 2

 

3a - Anschlussbelegungen

  • wie in Übung 2; das Oled-Display wird ausgetauscht gegen ein LCD-Display I2C.

 

3b - Schaltungsaufbau

Abb. 10 - Blockschaltbild unter Visuino mit einem Ard-Board, einem Taster-Modul, einem LDR-Modul und einem LCD I2C Display.

4 - Blockaufbau im Programm Visuino

  • wie in Übung 2; anstelle des Objekts Oled wird ein LCD I2C Objekt eingefügt (s. Abb. 10).

Schritt 1 - 3

  • Wie in Übung 2 bereits besprochen.

 

Schritt 4 - Eigenschaften der ausgewählten Objekte festlegen

  • Mit einem Doppelklick auf den LCD1 Block öffnet sich das Elemente-Fenster. Füge dort zwei Textfenster ein (s. Abb. 11).
  • Im Eigenschaften-Fenster von LCD I2C werden die folgenden Eintragungen vorgenommen: Columns -> 20 oder 16 , Rows -> 2.
  • Öffne Elements im Eigenschaften-Fenster (+) und übernimm die Daten aus Abb. 13 in TextField1 und TextField2.
  • Die Eigenschaften von DetectEdge1 und TFlipFlop1 werden aus Übung 2 übernommen.

 

 

Abb. 11 - Elemente-Fenster

Ins Eigenschaften-Fenster werden durch Anklicken von Text Field (rechts) zwei Textfelder in Elements übernommen.

 

 

Abb. 12 - Visuino - Properties - Elements

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 13 - Eintragungen in den beiden Elementen TextField1 und TextField2.

Schritt 5 - Kompilieren und Hochladen des Programmcodes

  • Öffne unten rechts durch Anklicken des roten Buttons das Arbeitsmenü, klicke den Reiter "Build" und anschließend den Button "Compile/Build and Upload" an. Wenn kein Fehler aufgetreten ist, wird das Programm nach kurzer Zeit in den Controller geladen sein und die Messwerte auf dem Oled Display ausgegeben.

    Viel Spaß beim Experimentieren!

 

 

 

Abb. 14

Ausgabe der Messwerte auf einem LCD I2C Display

Schritt 6 - Experimentierfeld

  • Verändere den Schaltungsaufbau von Übüung 3 so, dass auf einem 4-zeiligen LCD-Display eine Darstellung, wie in Abb. 15 gezeigt, erfolgt. In den Zeilen 1 und 2 wird erklärender Text ausgegeben, in Zeile 3 der Tasterzustand (0 oder false -> offen, 1 oder true -> geschlossen) und in Zeile 4 der Messwert vom LDR.

 

 

Abb. 15

Der Zustand des Tasters T1 wird als 1 oder true, bzw. 0 oder false in Zeile 2 eines 4-zeiligen LCD I2C Displays angezeigt. Die ermittelten Rohdaten des LDR erscheinen in Zeile 4.

Übung 4 - I2C Adresse bestimmen

 

1 - Pflichtenheft oder Was soll die Schaltung können?

In dieser Übung wird gezeigt, wie man von einem I2C Objekt die I2C Adresse bestimmt.

 

2 - Material

  • gleiches Material wie in Übung 1

 

3 - Anschlussbelegungen

  • wie in Übung 2

 

4 - Blockaufbau im Programm Visuino

  • wie in Übung 1: nur die Schritte 1 - 3

Schritt 4 - Dem I2C Channels Feld des Ard-Boards ein Element I2C Scan1 hinzufügen

  • Wähle das aktuelle Ard-Board in der Arbeitsebene aus und öffne im Properties-Bereich I2C Channels mit einem Klick auf das blaue Rechteck und wiederhole diesen Schritt bei I2C (s. Abb. 16).

 

 

 

 

 

Abb. 16

Im Fenster Eigenschaften des ausgewählten Ard-Blocks werden über I2C Channels - I2C - Elements die Unterfenster geöffnet. Mit einem Klick auf den ... Button öffnet sich das Fenster Elements.

  • Ein Klick auf den Button ... öffnet das Fenster Elements. Ein Doppelklick im rechten Teilfenster auf I2C-Scan kopiert das Element in das linke Teilfenster (s. Abb. 17).

 

 

 

 

Abb. 17

Das Element I2C Scan1 wird in das Fenster Properties des Ard-Boards übernommen.

  • Schließe das Fenster Elements.
  • Gib in Filtersuche "Start" ein (s. Abb. 18) und ziehe das Objekt Start in die Arbeitsfläche. Dieses Objekt erzeugt ein Taktereignis, sobald das Programm ausgeführt wird.

 

 

 

 

 

Abb. 18

Das Objekt Start im Objekt-Inspektor

  • Verbinde Out von Start1 mit Scan von Ard-Board I2C Channels-I2C Scan1
  • Verbinde Address von Ard-Board mit In von Serial Serial[0] (9600)

 

 

 

 

 

 

 

 

 

Abb. 19

Verbindung der Blöcke Ard-Board (hier: Arduino UNO WiFi Rev2) und Start1.

Schritt 5 - Kompilieren und Hochladen des Programmcodes

  • Öffne unten rechts durch Anklicken des roten Buttons das Arbeitsmenü, klicke den Reiter "Build" und anschließend den Button "Compile/Build and Upload" an. Wenn kein Fehler aufgetreten ist, wird das Programm nach kurzer Zeit in den Controller geladen sein und die I2C Adressen im Terminalfenster der Arduino IDE angezeigt..

    Viel Spaß beim Experimentieren!

 

 

Abb. 20 - Im Terminalfenster wird die I2C Adresse eines OLED Displays angezeigt.

240420

Druckversion | Sitemap
© Reinhard Rahner - Gettorf