''' bedarfsampel (c)2021 if1.net-schulbuch.de (ddf_ampel) ''' import machine import time # Initialisierung der Port-Pins # Ampel Rot = machine.Pin(25, machine.Pin.OUT) #Port 25 als Ausgang - rote LED Gelb = machine.Pin(26, machine.Pin.OUT) #Port 26 als Ausgang - gelbe LED Gruen = machine.Pin(27, machine.Pin.OUT) #Port 27 als Ausgang - gruene LED # Fussgaengerampel FRot = machine.Pin(19, machine.Pin.OUT) #Port 19 als Ausdgang - rote LED FGruen = machine.Pin(18, machine.Pin.OUT) #Port 18 als Ausgang - gruene LED Signal_kommt = machine.Pin(23, machine.Pin.OUT) #Port 23 als Ausgang - kleine gelbe LED Taste = machine.Pin(34, machine.Pin.IN) #Port 34 als Eingang #Globale Variable für die Interruptverarbeitung Taste_gedrueckt = False Signal_kommt.off() # Interrupthandler # diese Methode wird ausgeführt, wenn der Interrupt ausgelöst wird def ISR_Tastendruck (gpiopin): # ISR = Interrupt Service Routine global Taste_gedrueckt, Signal_kommt Taste_gedrueckt = True Signal_kommt.on() # Einrichten des Interrupts für die Taste (den Pin Taste) # Der Interrupt wird ausgelöst (getriggert) durch ein fallendes Signal am Tasten-Pin # Die durchzuführende ISR-Methode wird festgelegt Tastendruck = Taste.irq(trigger=machine.Pin.IRQ_FALLING, handler=ISR_Tastendruck) # Phasen der Fussgaengerampel def FRotPhase(Dauer): FRot.on() FGruen.off() time.sleep(Dauer) def FGruenPhase(Dauer): FRot.off() FGruen.on() time.sleep(Dauer) # Phasen der Ampel def RotPhase(Dauer): global Taste_gedrueckt, Signal Rot.on() Gelb.off() Gruen.off() FRotPhase(0.1*Dauer) FGruenPhase(0.7*Dauer) # erneutes Druecken der Taste erlauben Signal_kommt.off() Taste_gedrueckt = False FRotPhase(0.2*Dauer) def RotGelbPhase(Dauer): Rot.on() Gelb.on() Gruen.off() time.sleep(Dauer) def GruenPhase(Dauer): global Taste_gedrueckt Rot.off() Gelb.off() Gruen.on() time.sleep(Dauer) # Warten auf Tastendruck while not Taste_gedrueckt: time.sleep(Dauer/50) def GelbPhase(Dauer): Rot.off() Gelb.on() Gruen.off() time.sleep(Dauer) while True: GruenPhase(3) GelbPhase(1) RotPhase(5) RotGelbPhase(1)