from machine import Pin, PWM
from time import sleep
import gc
import _thread
gc.collect()
from wlan import *
from neopixelprog import *
from pirprog import *
from i2cscanprog import *
from lcdprog import *
from speaker import *
from servo import *
from ultra import *
# wlan_connect()
# np_aus()
# np_gradient()
# np_demo()
# np_lauflicht()
# np_aus()
# i2c_scan()
# playsong(mario)
# servo_bewegen()
### BUTTON INTERRUPT ZEUCHS ###
# (Damit die Button-Abfrage nicht den ganzen Microcontroller blockiert)
btn_rot = Pin(33, Pin.IN, Pin.PULL_DOWN)
btn_gelb = Pin(25, Pin.IN, Pin.PULL_DOWN)
btn_gruen = Pin(26, Pin.IN, Pin.PULL_DOWN)
btn_blau = Pin(27, Pin.IN, Pin.PULL_DOWN)
def handler(pin): # Macht vier verschiedene Dinge für die vier Buttons
print(pin)
if str(pin) == "Pin(33)": # Roter Button
np_gradient()
elif str(pin) == "Pin(25)": # Gelber Button
np_lauflicht()
elif str(pin) == "Pin(26)": # Gruener Button
np_aus()
elif str(pin) == "Pin(27)": # Blauer Button
playsong(mario)
btn_rot.irq(trigger=Pin.IRQ_RISING, handler=handler)
btn_gelb.irq(trigger=Pin.IRQ_RISING, handler=handler)
btn_gruen.irq(trigger=Pin.IRQ_RISING, handler=handler)
btn_blau.irq(trigger=Pin.IRQ_RISING, handler=handler)
pir_status = ""
distanz = 0.0
def sensorabfrage(): # Funktion, die im zweiten Prozessorkern ausgeführt werden soll
global pir_status # Suche die Variable pir_status außerhalb dieser Funktion (Zeile 54)
global distanz # Suche die Variable distanz außerhalb dieser Funktion (Zeile 55)
while True: # Endlosschleife für den zweiten Prozessorkern
pir_status = pir() # Die Variable pir_status wird zum neuen Wert der pir()-Afrage
distanz = distanz_cm() # Die Variable distanz wird zum neuen Wert der Distanz_cm()-Abfrage
Servo(Pin(15)).move(15)
sleep(0.2)
Servo(Pin(15)).move(165)
sleep(0.2)
Servo(Pin(15)).move(15)
_thread.start_new_thread(sensorabfrage, ()) # Starte die Funktion sensorabfrage() auf dem zweiten Prozessorkern
while True:
lcd.set_cursor(col=0, row=0)
lcd.print(pir_status)
lcd.set_cursor(col=0, row=1)
lcd.print("Distanz: ")
lcd.print(str(distanz))
sleep(1)
print(pir_status)
print(str(distanz))