from machine import Pin
from utime import sleep, ticks_ms, ticks_diff
led_pins = [2, 4, 16, 17, 5, 18, 21, 27]
leds = [Pin(pin, Pin.OUT) for pin in led_pins]
button_enter = Pin(34, Pin.IN, Pin.PULL_UP)
button_exit = Pin(35, Pin.IN, Pin.PULL_UP)
car_num = 0
button_enter_pressed = False
button_exit_pressed = False
last_press_enter = 0
last_press_exit = 0
DEBOUNCE_TIME = 200
def int_handler(pin):
global button_enter_pressed, button_exit_pressed
global last_press_enter, last_press_exit
current_time = ticks_ms()
if pin is button_enter:
if ticks_diff(current_time, last_press_enter) > DEBOUNCE_TIME:
button_enter_pressed = True
last_press_enter = current_time
elif pin is button_exit:
if ticks_diff(current_time, last_press_exit) > DEBOUNCE_TIME:
button_exit_pressed = True
last_press_exit = current_time
button_enter.irq(trigger=Pin.IRQ_FALLING, handler=int_handler)
button_exit.irq(trigger=Pin.IRQ_FALLING, handler=int_handler)
while True:
if button_enter_pressed:
button_enter_pressed = False
if car_num < len(leds):
leds[car_num].on()
car_num += 1
print(f"Car Entered, Number of Cars: {car_num}")
elif button_exit_pressed:
button_exit_pressed = False
if car_num > 0:
car_num -= 1
leds[car_num].off()
print(f"Car Exited, Number of Cars: {car_num}")
sleep(0.2)