許多汽車於倒車或是停車時,都會發出聲響以警示避免碰撞到其他車或障礙物,是否覺得這項技術很酷、非常實用,然而,雲教授連這項技術都能製造出來,還可以使用到汽車所沒有的雲的功能,比如說,目前汽車皆是以聲音代替距離讓使用者了解倒車的狀況,但是透過雲教授App還能多了解真正的實際距離為多少公分!
對於新手駕駛而言,駕車時經常遇到汽車駕駛經驗不足,所導致車禍的發生,此時雷達裝置可說是倒車必備神器,因此透過CPF打造厲害的防撞裝置,以降低駕駛車禍發生的機率,且能即時提醒駕駛應該注意何處,同時大幅減少駕駛在新手上路之時緊張氣氛。
宏碁雲教授 - 1個
Leonardo 開發板 - 1個
Grove 擴充板 - 1個
紅外線距離感測器 - 1個
無源蜂鳴器 - 1個
防撞倒車雷達的運作原理,就是讀取紅外線的距離感測器,接收1~1023的值,數字越大則距離越近,再讓蜂鳴器依照距離播放不同的頻率,例如距離大於500的頻率相對會最高,每5毫秒(0.005秒)播放一次,介於100~200則每500毫秒(0.5秒)播放一次。
連接雲教授,開啟CPF Arduino,進入Lesson 8 插槽模式。
先將雲教授與相對應感應器連接至Grove擴充板,紅外線測距感測器連接至A0插槽,蜂鳴器插至D5插槽,如圖:
圖
點擊執行按鈕,可對目前感應器進行各別操作與顯示,A0顯示紅外線距離感測器的數值,D5欄位則是可以控制蜂鳴器的發音。
在開始撰寫程式碼之前,先來看一下本程式自訂的函式(function)介紹:
sensorSet()
取得紅外線距離感測器的距離。
buzzerControl(frequency)
控制播放蜂鳴器,參數為播放的頻率。
現在,要開始撰寫防撞倒車雷達的程式碼,點擊修改按鈕進入程式碼編輯介面,將預設的程式碼全部刪除。
首先撰寫sensorSet()
函式來取得紅外線測距感測器的數值。
var infraredSensor;
function sensorSet(){
infraredSensor = cpf.get("socket a0");
ui.set("socket a0", infraredSensor);
return infraredSensor;
}
程式解析:
sensorSet()
。sensorSet()
函數中,使用infraredSensor變數來接收A0插槽紅外線測距感測器的數值。sensorSet()
函數中,執行ui.set()將距離的數值顯示在A0區塊上。sensorSet()
函數中,回傳infraredSensor變數。接著撰寫buzzerControl()
函式來控制蜂鳴器發出不同頻率的音調。
function buzzerControl(frequency){
cpf.set("socket d5", 1000, frequency);
cpf.set("socket d5", 500, frequency);
}
程式解析:
寫完需要的副程式之後,要開始撰寫主程式來使用它們了,主程式的邏輯為判斷當前的距離為多少,而給予蜂鳴器不同的頻率。
if((sensorSet()>=100)&&(sensorSet()<180)){
buzzerControl(500);
}else if((sensorSet()>=180)&&(sensorSet()<220)){
buzzerControl(300);
}else if((sensorSet()>=220)&&(sensorSet()<270)){
buzzerControl(200);
}else if((sensorSet()>=270)&&(sensorSet()<320)){
buzzerControl(100);
}else if((sensorSet()>=320)&&(sensorSet()<450)){
buzzerControl(50);
}else if((sensorSet()>=450)&&(sensorSet()<570)){
buzzerControl(20);
}else if(sensorSet()>=570){
buzzerControl(5);
}
程式解析:
最後,在程式碼最後一行輸入cpf.repeat();
重複執行,完成防撞倒車雷達的撰寫。
//防撞倒車雷達//
var infraredSensor;
if((sensorSet()>=100)&&(sensorSet()<180)){
buzzerControl(500);
}else if((sensorSet()>=180)&&(sensorSet()<220)){
buzzerControl(300);
}else if((sensorSet()>=220)&&(sensorSet()<270)){
buzzerControl(200);
}else if((sensorSet()>=270)&&(sensorSet()<320)){
buzzerControl(100);
}else if((sensorSet()>=320)&&(sensorSet()<450)){
buzzerControl(50);
}else if((sensorSet()>=450)&&(sensorSet()<570)){
buzzerControl(20);
}else if(sensorSet()>=570){
buzzerControl(5);
}
function sensorSet(){
infraredSensor = cpf.get("socket a0");
ui.set("socket a0", infraredSensor);
return infraredSensor;
}
function buzzerControl(frequency){
cpf.set("socket d5", 1000, frequency);
cpf.set("socket d5", 500, frequency);
}
cpf.repeat();
防撞倒車雷達可以運用物聯網技術,反向操作,如果您有一部愛車停在室外,您可以觀看App來監控是否有其他人或物正在靠近您的愛車,比如有其他車輛擦撞到了您的愛車時,當下就能知道,不必到要準備開車時才發現車殼有撞痕,另外,您也可以加裝LCD顯示器在駕駛座前方,便能在倒車時顯示與後方確切的距離為幾公分,試試看吧。