Forum: Mikrocontroller und Digitale Elektronik Timer in Micropython mit RPi Pico und TM1637 ändern


von Jens (baloony2000)


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...

von Rahul D. (rahul)


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.

von Hans (ths23)


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.

von Norbert (der_norbert)


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.

von Rahul D. (rahul)


Lesenswert?

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

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

von Joe G. (feinmechaniker) Benutzerseite


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.

von Hans (ths23)


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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Eigentlich muss man nur wissen, wieviele Sekunden eine Stunde hat und 
die Stunden in eine weitere globale Variable füllen. Die initialisierst 
du mit dem gewünschten Anfangswert und zählst sie in Callback zurück 
nach 3600s.

von Norbert (der_norbert)


Lesenswert?

Rahul D. schrieb:
> Kann man machen, solange man weiß, was man da einfügt.

Da denkst du aber zu kleinteilig. ;-)
Es geht ganz anders.

Man kopiert, man fügt ein, man fragt im Forum.
Irgend einer biegt den Dreck schon gerade.

von Rahul D. (rahul)


Lesenswert?

Norbert schrieb:
> Da denkst du aber zu kleinteilig. ;-)

Tut mir leid. ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.