Wie man Zahlen und Zeichen auf der 4-fach 7-Segmentanzeige mit MicroPython am ESP32 anzeigen kann, zeige ich dir hier in meinem neuen Beitrag. Dafür verwende ich wieder das Rich Shield von Open Smart. Du bekommst diese Anzeige jedoch auch als einzelnen Baustein und das sogar in diversen Farben und sogar mit mehr Segmenten. Auch hier zeige ich dir wieder eine alternative Schaltung, solltest du das genannte Rich Shield nicht haben.
Die 4-fach 7-Segmentanzeige ist ein vielseitiges und weit verbreitetes Bauteil zur Darstellung von Zahlen und einfachen Zeichen. Sie eignet sich hervorragend für zahlreiche Projekte, wie z.B. Zähler, Timer oder Temperaturanzeigen. Obwohl diese Anzeige keinen Doppelpunkt besitzt und daher weniger geeignet für die Darstellung von Uhrzeiten ist, bietet sie dennoch viele Einsatzmöglichkeiten. In diesem Beitrag erkläre ich dir Schritt für Schritt, wie du die Anzeige mit dem ESP32 verbindest, sie programmierst und verschiedene Werte darstellst.
Inhaltsverzeichnis
- Aufbau der 4-fach 7-Segmentanzeige
- Anschluss einer 4-fach 7-Segmentanzeige an den ESP32 D1 R32
- Programmieren der 4-fach 7-Segmentanzeige in MicroPython
- Ausblick
Aufbau der 4-fach 7-Segmentanzeige
Die hier verwendete 4-fach 7-Segmentanzeige verfügt über 4 Stellen, welche jeweils in 7 Segmenten aufgeteilt ist. Mit dieser Anzeige lassen sich einfache Buchstaben und Zahlen anzeigen. Sonderzeichen sind hier leider nur bedingt möglich.
Anschluss einer 4-fach 7-Segmentanzeige an den ESP32 D1 R32
Wenn du, wie erwähnst, das Rich Shield nicht hast, dann bekommst du diese Segmentanzeige auch einzeln, für den kleinen Aufbau benötigst du:
- einen ESP32 D1 R32*,
- ein Micro-USB Datenkabel*,
- eine 4-fach 7-Segmentanzeige*,
- vier Breadboardkabel*, weiblich-männlich, 10 cm
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Programmieren der 4-fach 7-Segmentanzeige in MicroPython
Bevor wir mit der Programmierung der Segmentanzeige beginnen können, müssen wir uns ein Modul herunterladen. Dieses Modul wird für die Ansteuerung und dem Anzeigen von Zahlen und Zeichen benötigt. Du kannst dieses Modul als ZIP-Datei vom GitHub Repository mcauser / micropython-tm1637
Im oben verlinkten YouTube Video zeige ich dir, wie du die Datei tm1637.py aus der ZIP-Datei auf den Mikrocontroller kopierst und verwendest.
Ablegen der Datei tm1637.py auf den Mikrocontroller
Wenn die ZIP-Datei heruntergeladen und entpackt wurde, dann muss die Datei tm1637.py auf den Mikrocontroller in das Verzeichnis lib kopiert werden.
Schritt 1 – Anlegen des Verzeichnisses lib auf dem Mikrocontroller
Im Bereich “MicroPython device” klicken wir mit der rechten Maustaste auf den freien Bereich (1) und wählen aus dem Kontextmenü den Eintrag “Neuer Ordner…” (2). Im neuen Fenster geben wir dann “lib” ein (3) und bestätigen dieses mit der Schaltfläche “OK” (4).
Schritt 2 – Wechsel in das neue Verzeichnis
Du solltest dann zusätzlich den Ordner angezeigt bekommen, in welchem du dich jetzt befindest.
Schritt 3 – kopieren der Datei tm1637.py auf den Mikrocontroller
Aus der entpackten ZIP Datei kopieren wir jetzt die Datei tm1637.py auf den Mikrocontroller, indem wir diese auswählen (5) und aus dem Kontextmenü den Eintrag “Upload nach /lib” (6) wählen.
Wenn dieses abgeschlossen ist, dann kannst du mit einem Klick auf “MicroPython device” zurück auf die oberste Ebene kehren.
Anzeigen von ABCD auf der Segmentanzeige mit MicroPython
Zeigen wir zunächst eine kleine Zeichenfolge auf der Segmentanzeige an.
Über die Funktion brightness kannst die Helligkeit der Anzeige steuern, dabei ist 0 der kleinste und 7 der größt mögliche Wert. Der Funktion show übergibst du eine Zeichenkette, welche dann auf der Segmentanzeige angezeigt wird. Wenn die Zeichenkette mehr als 4 Stellen hat, dann werden die restlichen Zeichen abgeschnitten!
import tm1637 import time from machine import Pin tm = tm1637.TM1637(clk=Pin(5), dio=Pin(23)) tm.brightness(5) tm.show('ABCD')
Da die Segmentanzeige nur bedingte Möglichkeiten hat, Buchstaben und auch Zahlen anzuzeigen, werden einige Buchstaben in Groß und andere in Kleinbuchstaben angezeigt.
Scrolltext auf der Segmentanzeige
Wenn du längeren Text anzeigen möchtest, dann kannst du dieses mit der Funktion scroll machen. Diese erhält wie die Funktion show auch einfach nur die Zeichenkette, jetzt kann diese nun beliebig lang sein und mit dem zweiten optionalen Parameter kannst du die Geschwindigkeit steuern.
import tm1637 import time from machine import Pin tm = tm1637.TM1637(clk=Pin(5), dio=Pin(23)) tm.brightness(5) tm.scroll('ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890', 125)
In diesem kleinen Video zeige ich die Zeichenkette von A bis Z und 1 bis 0 an. Das Intervall habe ich auf 125 Millisekunden gesetzt.
Beispiel 1 – Counter auf der Segmentanzeige mit Tasten
Auf dem Rich Shield von Open Smart sind zwei kleine Taster verbaut, mit diesen können wir jetzt einen kleinen Zähler auf und abwärts zählen lassen. Dabei nutze ich die Taste K1 für das Inkrementieren und K2 für Dekrementieren.
import tm1637 import time from machine import Pin tm = tm1637.TM1637(clk=Pin(5), dio=Pin(23)) tm.brightness(5) tm.show(" ") k1 = Pin(12, Pin.IN, Pin.PULL_UP) k2 = Pin(13, Pin.IN, Pin.PULL_UP) index = 0 def showNumber(): global index tm.show(" ") tm.number(index) while True: if not k1.value(): index += 1 showNumber() time.sleep(0.25) if not k2.value(): index -= 1 showNumber() time.sleep(0.25)
In dem Video siehst du, dass die Zahlen korrekt rechtsbündig ausgerichtet sind, dieses wird durch die Funktion number möglich. Jedoch müssen wir zusätzlich, bevor wir eine neue Zahl anzeigen lassen, das Display leeren.
Beispiel 2 – Sensordaten des DHT11 auf der Segmentanzeige
Im letzten Beitrag hatte ich dir den DHT11 Sensor präsentiert und auch gezeigt, wie dieser programmiert wird. Hier greife ich das kleine Script auf und zeige dir jetzt wie die beiden Sensorwerte (Temperatur & rel. Luftfeuchtigkeit) auf dem kleinen Display angezeigt werden.
Wenn du die Schaltung ohne dem Rich Shield aufbauen möchtest, dann findest du nachfolgend die kleine Schaltung im Detail.
import tm1637 import dht import time from machine import Pin tm = tm1637.TM1637(clk=Pin(5), dio=Pin(23)) d = dht.DHT11(Pin(19, Pin.IN)) tm.brightness(5) tm.show(" ") k1 = Pin(12, Pin.IN, Pin.PULL_UP) k2 = Pin(13, Pin.IN, Pin.PULL_UP) index = 0 def showTemperature(): tm.show(" ") d.measure() msg = "T " + str(d.temperature()) tm.show(msg) def showHumidity(): tm.show(" ") d.measure() msg = "H " + str(d.humidity()) tm.show(msg) while True: if not k1.value(): showTemperature() time.sleep(0.25) if not k2.value(): showHumidity() time.sleep(0.25)
Ich verwende in dem Programm die Funktion show, daher habe ich lediglich 4 Stellen zur Anzeige, aber das reicht locker für diese Daten aus.
Ausblick
Im nächsten Beitrag möchte ich dir zeigen, wie du eine Infrarotfernbedienung auslesen und damit verschiedene Aktionen ausführen kannst. Auch hier bietet das Shield ein paar sehr coole Projekte an, welche wir recht einfach nachprogrammieren können.