from machine import Pin, time_pulse_us
import time

# Khai báo chân GPIO
trig = Pin(12, Pin.OUT)    # Chân Trig của cảm biến siêu âm
echo = Pin(14, Pin.IN)     # Chân Echo của cảm biến siêu âm
buzzer = Pin(27, Pin.OUT)  # Chân Buzzer
led = Pin(5, Pin.OUT)      # Chân đèn LED

def measure_distance():
    # Phát tín hiệu từ Trig
    trig.off()
    time.sleep_us(2)
    trig.on()
    time.sleep_us(10)
    trig.off()
    
    # Đo độ rộng xung Echo (thời gian nhận tín hiệu phản hồi)
    duration = time_pulse_us(echo, 1, 1000000)  # Đọc thời gian xung Echo lên tới 1 giây (timeout)
    
    # Tính toán khoảng cách (tính bằng cm)
    distance = (duration * 0.0343) / 2
    return distance

while True:
    distance = measure_distance()
    
    # In khoảng cách đo được
    print('Khoảng cách: {:.2f} cm'.format(distance))
    
    # Nếu khoảng cách nhỏ hơn 50 cm, bật Buzzer và đèn LED
    if distance < 50:
        buzzer.on()
        led.on()
    else:
        buzzer.off()
        led.off()
    
    time.sleep(1)  # Chờ 1 giây trước khi thực hiện lại