mBlock & Arduino(26)Me 動作、光線感應器實作小夜燈


在〈mBlock & Arduino(14)使用人體動作感應器〉中談過 PIR 動作感應器,Makeblock 提供有 PIR 動作感應器模組,以及光線感應器模組,結合這兩個,你就可以輕易地作出一個小夜燈。

Me PIR 動作感應器

Me PIR 動作感應器可以偵測到周圍六公尺左右的人體移動,範圍可以藉由 PIR 上方的可變電阻器來調整,這個動作感應器在 D3 有個 LED,當偵測到人體紅外線時,LED 會亮起:

Me PIR 動作感應器

這個動作感應器也可以設定是否可重複觸發,仔細看看感應器上可外接的腳位,或者是 RJ25 連接埠旁的腳位標示,可以發現有個 Mode 腳位,當你給這個 Mode 腳位高電位時,就是可重複觸發模式,也就是當感測到紅外線變化,在延遲時間內若持續感測到紅外線變化,那麼「人體紅外線感應器方塊」就會持續傳回 1,直到不再感測到紅外線變化後一段延遲時間,才會傳回 0,這通常用於判斷,人體是否有持續動作(或太久沒動靜)的場合。

不可重複觸發,是當感測到紅外線變化而「人體紅外感應器方塊」傳回 1,無論延遲時間內有無感測到紅外線變化,時間一到就會先傳回 0。

因此,視你將 RJ25 連接至哪個連接埠,查出 Mode 腳位是對應至哪個數位腳位,給予高或低電壓,就可以設定為可重複觸發或不可重複觸發模式。

Me 光線感應器

Me 光線感應器可以偵測光線強弱,由於是藉由類比腳位得到數值,因此光線強弱變化值由 0 到 1023:

Me 光線感應器

從上面的照片中可以看到,這個感應器還可以偵測灰階變化,這其實是利用反射光的強弱來達成,為了要能偵測灰階變化,你必須點亮照片中標示為 D3 的 LED,然後讓光線感應器很接近被偵測的平面,但不是接觸該平面,由於黑色會吸收光線,因此,越黑的平面,反射光進入光線感應器就會越少,偵側得到數值就會越低。

偵測灰階變化的應用,常見於循跡車,在平面上畫條黑線,車子上的光線感應器靠近黑線的一側:

Me 光線感應器

如果黑線是在感應器的右方,當車子越往左偏離黑線,反射光會越大,在大於某個值時可使其偏右接近黑線,如果車子越偏右進入黑線,為避免它整個往右超出黑線,可在反射光小至某個值時,讓車子偏左,像這樣始終讓感應的反射光維持在某個範圍內,保持黑線在感應器的右方,就可讓車子延著劃下的軌道前進。

當然,這樣的方式只適合不交叉的黑線,如果軌道有交叉,就要使用兩個感應器夾住黑線,如此在兩個感應器反射光都小於某個值時,就表示目前處於交叉點。

那麼,該怎麼點亮標示為 D3 的 LED 呢?這個 LED 是藉由標示為 DI 的腳位控制,當高電位時就會點亮 LED,不過光線感應器只能使用於連接埠 6、7、8,查看這些連接埠對應的腳位,都是類比輸入腳位,怎麼輸出高電壓?

其實類比腳位也可以用來作為擴充的數位腳位,以 Arduino Uno 為例,A0 到 A5,也可以當作 D14 到 D19 數位腳位來使用,因此,查看你的連接埠,就可以知道要令哪個號碼的數位腳位為高電位了,例如,若連接在連接埠 6,其腳位為 A2,那麼就是設置數位腳位 15 為高電位,就可以點亮 LED。

如果有興趣,你也可以使用光線感應器實作個掃瞄器喔!可以參考〈EV3 Tutorial(7)使用顏色感應器實作掃描器〉,道理是相同的!

實作小夜燈

接下來就實作個小夜燈吧!需求是,這個小夜燈只在夠暗的時候,才會感應是否有人接近而啟用,小夜燈的部份,我們就直接使用光線感應器上的 LED,為了方便調節什麼樣的光線明亮程度才會感應是否有人接近,我們使用 Me 可變電阻器,並將調整好的數值顯示於七段顯示器上。

我將 PIR 動作感應器連至連接埠 3,七段顯示器連至連接埠 4,光線感應器連至連接埠 6,而可變電阻器連至連接埠 7。

首先處理偵測人體移動的部份,當偵測到人體靠近時,LED 會點亮:

實作小夜燈

由於光線感應器連至連接埠 6,為了控制 LED 明亮,必須使用腳位 A2 充當數位腳位 D16,你可以調整 PIR 動作感應器上的可變電阻,設定好你想要感應的距離範圍。

接下來,利用程式設定 PIR 動作感應器為可重複觸發模式且先關閉光線應器上的 LED:

實作小夜燈

程式會每一秒鐘將可變電阻器的輸入值,設定給七段顯示器顯示,並作為判斷光線門檻值的依據,你可以測試看看小夜燈是否如預期運作。

當然,我們不能老是開著電腦,使用 mBlock 來控制小夜燈,以上測試沒有問題的話,可以在「Arduino mode」中,將程式上傳至板子上:

實作小夜燈

記得,上傳前要改用「Arduino 主程式」方塊,並將自訂方塊的名稱部份改成英文,上傳完畢之後,你就可以將小夜燈裝在想要的地方,將板子連接上外部電源,板子上的電源開關,就是你要不要啟用小夜燈的開關了!