Advertisement
ashwith

Raspberry Pi Pico Traffic Lights Example - With Lock

Jan 29th, 2021
1,693
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.33 KB | None | 0 0
  1. import machine
  2. import utime
  3. import _thread
  4.  
  5. led_red   = machine.Pin(13, machine.Pin.OUT)
  6. led_amber = machine.Pin(14, machine.Pin.OUT)
  7. led_green = machine.Pin(15, machine.Pin.OUT)
  8.  
  9. buzzer = machine.Pin(12, machine.Pin.OUT)
  10.  
  11. button = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_DOWN)
  12.  
  13. global button_pressed
  14. global lock
  15.  
  16. lock = _thread.allocate_lock()
  17. button_pressed = False
  18.  
  19. def button_reader_thread():
  20.     global button_pressed
  21.     global lock
  22.    
  23.     while True:
  24.         if not button_pressed and button.value() == 1:
  25.             with lock:
  26.                 button_pressed = True
  27.            
  28. _thread.start_new_thread(button_reader_thread, ())
  29.  
  30. led_red.value(1)
  31. led_amber.value(0)
  32. led_green.value(0)
  33. while True:
  34.    
  35.     if button_pressed:
  36.         led_red.value(1)
  37.         for i in range(10):
  38.             buzzer.value(1)
  39.             utime.sleep(0.2)
  40.             buzzer.value(0)
  41.             utime.sleep(0.2)
  42.         global button_pressed
  43.         global lock
  44.        
  45.         with lock:
  46.             button_pressed = False
  47.    
  48.     buzzer.value(0)
  49.     led_red.value(1)
  50.     utime.sleep(5)
  51.     led_amber.value(1)
  52.     utime.sleep(2)
  53.     led_red.value(0)
  54.     led_amber.value(0)
  55.     led_green.value(1)
  56.     utime.sleep(5)
  57.     led_green.value(0)
  58.     led_amber.value(1)
  59.     utime.sleep(5)
  60.     led_amber.value(0)
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement