多元選修專題發表
第一組
一仁 03余映翧 06李若瑜 09林青霈
成果展現-超音波偵測儀
創作動機與過程
經過一個學期的學習,我們希望能以曾學習的專案為軸進行發想,鞏固知識並進行延伸,因而我們想要製作紅外線感測儀器以偵測遠處是否有人,並發出警報。
然而經過測試後,們發現紅外線傳感器敏銳度差,經常判斷錯誤,難以達成我們期望中的需求,因而我們轉向超音波測距儀,希望能夠替代紅外線的偵測功能。
最後我們透過蜂鳴器與超音波測距儀成功完成機器,使他能夠在偵測到一定距離內有物品時發出聲響。
程式碼
import RPi.GPIO as GPIO
import time
# ===== 腳位設定(BOARD)=====
Trig = 11
Echo = 13
buzzer = 16
GPIO.setmode(GPIO.BOARD)
GPIO.setup(Trig, GPIO.OUT)
GPIO.setup(Echo, GPIO.IN)
GPIO.setup(buzzer, GPIO.OUT)
GPIO.output(Trig, False)
程式碼
# ===== 蜂鳴器 =====
def doReMi():
p = GPIO.PWM(buzzer, 440)
p.start(50)
notes = [
(440, 0.5),
(494, 0.5),
(494, 0.25),
(440, 0.25),
(554, 0.25),
(494, 0.25),
(494, 1.25),
(554, 0.25),
(440, 0.25),
(370, 0.25),
(330, 0.5),
(330, 0.5)
]
for freq, t in notes:
p.ChangeFrequency(freq)
time.sleep(t)
p.stop()
程式碼
# ===== 超音波測距 =====
def dist():
GPIO.output(Trig, True)
time.sleep(0.00001)
GPIO.output(Trig, False)
timeout = time.time() + 0.04
while GPIO.input(Echo) == 0:
start = time.time()
if time.time() > timeout:
return -1
while GPIO.input(Echo) == 1:
end = time.time()
if time.time() > timeout:
return -1
心得反思
這次製作專題報告的過程我們屢遭挫折,尤其是當好不容易完成第一版本紅外線感測儀後發現成效遠遠不符我們的要求時我們深感挫敗,感覺白費了許多時間,幸好後面使用超音波測距儀後也是勉強堪用,最後壓線終於完成這次的專題發表。
我認為這次專題報告過程中學習到了許多。以前聽課時經常看不懂程式碼的內容而只是一味複製貼上,真正上手從無到有又是另一番滋味,使我成長許多,也加深了我對電機的喜愛。