46 lines
888 B
Python
46 lines
888 B
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
from gpiozero import TrafficLights, Button, PWMOutputDevice
|
||
|
from time import sleep
|
||
|
|
||
|
|
||
|
def main():
|
||
|
lights = TrafficLights(14, 15, 18)
|
||
|
lights.off()
|
||
|
lights.green.on()
|
||
|
pedestrian_button = Button(23)
|
||
|
buzzer = PWMOutputDevice(12)
|
||
|
buzzer.frequency = 444
|
||
|
buzzer.value = 0.5
|
||
|
buzzer.off()
|
||
|
while True:
|
||
|
pedestrian_button.wait_for_press()
|
||
|
pedestrian_call(lights, buzzer)
|
||
|
|
||
|
|
||
|
def pedestrian_call(lights, buzzer):
|
||
|
buzz(buzzer, 1)
|
||
|
sleep(3)
|
||
|
lights.green.off()
|
||
|
lights.amber.on()
|
||
|
sleep(4)
|
||
|
lights.amber.off()
|
||
|
lights.red.on()
|
||
|
buzz(buzzer, 2)
|
||
|
sleep(5)
|
||
|
buzz(buzzer, 3)
|
||
|
sleep(3)
|
||
|
lights.red.off()
|
||
|
lights.green.on()
|
||
|
|
||
|
|
||
|
def buzz(buzzer, n=1):
|
||
|
for i in range(n):
|
||
|
buzzer.value = 0.5
|
||
|
sleep(0.1)
|
||
|
buzzer.off()
|
||
|
sleep(0.1)
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|