Raspberry Pi Pico: 4-fach 7-Segment-Anzeige programmieren (TM1637)

Die Bezeichnung „TM1637“ wird oft für eine 4-fach 7-Segment-Anzeige mit Doppelpunkt verwendet. Diese Anzeige kann zur Darstellung von Ganzzahlen, Uhrzeiten und auch Text verwendet werden. Aufgrund der 4 Stellen sind die Wertebereiche von Zahlen und die Textlänge begrenzt.
Die TM1637-Anzeige wird per I2C angesteuert. Dazu sind insgesamt 4 Pins herausgeführt. Zur softwareseitigen Ansteuerung und Programmierung der 7-Segment-Anzeige ist eine externe Bibliothek für MicroPython erforderlich.

Wir wollen hier ausprobieren, wie wir den TM1637 hardwareseitig und softwareseitig ansteuern, und was wir alles mit dem TM1637 machen können. Dazu experimentieren wir im folgenden Programmcode mit Text, Zahlen und die Uhrzeit.

Aufbau und Bauteile

Raspberry Pi Pico: 4-fach 7-Segment-Anzeige programmieren (TM1637)

Raspberry Pi Pico TM1637
Pin 38 GND GND
Pin 36 VCC +3,3V VCC
Pin 27 GPIO 21 (I2C SCL) CLK
Pin 26 GPIO 20 (I2C SDA) DIO

MicroPython-Bibliothek für TM1637

Zur Ansteuerung der 7-Segment-Anzeige TM1637 ist eine externe Bibliothek erforderlich, die heruntergeladen und mit dem Dateinamen „tm1637.py“ auf dem Raspberry Pi Pico gespeichert werden muss.

Programmcode

Im Programmcode werden die Bibliotheken geladen und dann die 4-fache 7-Segment-Anzeige TM1637 initialisiert. Anschließend werden verschiedene sinnvolle Möglichkeiten der Darstellung beispielhaft realisiert:

  • 7-Segment-Test: "88:88" (alle Segmente leuchten)
  • Helligkeit einstellen (von dunkler nach heller)
  • Anzeige löschen
  • Ganzzahlen anzeigen / Wertebereich: -999 bis 9999
  • Darstellung bei Überschreitung des Wertebereichs
  • Verschiedene Texte anzeigen (ohne Unterscheidung von Groß- und Kleinschreibung)
  • Laufschrift: Hallo Welt
  • Aktuelle Uhrzeit
  • Temperatur mit der Einheit °C
  • Countdown von 9999 bis 0
  • Countdown von 01:00 bis 00:00

Damit die Anzeige richtig interpretiert werden kann, wird zusätzlich auf der Kommandozeile angezeigt, was der Wert auf der Anzeige sein soll.

Die Variable „pause“ gibt in Sekunden an, wie lange zwischen den unterschiedlichen Darstellungen gewartet werden soll.

# Bibliotheken laden
from machine import Pin, RTC, ADC, Timer
import utime as time
import tm1637

# Display initialisieren
display = tm1637.TM1637(clk=Pin(21), dio=Pin(20))

# Pause zwischen den unterschiedlichen Darstellungen
pause = 3

print('7-Segment-Test: "88:88" (alle Segmente leuchten)')
display.write([127, 255, 127, 127])

# Pause
time.sleep(pause)

print('Helligkeit einstellen (von dunkler nach heller)')
for i in range (0, 7+1):
    display.brightness(i)
    time.sleep(0.5)

# Pause
time.sleep(pause)

print('Anzeige löchen')
display.write([0, 0, 0, 0])

# Pause
time.sleep(pause)

print('Ganzzahlen anzeigen / Wertebereich: -999 bis 9999')
display.number(1)
time.sleep(1)
display.number(12)
time.sleep(1)
display.number(123)
time.sleep(1)
display.number(1234)
time.sleep(1)
print('Überschreitung des Wertebereichs')
display.number(12345)
time.sleep(2)
display.number(-1234)
time.sleep(2)
display.number(-123)
time.sleep(1)
display.number(-12)
time.sleep(1)
display.number(-1)

# Pause
time.sleep(pause)

print('Text anzeigen')
display.show('help')
time.sleep(2)
display.show('cool')
time.sleep(2)
display.show('  ja')
time.sleep(2)
display.show('nein')
time.sleep(2)
display.show('    ')

# Pause
time.sleep(pause)

print('Laufschrift: Hallo Welt') # Default: 4 FPS = 250
display.scroll('Hallo Welt', 250)

# Pause
time.sleep(pause)

# Echtzeituhr im Mikrocontroller initialisieren
rtc = RTC()
# Datum und Uhrzeit lesen
datetime = rtc.datetime()
print('Aktuelle Uhrzeit: %02d:%02d' % (datetime[4], datetime[5]))
display.numbers(datetime[4], datetime[5])

# Pause
time.sleep(pause)

# Initialisierung des ADC4
sensor = ADC(4)
# Temperatur messen
value = sensor.read_u16()
temp = int(27 - ( (value * 3.3 / 65535) - 0.706 ) / 0.001721)
print('Temperatur: %s°C' % temp) # Wertebereich -9 bis 99
display.temperature(temp)

# Pause
time.sleep(pause)

print('Countdown von 9999 bis 0')
for count in range (9999, -1, -1):
    display.number(count)
    time.sleep(0.00001)

# Pause
time.sleep(pause)

print('Countdown von 01:00 bis 00:00')
counter = 60
points = 1
timeValue = time.localtime(counter)
display.numbers(timeValue[4], timeValue[5], points)
time.sleep(1)

# Funktion: Countdown herunterzählen
def countdown(value):
    global counter
    global points
    # Blinkender Doppelpunkt im Wechsel
    if points == 0: points = 1
    else: points = 0
    # Countdown reduzieren
    counter -= 1
    # Countdown ist abgelaufen (0 = Ende)
    if counter == 0:
        clock.deinit()
        print('Countdown Ende')
    # Countdown in Minuten und Sekunden umrechnen und anzeigen
    timeValue = time.localtime(counter)
    display.numbers(timeValue[4], timeValue[5], points)

# Initialisierung Timer für Countdown
clock = Timer(freq=1, mode=Timer.PERIODIC, callback=countdown)

Im Programmcode wurden die wichtigsten Methoden zur Darstellung von Werten beispielhaft verwendet. Es gibt aber noch weitaus mehr, die vielleicht nicht so häufig verwendet werden. Bei der Nutzung des TM1637 sollte man einen Blick in die Dokumentation der hier verwendeten MicroPython-Bibliothek werfen.

Anwendungen

Neben der Anwendung als Status-Anzeige eignet sich die TM1637-Anzeige zur Darstellung von Uhrzeiten und Zeitangaben.

Weitere verwandte Themen:

Teilen:

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das "Elektronik-Set Pico Edition" ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)

Zum PicoTalk Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Set Pico Edition
Elektronik-Set Pico Edition

Hardware-nahes Programmieren mit dem Raspberry Pi Pico

Das "Elektronik-Set Pico Edition" ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen