from machine import Pin, PWM, time_pulse_us
from time import sleep, sleep_us
trig = Pin(22, Pin.OUT)
echo = Pin(21, Pin.IN)
red = Pin(17, Pin.OUT)
yellow = Pin(18, Pin.OUT)
green = Pin(19, Pin.OUT)
servo = PWM(Pin(23), freq=50)
LIMIT = 150
free_spaces = 15
def get_distance():
trig.value(0)
sleep_us(2)
trig.value(1)
sleep_us(10)
trig.value(0)
duration = time_pulse_us(echo, 1, 30000)
distance = (duration * 0.0343) / 2
return distance
def open_gate():
servo.duty(120)
def close_gate():
servo.duty(25)
flag = 1
while True:
distance = get_distance()
if free_spaces > 0:
green.on()
print("Distance:", distance, "cm")
if distance < LIMIT:
if flag and free_spaces > 0:
open_gate()
print("Gate Open")
free_spaces = free_spaces -1
if free_spaces == 0:
green.off()
red.on()
yellow.on()
sleep(0.25)
yellow.off()
flag =0
else:
close_gate()
print("Gate Closed")
flag = 1
sleep(0.3)