from machine import Pin, PWM, time_pulse_us
import time
# -------------------------
# Pin configuration
# -------------------------
TRIG_PIN = 3
ECHO_PIN = 2
BUZZER_PIN = 15
trig = Pin(TRIG_PIN, Pin.OUT)
echo = Pin(ECHO_PIN, Pin.IN)
buzzer = PWM(Pin(BUZZER_PIN))
buzzer.duty_u16(0)
# -------------------------
# Measure distance
# -------------------------
def get_distance():
# Send trigger pulse
trig.value(0)
time.sleep_us(2)
trig.value(1)
time.sleep_us(10)
trig.value(0)
# Measure echo pulse
duration = time_pulse_us(echo, 1, 30000)
if duration < 0:
return -1
# Calculate distance
distance = (duration * 0.0343) / 2
return distance
# -------------------------
# Buzzer functions
# -------------------------
def buzzer_on():
buzzer.freq(2000)
buzzer.duty_u16(30000)
def buzzer_off():
buzzer.duty_u16(0)
# -------------------------
# Main program
# -------------------------
while True:
distance = get_distance()
if distance < 0:
print("No object detected")
buzzer_off()
else:
print("Distance: {:.2f} cm".format(distance))
# Object very close
if distance <= 10:
print("WARNING! Object very close!")
buzzer_on()
# Object between 10 and 20 cm
elif distance <= 20:
buzzer_on()
time.sleep(0.1)
buzzer_off()
time.sleep(0.1)
# Object between 20 and 50 cm
elif distance <= 50:
buzzer_on()
time.sleep(0.1)
buzzer_off()
time.sleep(0.5)
# Object farther than 50 cm
else:
buzzer_off()
time.sleep(0.1)