from machine import Pin, PWM
import time
# กำหนดขา GPIO
TRIG = Pin(5, Pin.OUT)
ECHO = Pin(18, Pin.IN)
BUZZER = PWM(Pin(15))
BUZZER.freq(1000) # กำหนดความถี่เสียง
BUZZER.duty(0) # ปิดเสียงไว้ก่อน
def get_distance():
# ส่งสัญญาณ Trigger 10us
TRIG.value(0)
time.sleep_us(2)
TRIG.value(1)
time.sleep_us(10)
TRIG.value(0)
# รอช่วงสัญญาณ ECHO เป็น HIGH
while ECHO.value() == 0:
pass
signaloff = time.ticks_us()
# รอช่วงสัญญาณ ECHO กลับเป็น LOW
while ECHO.value() == 1:
pass
signalon = time.ticks_us()
# คำนวณระยะทาง (ซม.)
duration = time.ticks_diff(signalon, signaloff)
distance = (duration * 0.0343) / 2
return distance
# ลูปทำงานหลัก
while True:
dist = get_distance()
print("Distance: {:.2f} cm".format(dist))
# ถ้าระยะน้อยกว่า 20 cm ให้ Buzzer ดัง
if 0 < dist < 20:
BUZZER.duty(512) # เปิดเสียงความดัง 50%
else:
BUZZER.duty(0) # ปิดเสียง
time.sleep(0.5)