from machine import Pin,I2C
from time import sleep, ticks_ms # ticks_ms für Zeitmessung mittels Programmlaufzeit
from lcd_i2c import LCD_I2C
# OLED EINRICHTEN: I2C-Controller auswählen, oled-Objekt erzeugen.
# I2C-Controller am ESP32: I2C(0, sda=Pin(21), scl=Pin(22)) | I2C(1, sda=Pin(18), scl=Pin(19))
# I2C-Controller am Arduino Nano ESP32: I2C(0, sda=Pin(11), scl=Pin(12)) | I2C(1, sda=Pin(13), scl=Pin(14))
I2C_Adresse = 0x27 # I2C-Addressen fuer LCD: 0x27, 0x3f, 0x20.
LCD_Zeilenanzahl = 2 # LCD mit zwei Zeilen ...
LCD_Spaltenanzahl = 16 # ... und 16 Spalten.
i2c = I2C(0, sda=Pin(21), scl=Pin(22)) # I2C-Controller 0 hat diese Pins.
lcd = LCD_I2C(i2c, I2C_Adresse, LCD_Zeilenanzahl, LCD_Spaltenanzahl)
lcd.backlight_on() #lcd.backlight_off() # Hintergrundbeleuchtung an/aus
# TASTER EINRICHTEN
taster = Pin (4, Pin.IN, Pin.PULL_DOWN)
def t():
# Warten auf Drücken des Tasters
z=taster.value()
while z==0:
#print('Taster nicht gedrueckt!')
sleep(0.2)
z=taster.value()
# Warten auf Loslassen des Tasters
while z==1:
#print('Der Taster wird gedrueckt!')
sleep(0.2)
z=taster.value()
# WARTEN AUF START DER STOPPUHR
zeitspanne=0
t() # Start der Stoppuhr über eine eigene Funktion zur Tasterabfrage ...
''' # ... oder so:
z = taster.value()
while z==0: # Auf Drücken des Tasters warten
sleep(0.1)
z = taster.value()
z = taster.value()
while z==1: # Auf Loslassen des Tasters warten
sleep(0.1)
z = taster.value()
'''
lcd.clear() # Vor einer neuen Anzeige sollte man das LCD löschen. Die neue Anzeige erscheint dann oben links im LCD.
lcd.print("Zeitmessung ...") # Anzeige von Text in '...' oder "..."
# WARTEN AUF STOPP DER STOPPUHR
# Solange Taster nicht gedrückt wird, Zeit hochzählen:
'''
# Möglichkeit 1: Zeitmessung durch eine Zählschleife
# Hier kann die eigene Funktion zur Tasterabfrage nicht verwendet werden,
# da in der Taster-Warteschleife die Zeit hochgezählt wird!
z = taster.value()
while z==0:
sleep(0.001)
zeitspanne=zeitspanne+0.001
z = taster.value()
'''
#'''
# Möglichkeit 2: Zeitmessung mittels Programmlaufzeit
startzeit = ticks_ms() # Speichert die Programmlaufzeit in Millisekunden in der Variablen.
t()
endzeit = ticks_ms()
zeitspanne = endzeit - startzeit # zeitspanne = ticks_diff(endzeit,startzeit)
#'''
# ANZEIGE DER ZEIT
lcd.clear() # Vor einer neuen Anzeige sollte man das Display löschen. Die neue Anzeige erscheint dann oben links im Display.
lcd.print('abgelaufene Zeit')
lcd.print(zeitspanne, 'ms') # Anzeige des Werts von t und des Texts ' ms'