from machine import Pin, PWM
import utime
# Định nghĩa các chân GPIO cho cảm biến siêu âm và Buzzer
trigger_pin = Pin(5, Pin.OUT) # Chân Trig của cảm biến siêu âm
echo_pin = Pin(18, Pin.IN) # Chân Echo của cảm biến siêu âm
buzzer_pin = PWM(Pin(2)) # Chân Buzzer với PWM
# Cấu hình tần số ban đầu cho Buzzer
buzzer_pin.freq(1000) # Đặt tần số mặc định cho Buzzer là 1000 Hz
def measure_distance():
# Gửi tín hiệu Trigger trong 10 microseconds
trigger_pin.low()
utime.sleep_us(2)
trigger_pin.high()
utime.sleep_us(10)
trigger_pin.low()
# Đo thời gian Echo phản hồi (tính bằng microseconds)
while echo_pin.value() == 0:
signal_off = utime.ticks_us()
while echo_pin.value() == 1:
signal_on = utime.ticks_us()
# Tính toán thời gian giữa tín hiệu phát và nhận
duration = signal_on - signal_off
# Tính khoảng cách (tốc độ âm thanh 34300 cm/s)
distance = (duration * 0.0343) / 2
return distance
def control_buzzer(distance):
if distance < 20:
buzzer_pin.freq(1000) # Phát âm thanh với tần số 1000 Hz
buzzer_pin.duty_u16(500) # Đặt độ rộng xung PWM (điều chỉnh âm lượng)
elif distance < 50:
buzzer_pin.freq(2000) # Phát âm thanh với tần số 2000 Hz
buzzer_pin.duty_u16(500)
else:
buzzer_pin.duty_u16(0) # Tắt âm thanh khi không có vật cản
# Vòng lặp chính
while True:
distance = measure_distance()
print("Khoảng cách:", distance, "cm")
control_buzzer(distance)
utime.sleep(0.1) # Chờ 100ms trước khi đo lại