from machine import Pin,I2C
from time import sleep, ticks_ms # ticks_ms für Zeitmessung mittels Programmlaufzeit
from ssd1306 import SSD1306_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 = I2C(0, sda=Pin(21), scl=Pin(22)) # I2C-Controller 0 hat diese Pins. # alternativ Software I2C verwenden: i2c = SoftI2C(sda=Pin(21), scl=Pin(22))
oled = SSD1306_I2C(128, 64, i2c)
# 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()
'''
oled.clear() # Vor einer neuen Anzeige sollte man das LCD löschen. Die neue Anzeige erscheint dann oben links im LCD.
oled.print("Zeitmessung")
oled.print()
oled.print("...")
oled.print()
oled.print()
# 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
#oled.clear() # Vor einer neuen Anzeige sollte man das Display löschen. Die neue Anzeige erscheint dann oben links im Display.
oled.print('abgelaufene Zeit')
oled.print(zeitspanne, 'ms') # Anzeige des Werts von t und des Texts ' ms'Loading
ssd1306
ssd1306