from ST7735 import TFT from sysfont import sysfont from machine import Pin, SPI from time import sleep,sleep_us,ticks_us from dht import DHT22 # Blaues Kabel t1 = Pin(43, Pin.IN) # Gelbes Kabel t2 = Pin(44, Pin.IN) zustand = 0 # Initialisiere die SPI-Schnittstelle (SPI2) mit benutzerdefinierten Pins spi = SPI(2, baudrate=20000000, # Schnelle Übertragungsrate für das Display polarity=0, # SPI-Standardpolarisierung phase=0, # SPI-Standardphase sck=Pin(5), # Clock-Pin (GPIO5) mosi=Pin(3), # Datenleitung (Master Out Slave In, GPIO3) miso=None) # Nicht benötigt, da Display nur geschrieben wird # Initialisiere das TFT-Display mit den Steuerpins: # dc=2 (Data/Command), reset=1, cs=4 (Chip Select) tft = TFT(spi, 2, 1, 4) tft.initr() # Display initialisieren tft.rgb(True) # Farbmodus RGB aktivieren tft.invertcolor(True) # Farben invertieren (je nach Display nötig) tft.rotation(1) # Display-Rotation setzen (0–3) tft.fill(TFT.BLACK) #Auwahl tft.text((5, 30), "Bitte wählen:", TFT.CYAN, sysfont, 1.5) tft.text((5, 55), "Weiss: Entfernung", TFT.WHITE, sysfont, 1.5) tft.text((5, 75), "Blau: Umweltdaten", TFT.YELLOW, sysfont, 1.5) while zustand == 0: if t1.value() == 0: tft.fill(TFT.BLACK) # Bildschirm mit schwarzem Hintergrund löschen tft.text((5, 55), "Entfernung", TFT.BLUE, sysfont, 2.5) zustand = 1 for i in range (10,0,-1): tft.fill(TFT.BLACK) # Bildschirm mit schwarzem Hintergrund löschen tft.text((5, 55), str(i), TFT.BLUE, sysfont, 4) sleep(1) # Blaues Kabel t1.init(Pin.OUT) # Gelbes Kabel t2.init(Pin.IN) while True: tft.fill(TFT.BLACK) t1.value(0) sleep_us(2) t1.value(1) sleep_us(5) t1.value(0) while t2.value() == 0: signal_off = ticks_us() while t2.value() == 1: signal_on = ticks_us() dauer = signal_on - signal_off entfernung = dauer * 0.03432 / 2 tft.text((10, 40), "Entfernung: ", TFT.YELLOW, sysfont, 2) if entfernung < 0.0 or entfernung > 500.0: tft.text((10, 80), "Messfehler", TFT.BLUE, sysfont, 2) else: tft.text((10, 80), str(round(entfernung,2)), TFT.CYAN, sysfont, 2) tft.text((90, 80), "cm", TFT.CYAN, sysfont, 2) sleep(3) elif t2.value() == 0: tft.fill(TFT.BLACK) # Bildschirm mit schwarzem Hintergrund löschen tft.text((5, 55), "Umweltdaten", TFT.BLUE, sysfont, 2.5) zustand = 2 for i in range (10,0,-1): tft.fill(TFT.BLACK) # Bildschirm mit schwarzem Hintergrund löschen tft.text((5, 55), str(i), TFT.BLUE, sysfont, 4) sleep(1) # Gelbes Kabel t2 = DHT22(Pin(44)) temp = 0 hum = 0 while True: tft.fill(TFT.BLACK) t2.measure() temp = t2.temperature() tft.text((10, 40), "Temperatur: ", TFT.YELLOW, sysfont, 2) tft.text((10, 80), str(temp), TFT.BLUE, sysfont, 2) sleep(3) tft.fill(TFT.BLACK) t2.measure() hum = t2.humidity() tft.text((10, 40), "Feuchtigkeit: ", TFT.YELLOW, sysfont, 2) tft.text((10, 80), str(hum), TFT.BLUE, sysfont, 2) sleep(3) sleep(1)