Timer in Micropython mit RPi Pico und TM1637 ändern

OP #7580427
Lesenswert?

Ich habe einen lauffähigen Timer auf dem Raspberry Pi Pico mit einem TM1637 Modul (7-Segment LED, 4 stellig) lauffähig, der die Minuten und Sekunden herunterzählt.

Nun möchte ich den Code so ändern, dass es ein reiner Stunden-Timer wird, der z.B. 2345 Stunden zu jeder vollen Stunde rückwärts bis auf Null zählt. Der Pico ist ohne WiFi, also würde ich gern die gewünschte Stundenanzahl im Code vor dem Start festlegen.

Da ich ein völliger Newbie in MicroPython bin, frage ich, ob mir jemand den Code umschreiben kann, um meine gewünschte Funktion zu bekommen.

Hier der derzeitige Code für den Minuten-Sekunden-Timer:

1
# Bibliotheken laden
2
from machine import Pin, Timer
3
import time
4
import tm1637
5

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

9
counter = 1200
10
points = 0
11
timeValue = time.localtime(counter)
12
display.numbers(timeValue[4], timeValue[5])
13

14
# Funktion: Countdown herunterzählen
15
def countdown(value):
16
    global counter
17
   
18
    # Countdown reduzieren
19
    counter -= 1
20
    # Countdown ist abgelaufen (0 = Ende)
21
    if counter == 0:
22
        clock.deinit()
23
    
24
    # Countdown in Minuten und Sekunden umrechnen und anzeigen
25
    timeValue = time.localtime(counter)
26
    display.numbers(timeValue[4], timeValue[5])
27

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

Ich freue mich über jede Hilfe, und danke schon einmal...

#7580442
Lesenswert?

Jens schrieb:

Da ich ein völliger Newbie in MicroPython bin,

Völlig egal, in welcher Programmiersprache. Die ist nur ein Werkzeug zur Umsetzung der Problemslösung.

Offensichtlich wird deine Callack "countdown()" ein Mal pro Sekunde aufgerufen. Entweder setzt die deinen Timer so, dass er alle 60 Sekunden die Callback aufruft, oder du ählste die Aufrufe innerhalb der Callback und wenn sie 60 Mal aufgerufen wurde, änderst du den Minutenzähler.

#7580471
Lesenswert?

Jens schrieb:

Da ich ein völliger Newbie in MicroPython bin, frage ich, ob mir jemand den Code umschreiben kann, um meine gewünschte Funktion zu bekommen.

Ist das Internet kaputt oder bist nur nur zu bequem Dich mit der Sache auseinanderzusetzen? Auch ein Newbie kann sich auf den Hosenboden setzen und ein Buch und diverse Onlinetutorials durcharbeiten, um die Lösung zu finden. So schwierig ist das nicht. In der Suchmaschine Deiner Wahl "phyton Timer(freq=1, mode=Timer.PERIODIC, callback=countdown)" eingegeben fördert viele Ergebnisse zu Tage, mit denen sich Dein Problem lösen läßt. Gleich der erste Fund bei mir (https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwi066-s5NyDAxXL9AIHHe-zC1IQFnoECAwQAQ&url=https%3A%2F%2Fwww.elektronik-kompendium.de%2Fsites%2Fraspberry-pi%2F2712051.htm&usg=AOvVaw1mXpvQy_uQcyGika5Fv_Si&opi=89978449) erklärt eigentlich schon alles. Versuche erst mal zu verstehen was Dein vorhandener Quelltext macht. Es ist nicht so schwer zu verstehen. Dann noch den von mir genannten Link durcharbeiten und das Problem sollte sich lösen lassen. Es braucht natürlich ein bischen Zeit, Du wirst es nicht in 5 Minuten lösen. Rechne mal mit ein paar Tagen.

Wenn Dir hier jemand einfach die Lösung vorkaut lernst Du nichts und dann stehst in 2 Tagen mit dem nächsten Problem auf der Matte.

#7580511
Lesenswert?

Hans schrieb:

Wenn Dir hier jemand einfach die Lösung vorkaut lernst Du nichts und dann stehst in 2 Tagen mit dem nächsten Problem auf der Matte.

Lernen ist ja sooooooo zwanzigstes Jahrhundert, also mal ehrlich…

Wir sind nun im einundzwanzigsten Jahrhundert, da ist die wieselflinke Benutzung von Ctrl-C und Ctrl-V deutlich wichtiger. ;-)

Ach ja: Und natürlich der fast schon religiös anmutende Glaube an DeppGPT.

Persönliche Seite #7580542
Lesenswert?

Deine Aufgabenstellung ist wunderbar zur Einarbeitung in Python geeignet. Schaue dir deinen Code an und versuche zu verstehen was die Funktion Timer und countdown machen. Dann überlege dir wie du ganz ohne Kenntnis einer Programmiersprache vorgehen würdest. Hier hilft dir ein Programmablaufplan. Dann schaue dir an was die Methode time.localtime() bewirkt. Und nun ändere den Code nach deinen Wünschen. Wenn du dann noch Fragen hast, melde dich einfach hier mit den speziellen Problemstellungen. Ich denke, dann wird dir rasch und kompetent geholfen.

#7580551
Lesenswert?

Rahul D. schrieb:

Kann man machen, solange man weiß, was man da einfügt.

So ist es. Leider denken viele, wenn man ein paar fertige Baugruppen aus dem Makershop mit Dupontkabeln zusammenstöpselt und den zur Funktion erforderlichen Code per C&P auf den Pi bringt, ist man schon Elektroniker. Dummerweise ist das nicht so. Der Weg dorthin ist durchaus steinig und es bedarf schon etwas Ausdauer und Fleiß die Basic's zu lernen. Wer so was beruflich macht, hat i.d.R. einige in die Ausbildung bzw. Studium investiert und auch derjenige der es als Hobby betreibt und es sich autodidaktisch beigebracht hat, hat das nicht in 5 Minuten geschafft.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren