from machine import *
from time import *
from random import *
from lcd_i2c import *
I2C_Adresse = 0x27 # I2C-Addressen fuer LCD: 0x27, 0x3f, 0x20
LCD_Zeilenanzahl = 2 # LCD mit zwei Zeilen ...
LCD_Spaltenanzahl = 16 # ... und 16 Spalten
# I2C-Schnittstelle am Mikrocontroller:
i2c = I2C(0, sda=Pin(21), scl=Pin(22), freq=400000)
lcd = LCD_I2C(i2c, I2C_Adresse, LCD_Zeilenanzahl, LCD_Spaltenanzahl)
lcd.backlight_on() #lcd.backlight_off() # Hintergrundbeleuchtung an/aus
taster = Pin(4, Pin.IN, Pin.PULL_DOWN)
led = Pin(2, Pin.OUT)
#lcd.display_on()
lcd.clear() # Vor einer neuen Anzeige sollte man das LCD löschen. Die neue Anzeige erscheint dann oben links im LCD.
lcd.print("Sobald LED an:")
lcd.set_cursor(0, 1) # Geht zu ersten Spalte (0) der zweiten Zeile (1)
lcd.print("Taster druecken!")
sleep(2)
lcd.clear() # Vor einer neuen Anzeige sollte man das LCD löschen. Die neue Anzeige erscheint dann oben links im LCD.
lcd.print("Zum (Neu-)Start:")
lcd.set_cursor(0, 1) # Geht zu ersten Spalte (0) der zweiten Zeile (1)
lcd.print("Taster druecken!")
print('\n') # bewirkt einen Zeilenumbruch, initiiert die Datenübertragung an die BoxPlot-App
n=1
while True:
# Alternativ für 10 Messungen: while n<=10:
# Warten auf Drücken des Tasters:
z=taster.value() # liest den Taster-Pin ein und speichert seinen Wert in z
while z==0: # 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)
# Warten auf Loslassen Tasters:
z=taster.value() # liest den Taster-Pin ein und speichert seinen Wert in z
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)
lcd.display_off()
lcd.backlight_off()
led.off()
warteZeit=randint(2,5) # Erzeugt eine zufällige Zahl zwischen 2 und 5
sleep(warteZeit)
led.on()
reaktionsZeit=0
# Warten auf Loslassen Tasters:
z=taster.value() # liest den Taster-Pin ein und speichert seinen Wert in z
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)
# Warten auf Tasterdruck:
z=taster.value() # liest den Taster-Pin ein und speichert seinen Wert in z
while z==0: # Solange z 0 ist, also der Taster nicht gedrückt wird ...
z=taster.value() # ... wird der Pin eingelesen und in z gespeichert.
sleep(0.001) # wartet eine Millisekunde
reaktionsZeit=reaktionsZeit+1 # Zählt die Reaktionszeit um 1 (ms) hoch.
led.off()
lcd.display_on()
lcd.backlight_on()
lcd.clear() # Vor einer neuen Anzeige sollte man das LCD löschen. Die neue Anzeige erscheint dann oben links im LCD.
lcd.print("Reaktonszeit: " + str(n)) # Anzeige von Text in '...' oder "..."
lcd.set_cursor(0, 1) # Geht zu ersten Spalte (0) der zweiten Zeile (1)
lcd.print(str(reaktionsZeit) + ' ms')
print(reaktionsZeit)
n=n+1
sleep(0.5)
z=taster.value() # liest den Taster-Pin ein und speichert seinen Wert in z
while z==0: # 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)
lcd.display_off()
lcd.backlight_off()