MartinRS76
22.01.2022, 11:29

Timer() Scratch vs. Python

Permalink

1000steine-Code

BBCode

HTML


Hallo Gemeinde,

vielleicht kann mir jemand bei folgender Aufgabenstellung weiterhelfen:
Mein Sohn und ich haben einen fahrbaren Roboter mit Robot Inventor (51515) gebaut, welcher in möglichst kurzer Zeit einen abgesteckte Strecke durchfahren soll. Dabei haben wir vereinbart, dass mein Sohn Scratch benutzt und ich Python und wir anschließend gegeneinander antreten.

Um die Zeit zu messen benutzen wir die Timer/Zeitgeber "Bibliothek" (sagt man das so?):

Scratch:

[image]



Python:

[image]



Bei Verwendung von Scratch werden Sekunden-Zehntelsekunden-Hundertstelsekunden ausgeworfen, bei Verwendung von Python jedoch nur ganze Sekunden. Gibt es eine Möglichkeit mittels Python das gleiche genauere Zeitformat auszuspucken?

Viele Grüße
Martin



Lok24
22.01.2022, 11:53

Als Antwort auf den Beitrag von MartinRS76

Editiert von
Lok24
22.01.2022, 11:56

+1Re: Timer() Scratch vs. Python

MartinRS76 hat geschrieben:

Bei Verwendung von Scratch werden Sekunden-Zehntelsekunden-Hundertstelsekunden ausgeworfen, bei Verwendung von Python jedoch nur ganze Sekunden. Gibt es eine Möglichkeit mittels Python das gleiche genauere Zeitformat auszuspucken?

Hallo Prormammierteam,

leider habe ich kein Hub um das zu testen, aber die Python-Hilfe sagt:

now()
Retrieves the "right now" time of the Timer.
Returns The current time, specified in seconds.
Type :
Integer (a positive or negative whole number, including 0)


Dann eher nicht, fürchte ich.



MartinRS76 gefällt das


Technicmaster0
22.01.2022, 13:56

Als Antwort auf den Beitrag von MartinRS76

+2Re: Timer() Scratch vs. Python

Auf dem Hub steht die utime-Bibliothek zur Verfügung. Damit sollte das genauer gehen.



Lok24 , MartinRS76 gefällt das


bricknerd
22.01.2022, 17:50

Als Antwort auf den Beitrag von MartinRS76

Editiert von
bricknerd
22.01.2022, 18:23

+1Re: Timer() Scratch vs. Python

Ich hoffe, dass das hilft. datetime.now() steht als float zur Verfügung in Sekunden, hier normiert auf Millisekunden (*1000)

start_time = datetime.datetime.now()

#execute loop
x = 0
for i in range(1000):
x += i

end_time = datetime.datetime.now()

time_diff = (end_time - start_time)
execution_time = time_diff.total_seconds() * 1000



MartinRS76 gefällt das


MartinRS76
22.01.2022, 19:53

Als Antwort auf den Beitrag von MartinRS76

Re: Timer() Scratch vs. Python

Danke für die vielen hilfreichen Antworten!! Das utime Modul war schlußendlich der goldene Hinweis. Ich habe es jetzt so gelöst:

from mindstorms import MSHub
import utime

hub = MSHub()
hub.light_matrix.rotate('counterclockwise')

timer_start = utime.ticks_ms()

utime.sleep(5) # Platzhalter für den restlichen Code

timer_reaction = utime.ticks_diff(utime.ticks_ms(),timer_start)
hub.light_matrix.write(timer_reaction/1000)



Gesamter Thread: