# 8_3_7seg_超音波距離測量 0cm~400cm
# 練習
# 8-3-1 設計倒車警示器。當車子與物體距離小於20cm 時,蜂鳴器產生嗶聲,同時TM1637 模組顯示車子尾端與物體的距離。
# 8-3-2 新增一個LED 燈(GPIO2),LED 的閃爍速度與蜂鳴器的嗶聲同步。
# 且設定不同距離嗶聲間隔不同,距離愈短聲音間隔愈短愈急促,距離cm:20、50、100、150、250
from machine import Pin
import time
import tm1637
from hcsr04 import HCSR04
tm = tm1637.TM1637(clk=Pin(25), dio=Pin(26))
tm.brightness(5)
sensor = HCSR04(trigger_pin=5, echo_pin=4)
#8-3 基本測量
# while True:
# distance = sensor.distance_cm()
# tm.number(int(distance))
# time.sleep(1)
# 8_3_1 加警示聲音,距離小於20cm時
from machine import PWM,Timer
t=0 #ticks計算用的變數
buzzer=PWM(Pin(0))
buzzer.freq(500)
# while True:
# distance = sensor.distance_cm()
# cm = int(distance)
# if(cm<20):
# buzzer.duty(512)
# time.sleep_ms(100)
# buzzer.duty(0)
# time.sleep_ms(100)
# else:
# buzzer.duty(0)
# if(time.ticks_ms()-t>=1000):
# t=time.ticks_ms()
# tm.number(cm)
# time.sleep(1)
# # 8_3_2 依不同距離聲音快慢不同,且再加led和聲音同步亮起
led = Pin(27, Pin.OUT)
while True:
distance = sensor.distance_cm()
cm = int(distance)
if(cm<20):
buzzer.duty(512)
time.sleep_ms(100)
buzzer.duty(0)
time.sleep_ms(100)
elif(cm<50):
buzzer.duty(512)
led.value(1)
time.sleep_ms(100)
buzzer.duty(0)
led.value(0)
time.sleep_ms(300)
# time.sleep_ms(100)
elif(cm<100):
buzzer.duty(512)
led.value(1)
time.sleep_ms(100)
buzzer.duty(0)
led.value(0)
time.sleep_ms(500)
# time.sleep_ms(100)
elif(cm<150):
buzzer.duty(512)
led.value(1)
time.sleep_ms(100)
buzzer.duty(0)
led.value(0)
time.sleep_ms(700)
# time.sleep_ms(100)
elif(cm<250):
buzzer.duty(512)
led.value(1)
time.sleep_ms(100)
buzzer.duty(0)
led.value(0)
time.sleep_ms(900)
else:
buzzer.duty(0)
if(time.ticks_ms()-t>=1000):
t=time.ticks_ms()
tm.number(cm)