Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

MicroPython mit ESP32: Zahlen und Zeichen auf der 4-fach 7-Segmentanzeige darstellen

Posted on 1. Juli 202430. Juni 2024 by Stefan Draeger

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.

MicroPython & ESP32 - Zahlen und Zeichen auf der 4-fach 7-Segmentanzeige darstellen
Dieses Video auf YouTube ansehen.

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
    • Ablegen der Datei tm1637.py auf den Mikrocontroller
      • Schritt 1 – Anlegen des Verzeichnisses lib auf dem Mikrocontroller
      • Schritt 2 – Wechsel in das neue Verzeichnis
      • Schritt 3 – kopieren der Datei tm1637.py auf den Mikrocontroller
    • Anzeigen von ABCD auf der Segmentanzeige mit MicroPython
    • Scrolltext auf der Segmentanzeige
    • Beispiel 1 – Counter auf der Segmentanzeige mit Tasten
    • Beispiel 2 – Sensordaten des DHT11 auf der Segmentanzeige
  • 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.

4fach 7-Segmentanzeige am Rich Shield von Open Smart
4fach 7-Segmentanzeige am Rich Shield von Open Smart

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
4fach 7-Segmentanzeige am ESP32 D1 R32
4fach 7-Segmentanzeige am ESP32 D1 R32

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!

ESP32 D1 R32 mit 4-fach 7-Segmentanzeige TM1637
ESP32 D1 R32 mit 4-fach 7-Segmentanzeige TM1637

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

Nun müssen wir in das Verzeichnis „lib“ wechseln. Ein einfacher Klick reicht hier nicht!

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.

4fach 7-Segmentanzeige am Rich Shield von Open Smart
4fach 7-Segmentanzeige am Rich Shield von Open Smart

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.

Schaltung - ESP32 mit DHT11 sensor,m 2 Taster und einer 4digit 7 Segmentanzeige
Schaltung – ESP32 mit DHT11 sensor,m 2 Taster und einer 4digit 7 Segmentanzeige
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.

ESP32 D1 R32, Rich Shield + IR-Fernbedienung
ESP32 D1 R32, Rich Shield + IR-Fernbedienung

Schreibe einen Kommentar Antworten abbrechen

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

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}