import machine
from machine import Pin, time_pulse_us, PWM, I2C
import time
from i2c_lcd1602 import I2cLcd
# Khai báo chân
SDA_PIN = 21
SCL_PIN = 22
trig_pin = machine.Pin(18, machine.Pin.OUT)
echo_pin = machine.Pin(19, machine.Pin.IN)
buzzer_pin = machine.Pin(23, machine.Pin.OUT)
AddressOfLcd = 0x27
i2c = I2C(scl=Pin(SCL_PIN), sda=Pin(SDA_PIN), freq=400000)
lcd = I2cLcd(i2c, AddressOfLcd, 2, 16)
def measure_distance():
trig_pin.value(0)
time.sleep_us(2)
trig_pin.value(1)
time.sleep_us(10)
trig_pin.value(0)
start_time = time.ticks_us()
duration = 0 # Khởi tạo biến duration
while echo_pin.value() == 0:
start_time = time.ticks_us()
while echo_pin.value() == 1:
duration = time.ticks_us() - start_time
# Tính toán khoảng cách
distance = (duration * 0.0343) / 2
return distance
while True:
distance = measure_distance()
print("Khoảng cách:", distance, "cm")
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("{} cm".format(distance))
# Bật cảnh báo nếu khoảng cách dưới 50 cm
if distance < 50:
buzzer_pin.value(1) # Bật buzzer
print("đang phát")
lcd.move_to(0, 1)
lcd.putstr("Warning!!")
else:
buzzer_pin.value(0) # Tắt buzzer
time.sleep(0.5)