自動芳香噴霧器能持續地在同一空間中噴灑出香味,可以在長時間中保持著你安排的香水味道,讓家中的廁所時常有著清爽的感覺,還可以放在鞋櫃中去除異味,亦可安裝在自己的衣櫃裡,每穿衣服出外時都會散發出自己獨特的香味!
香味,人人都愛!但常常在外會面臨到公共廁所或環境所散發出刺鼻的異味,因此使用市面上隨手可得的芳香劑與CPF結合後,加上霧化感測器,在定時會自動噴灑芳香噴霧劑,讓人人都能擁有一個美好的環境。
宏碁雲教授 - 1個
Leonardo 開發板 - 1個
Grove 擴充板 - 1個
紅外線感測器 - 1個
LED燈 - 1個
霧化器 - 1個
紅外線感測器 - 1個
連接雲教授,開啟CPF Arduino,進入Lesson 8 插槽模式。
先將雲教授與相對應感應器連接至Grove擴充板,光敏感測器連接至A0插槽,紅外線感測器連接上D6插槽,LED燈連接上D2插槽,霧化器則是連接至D3插槽,如圖:
圖
點擊執行按鈕,可對目前感應器進行各別操作與顯示,插槽A0顯示光敏感測器的值,D6顯示紅外線感測器是否有感測到人體靠近,D2欄位可以控制LED燈的開關,D3欄位則是可以控制霧化器的噴霧大小。
在開始撰寫程式碼之前,先來看一下本程式自訂的函式(function)介紹:
IRSensorSet()
取得紅外線感測器的數值。
sensorSet()
取得光敏感測器的光感值。
LEDControl(status,time)
控制LED燈的開與關和延遲時間。
sprayControl(status,time)
控制霧化器的噴霧大小和延遲時間。
現在,要開始撰寫自動芳香噴霧器的程式碼,點擊修改按鈕進入程式碼編輯介面,將預設的程式碼全部刪除。
首先撰寫IRSensorSet()
函式來取得紅外線感測器的數值。
var IRSensor;
function IRSensorSet(){
IRSensor = cpf.get("socket d6");
ui.set("socket d6", IRSensor);
return IRSensor;
}
程式解析:
IRSensorSet()
。IRSensorSet()
函數中,使用IRSensor變數來接收D6插槽紅外線感測器的數值。IRSensorSet()
函數中,執行ui.set()將紅外線感測器的數值顯示在D6區塊上。IRSensorSet()
函數中,回傳IRSensor變數。接著撰寫sensorSet()
函式,來取得光敏感測器的數值。
var IRSensor;
var lightSensor;
function IRSensorSet(){
IRSensor = cpf.get("socket d6");
ui.set("socket d6", IRSensor);
return IRSensor;
}
function sensorSet(){
lightSensor = cpf.get("socket a0");
ui.set("socket a0", lightSensor);
return lightSensor;
}
程式解析:
sensorSet()
。sensorSet()
函數中,使用lightSensor變數來接收A0插槽光敏感測器的數值。sensorSet()
函數中,執行ui.set()將光敏感測器的數值顯示在A0區塊上。sensorSet()
函數中,回傳lightSensor變數。接著撰寫LEDControl()
函式,來控制開啟自動芳香噴霧器時的燈光。
var IRSensor;
var lightSensor;
function IRSensorSet(){
IRSensor = cpf.get("socket d6");
ui.set("socket d6", IRSensor);
return IRSensor;
}
function sensorSet(){
lightSensor = cpf.get("socket a0");
ui.set("socket a0", lightSensor);
return lightSensor;
}
function LEDControl(status,time){
cpf.set("socket d2", status);
delay(time);
}
程式解析:
LEDControl()
。LEDControl()
函數中,使用status參數來控制D2插槽白光LED燈的開與關。LEDControl()
函數中,使用time參數設定白光LED燈的延遲時間。接著撰寫sprayControl()
函式,來控制霧化器的噴霧大小以及延遲時間。
var IRSensor;
var lightSensor;
function IRSensorSet(){
IRSensor = cpf.get("socket d6");
ui.set("socket d6", IRSensor);
return IRSensor;
}
function sensorSet(){
lightSensor = cpf.get("socket a0");
ui.set("socket a0", lightSensor);
return lightSensor;
}
function LEDControl(status,time){
cpf.set("socket d2", status);
delay(time);
}
function sprayControl(status,time){
cpf.set("socket d3", status);
delay(time);
}
程式解析:
sprayControl()
。sprayControl()
函數中,使用status參數來控制D3插槽霧化器的噴霧大小。sprayControl()
函數中,使用time參數設定控制D3插槽霧化器噴霧的延遲時間。相關函式撰寫完成後,接著寫一個判斷式來利用紅外線感測器之數值和光感值來控制自動芳香噴霧器的動作。
var IRSensor;
var lightSensor;
if((IRSensorSet() == 1)&&(sensorSet() < 300)){
LEDControl(1,3000);
sprayControl(255,1000);
}else{
LEDControl(0,1000);
sprayControl(0,1000);
}
function IRSensorSet(){
IRSensor = cpf.get("socket d6");
ui.set("socket d6", IRSensor);
return IRSensor;
}
function sensorSet(){
lightSensor = cpf.get("socket a0");
ui.set("socket a0", lightSensor);
return lightSensor;
}
function LEDControl(status,time){
cpf.set("socket d2", status);
delay(time);
}
function sprayControl(status,time){
cpf.set("socket d3", status);
delay(time);
}
程式解析:
IRSensorSet()
函式回傳紅外線感測器的數值為1以及呼叫sensorSet()
函式回傳光敏感測器的數值小於300時,呼叫LEDControl()
函式開啟白LED燈並延遲3000毫秒,接著再呼叫sprayControl()
設定霧化器噴霧大小為255以及延遲為1000毫秒。IRSensorSet()
函式回傳紅外線感測器的數值不為1以及呼叫sensorSet()
函式回傳光敏感測器的數值不小於300時,則呼叫LEDControl()
函式關閉白光LED燈和設定延遲1000毫秒,以及呼叫sprayControl()
函式關閉霧化器和設定延遲1000毫秒。以上已完成了程式碼的撰寫,最後在最後一行加上 cpf.repeat();
開啟迴圈進行重複執行的動作。
//自動芳香噴霧器//
var IRSensor;
var lightSensor;
if((IRSensorSet() == 1)&&(sensorSet() < 300)){
LEDControl(1,3000);
sprayControl(255,1000);
}else{
LEDControl(0,1000);
sprayControl(0,1000);
}
function IRSensorSet(){
IRSensor = cpf.get("socket d6");
ui.set("socket d6", IRSensor);
return IRSensor;
}
function sensorSet(){
lightSensor = cpf.get("socket a0");
ui.set("socket a0", lightSensor);
return lightSensor;
}
function LEDControl(status,time){
cpf.set("socket d2", status);
delay(time);
}
function sprayControl(status,time){
cpf.set("socket d3", status);
delay(time);
}
cpf.repeat();
有時需要趕著出門,但又必須噴點香水,此時只要靠近自動芳香噴霧器即可,縮短了許多時間,解決一項問題,也是一種創意。介紹完這項作品後,不妨進行延伸並能夠解決另一項問題,比如我們可以將芳香劑轉換為殺蟲劑,產生一個自動殺蟲噴霧器,偵測到附近有蟑螂等便自動向牠噴射殺蟲劑,不必親自上陣,雲教授即可幫您除蟲!