Raspberry Pi Zero 2 W – 4fach 7 Segmentanzeige ansteuern

In diesem Beitrag zeige ich dir, wie du eine 4fach 7 Segmentanzeige am Raspberry Pi Zero 2 W anschließt und programmierst.

4fach 7 Segmentanzeige am Raspberry Pi Zero 2 W
4fach 7 Segmentanzeige am Raspberry Pi Zero 2 W

Wie man eine einfache 7 Segmentanzeige am Pi Zero programmiert habe ich dir bereits im Beitrag Raspberry Pi Zero 2 W – 7 Segmentanzeige ansteuern gezeigt. Hier soll es nun darum gehen, wie es mit einer 4fach Segmentanzeige funktioniert.

Die verwendete 4fach 7 Segmentanzeige habe ich bereits für den Arduino UNO im Beitrag Arduino Lektion 89: 4fach Segmentanzeige TM1636 / TM1637 vorgestellt, jedoch ist die Programmierung am Raspberry Pi Zero etwas anders und daher möchte ich dir dieses hier zeigen.

Benötigte Ressourcen für das Projekt

Für den Nachbau des Projektes benötigst du:

Anschluss der 4fach 7 Segmentanzeige an den Pi Zero

Für den Aufbau benötigst du lediglich das Display, den Pi Zero sowie vier Breadboardkabel.

4fach 7 Segmentanzeige am Raspberry Pi Zero
4fach 7 Segmentanzeige am Raspberry Pi Zero

Die verwendete Segmentanzeige verfügt über 4 Pins welche auf der Rückseite
(CLK, DIO, VCC und GND) beschriftet sind.

4 Digit 7 Segment Display
4 Digit 7 Segment Display
4fach 7 SegmentanzeigeRaspberry Pi Zero 2 W
CLKGPIO 1
DIOGPIO 0
VCC5V
GNDGND
Anschluss der 4fach 7 Segmentanzeige an den Pi Zero 2 W

Wenn du die farbige 40 Pin Header Leiste für den Raspberry Pi Zero & Zero 2 W verwendest, dann sind die beiden blauen Pins zu verwenden.

farbiger 40 Pin Header für Raspberry Pi
Farbiger 40 Pin Header für Raspberry Pi

Programmieren der 4fach 7 Segmentanzeige auf dem Raspberry Pi Zero 2 W in Python3

Für die Programmierung der 4fach 7 Segmentanzeige mit I2C Schnittstelle verwende ich das Modul TM1637 welches du vom GitHub Repository depklyon / raspberrypi-tm1637 als ZIP-Datei herunterladen.

Auf unserem Raspberry Pi Zero müssen wir zur Verwendung in unserem späteren Code dieses Modul mit dem Paketmanager „pip3“ installieren.

$ pip3 install raspberrypi-tm1637

Danach ist die Installation / Einrichtung abgeschlossen und wir können mit dem ersten Programm starten.

Einfaches Beispiel

Hier nun ein einfaches Beispiel wie man die aktuelle Uhrzeit auf der 4fach 7 Segmentanzeige anzeigen lassen kann.

from time import sleep, localtime
from tm1637 import TM1637

DIO = 0
CLK = 1

tm = TM1637(CLK, DIO)
tm.brightness(1)

show_colon = True

try:
   while True:
      time = localtime()
      show_colon = not show_colon
      tm.numbers(time.tm_hour, time.tm_min, show_colon)
      sleep(1)
except KeyboardInterrupt:
        print("Programm beendet.");

Im nachfolgenden Video wird die aktuelle Uhrzeit auf der 4fach 7 Segmentanzeige angezeigt und der Doppelpunkt als Trenner zwischen Stunde & Minute blinkt dabei im Sekundentakt.

Wenn man das Programm auf der Konsole / im Terminal mit Strg+C abbricht, so wird die Zeichenkette „Programm beendet.“ ausgegeben. Wir fangen somit den auftretenden Error ab.

Zahlen & Buchstaben auf dem Display anzeigen

Wir haben auf der Segmentanzeige nur bedingte Möglichkeiten Buchstaben anzeigen zu lassen. Zahlen sind i.O. aber Buchstaben habe so ihre Probleme.

from time import sleep, localtime
from tm1637 import TM1637

DIO = 0
CLK = 1

DISPLAY_DIGITS = 4

tm = TM1637(CLK, DIO)
tm.brightness(5)

msg = "1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ"

try:
   for i in range(len(msg)):
      display_msg = msg[i:i+4]
      tm.show(display_msg)
      sleep(0.5)
      if i+4 == len(msg):
         tm.show("END ")
         break;
except KeyboardInterrupt:
   print("Programm beendet.");

In dem Video erkennt man recht gut, dass die Zahlen sauber angezeigt werden können, aber die Buchstaben entweder in Groß-/Kleinschrift oder gar nicht angezeigt werden können.

Hier gibt es auch ein anderes Segmentdisplay welches für die Anzeige von Buchstaben besser geeignet ist, es ist die 14 Segmentanzeige (aber dazu in einem separaten Beitrag mehr).

14 Segmentanzeige
14 Segmentanzeige

Kommentar hinterlassen

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