Varta Batterien


Google-Suche auf MEINE-SCHALTUNG.de :





Dauerkalender


Stoppuhr
mit Raspberry Pi und TM1637


In dem folgenden Versuch konstruieren wir einen einfachen Küchentimer mit Stopp-Uhr-Funktion. Auf dem Timer kann man mit zwei Tasten Minuten und Sekunden einstellen. Mit einer dritten Taste kann der Countdown gestartet oder gestoppt werden. Sobald die eingestellte Zeit abgelaufen ist, soll eine Leuchtdiode angehen und diese Tatsache visuell signalisieren. Die Koordination aller Komponenten dieser kleinen Schaltung übernimmt ein Python-Programm, das auf dem Raspberry Pi läuft. Der aktuelle Stand des Zählers wird auf einem 4-Digit-7-Segment-Display (vier einzelne 7-Segment-Anzeigen in einem Gehäuse) angezeigt. Das Anzeige-Modul, um das es hier geht, beinhaltet außer der 7-Segment-Anzeige auch den Treiberchip TM1637 mit Umgebungselektronik.

7-Segment-Display mit TM1637 (Frontansicht)

4Digit-7Segmentanzeige mit TM1637 (Frontansicht)

TM1637

TM1637

Ohne weitere Unterstützung wären zahlreiche Verbindungen notwendig, um die 28 LEDs des Anzeige-Moduls anzusteuern. Dank des Treibers TM1637 wird die benötigte Anzahl der Verbindungen auf lediglich zwei reduziert. Die zwei Leitungen kann man an beliebige GPIOs des Raspberry Pi anschließen. Zwei weitere Anschlüsse des Anzeige-Moduls betreffen die Spannungsversorgung. Der Treiberchip, der mit Raspberry Pi kommuniziert, übernimmt im Alleingang die Steuerung aller Segmente der gesamten Anzeige. Das Anzeige-Modul kann mit einer Spannung von 3,3 V bis 5 V eingespeist werden. Der Stromverbrauch pendelt zwischen 30 mA bis 80 mA. Seine Betriebstemperatur erstreckt sich von -10 °C bis 80 °C. Die Anzeige leuchtet rot.
Die Verschaltung aller Komponente erfolgt nach folgendem Plan.

Schaltplan

Schaltplan

Die Testschaltung auf einem Steckbrett könnte dann so aussehen:

Testschaltung

Stoppuhr-Testschaltung

Um das Anzeige-Modul anzusprechen, wird eine weitere Bibliothek in das Python-Programm eingebunden. Sie übernimmt vollständig die Kommunikation mit dem Treiber TM1637 und stellt uns einige Befehle für die Steuerung der Anzeige zur Verfügung. Es handelt sich um die Bibliothek "raspberrypi-python-tm1637“. Die Dokumentation für diese Erweiterung findet man im Internet unter https://github.com/depklyon/raspberrypi-tm1637 .
Sie kann in wenigen Schritten heruntergeladen und installiert werden. Hierzu wird das LXTerminal verwendet:

 
        # Falls noch nicht installiert 
$ sudo apt install git –y 
        # falls noch nicht installiert 
$ sudo pip3 install wiringpi
        # Bibliothek herunterladen 
$ git clone https://github.com/depklyon/raspberrypi-python-tm1637.git
        # Verzeichnis wechseln 
$ cd raspberry-python-tm1637
        # installieren 
$ sudo python3 setup.py install                    
        

In dem Python-Programm werden zwei Tasten auf eventuelle Eingaben untersucht. Die erste Taste (S1) ist für die Minuten, die zweite (S2) für die Sekunden zuständig. Wird eine dieser Tasten betätigt, wird der entsprechende Zähler um 1 erhöht. Mit der dritten Taste (S3) wird das Herunterzählen (Countdown) eingeleitet. Das Herunterzählen erfolgt im Sekunden-Takt. Erreicht der Zähler den Wert 0, wird der Vorgang gestoppt und die Leuchtdiode, um diese Tatsache zu signalisieren, leuchtet auf. Das Programm kann bei Bedarf um weitere nützliche Funktionen wie Dekrementieren, Reset oder Anhalten, auf die hier verzichtet wird, erweitert werden.

Das Programm


# ------------------------------------------------------------
# Stoppuhr
# 4Digit-7Segmenanzeige mit TM1637
# Raspberry Pi 3B, Python 3
# ------------------------------------------------------------
                              # Bibliotheken 
import tm1637
import time
import RPi.GPIO as GPIO

GPIO.setwarnings(False)       # Fehlermeldung abschalten 

GPIO.setmode (GPIO.BOARD)     # Nummerierung J8-Header 
                              # Eingang Taste S1 (Minuten) 
GPIO.setup (36, GPIO.IN, pull_up_down=GPIO.PUD_UP)
                              # Eingang Taste S2 (Sekunden) 
GPIO.setup (38, GPIO.IN, pull_up_down=GPIO.PUD_UP)
                              # Eingang Taste S3 (Start) 
GPIO.setup (40, GPIO.IN, pull_up_down=GPIO.PUD_UP)
                              # Ausgang für Leuchtdiode 
GPIO.setup (7, GPIO.OUT)
                              # Pins für Kommunikation 
                              # GPIO17 = Pin 11 (CLK) 
                              # GPIO27 = Pin 13 (DIO) 
tm = tm1637.TM1637(clk=17, dio=27)

Minuten = 0                   # Minuten-Zähler 
Sekunden = 0                  # Sekunden Zähler 
Start = False                 # Status 
Zähler_Ist =  0               # Aktueller Zählerstand in Sekunden 
Zeit_Merker = 0

# Hauptprogramm 
# ---------------------------------------------------- 

GPIO.output(7, GPIO.LOW)
while True:
                              # Eingabe von Minuten 
    if GPIO.input(36) == GPIO.LOW:
        Minuten += 1
        GPIO.output(7, GPIO.LOW)
                              # Eingabe von Sekunden 
    if GPIO.input(38) == GPIO.LOW:
        Sekunden += 1
        GPIO.output(7, GPIO.LOW)
                              # Countdown start 
    if GPIO.input(40) == GPIO.LOW:
        Start = True
        Zähler_Ist = Minuten * 60 + Sekunden
        Zeit_Merker = time.time()

                              # Countdown läuft 
    if Start and time.time() (groesser) Zeit_Merker + 1:
        Zeit_Merker = time.time()
        Zähler_Ist -= 1
        Sekunden = Zähler_Ist
        Minuten = 0
        if Zähler_Ist (groesser) 59:
            Minuten = int(Zähler_Ist / 60)
        if Minuten (groesser) 0:
            Sekunden = Zähler_Ist - Minuten * 60

                             # Countdown abgelaufen 
                             # LED an 
    if Start and Zähler_Ist == 0:
        Start = False
        GPIO.output(7,GPIO.HIGH)
                             # Anzeige 
    tm.numbers (Minuten, Sekunden)
    time.sleep (0.3)         # Kurze Unterbrechung 
# ---------------------------------------------------- 

        

Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz