from machine import Pin
from time import sleep, ticks_ms # ticks_ms für Zeitmessung mittels Programmlaufzeit
from random import randint
led = Pin(2, Pin.OUT)
taster = Pin(4, Pin.IN, Pin.PULL_DOWN)
def t(): # Funktion zum Warten auf Tasterdruck:
z=taster.value() # Taster-Pin einlesen
while z==1: # Solange z 0 ist, also der Taster nicht gedrückt wird ...
z=taster.value() # ... wird der Pin eingelesen und in z gespeichert.
sleep(0.2)
while z==0: # Solange Taster nicht gedrückt ...
sleep(0.001) # eine Millisekunde warten
z=taster.value() # und Pin erneut eingelesen
n=1 # Variable zum Zählen der Messungen
x=5 # Anzahl an Messungen
# Liste für die Reaktionzeiten anlegen:#
#messwerte=[0,1,2,3,4] # Liste mit bekannter Länge
messwerte=[] # Liste mit unbekannter Länge
print("Reaktionstest")
print("Start mit Taster")
t()
print('Taster drücken sobald LED leuchtet')
#t()
sleep(0.5) # kurze Zeit warten zum Ausführen des print-Befehls
while n<=x:
gueltig=True
reaktionsZeit=0
led.off()
warteZeit=randint(2,5) # Erzeugt eine zufällige Zahl zwischen 2 und 5
# Zufällig lange warten, dann LED an:
while warteZeit>0:
led.off()
sleep(0.1)
# Falls Taster jetzt schon gedrückt (gehalten oder hektisch geklickt) wird:
z=taster.value()
if z==1:
print("Nicht mogeln!")
gueltig=False # Wurde der Taster gedrückt gehalten, soll diese Messung wiederholt werden.
warteZeit=warteZeit-0.1
#print(warteZeit)
led.on()
# Warten auf Tasterdruck:
startzeit = ticks_ms() # Speichert die Programmlaufzeit in Millisekunden in der Variablen.
t()
endzeit = ticks_ms()
reaktionsZeit = endzeit - startzeit # zeitspanne = ticks_diff(endzeit,startzeit)
# Reaktionzeit in einer Liste speichern und anzeigen:
#messwerte[n-1]=reaktionsZeit # Messwert in Liste mit bekannter Länge speichern
messwerte.append(reaktionsZeit) # Messwert in Liste mit unbekannter Länge speichern
print("Messung", n, ":", messwerte[n-1], "ms") # Messwert in Liste anzeigen
led.off()
print('t=',reaktionsZeit,'ms')
print('Messung Nr.',n)
n=n+1
sleep(0.5) # kurze Zeit warten zum Ausführen des print-Befehls
if gueltig==True:
# Reaktionzeit in einer Liste speichern und anzeigen:
#messwerte[n-1]=reaktionsZeit # Messwert in Liste mit bekannter Länge speichern
messwerte.append(reaktionsZeit) # Messwert in Liste mit unbekannter Länge speichern
print("Messung", n, ":", messwerte[n-1], "ms") # Messwert in Liste anzeigen
n=n+1
else:
reaktionsZeit=0
print("Test beendet!")
# Messwerte in Liste anzeigen:
print("Messwerte-Liste:")
l=0
n=n-1 # n hat ja am Ende aller Messungen den Wert "anzahlAnMessungen+1"
while l<=n-1: # das letzte Listen-Element hat die Adresse n-1, weil Listen mit Null anfangen zu zählen, unsere Messungen aber mit Eins
print("Messung", l+1, ":", messwerte[l], "ms") # Messwert in Liste anzeigen
l=l+1
'''
# Ohne Funktion zur Tasterabfrage:
from machine import Pin
from time import sleep
from random import randint
led = Pin(2,Pin.OUT)
taster = Pin(4,Pin.IN,Pin.PULL_DOWN)
n=1
x=5 # Anzahl an Messungen
# Liste für die Reaktionzeiten anlegen:#
#messwerte=[0,1,2,3,4] # Liste mit bekannter Länge
messwerte=[] # Liste mit unbekannter Länge
print("Reaktionstest")
print("Start mit Taster")
z=taster.value()
while z==0:
sleep(0.2)
z=taster.value()
print('Taster drücken sobald LED leuchtet')
sleep(0.5) # kurze Zeit warten zum Ausführen des print-Befehls
while n<=x:
gueltig=True
reaktionszeit=0
wartezeit=randint(1,5)
led.off()
z=taster.value()
while z==0:
sleep(0.2)
z=taster.value()
z=taster.value()
while z==1:
sleep(0.2)
z=taster.value()
# Zufällig lange warten, dann LED an:
#sleep(wartezeit) # Wartezeit wird nicht per sleep, sondern in einer Herunter-Zählschleife abgewartet:
# Solange Taster jetzt schon gedrückt gehalten oder hektisch geklickt wird, warten:
while wartezeit>0:
led.off()
sleep(0.1)
z=taster.value()
if z==1:
print("Nicht moglen!")
#n=x+1 # Wurde gemogelt, wird die Test-Zählschleife verlassen OVER-ENGINEERING
gueltig=False # Wurde gemogelt, soll diese Messung wiederholt werden.
wartezeit=wartezeit-0.1
#print(wartezeit)
#if n<=x:
led.on()
# Auf Tasterdruck warten, dabei Reaktionszeit messen:
z=taster.value()
while z==0:
z=taster.value()
sleep(0.001)
reaktionszeit=reaktionszeit+1
# Reaktionszeit anzeigen:
led.off()
print('t=',reaktionszeit,'ms')
print('Messung Nr.',n)
if gueltig==True:
# Reaktionzeit in einer Liste speichern und anzeigen:
#messwerte[n-1]=reaktionszeit # Messwert in Liste mit bekannter Länge speichern
messwerte.append(reaktionszeit) # Messwert in Liste mit unbekannter Länge speichern
print("Messung", n, ":", messwerte[n-1], "ms") # Messwert in Liste anzeigen
n=n+1
else:
reaktionszeit=0
z=taster.value()
while z==0:
z=taster.value()
sleep(0.1)
while z==1:
z=taster.value()
sleep(0.1)
z=taster.value()
while z==0:
z=taster.value()
sleep(0.1)
print("Test beendet!")
# Messwerte in Liste anzeigen:
print("Messwerte-Liste:")
l=0
n=n-1 # n hat ja am Ende aller Messungen den Wert "anzahlAnMessungen+1"
while l<=n-1: # das letzte Listen-Element hat die Adresse n-1, weil Listen mit Null anfangen zu zählen, unsere Messungen aber mit Eins
print("Messung", l+1, ":", messwerte[l], "ms") # Messwert in Liste anzeigen
l=l+1
'''