感應大概是最常見的互動方式,不管是觸摸牆壁跑出漂亮的動畫還是在觸控螢幕上操作導覽等,以刷卡這個動作為案例,一個日常的行為卻也是感應互動的一種,有在使用 Arduino 來做互動開發的人大概會知道有一個元件叫人體紅外線感應器 ( HC-SR501 ),但是今天不使用 Arduino 所提供的模組,而是水電器材常看到的感應器,不知道大家是是否都有個經驗,當你晚上走在暗巷裡或經過樓梯轉角時燈會突然亮起,提供你短暫的照明。
使用模組的好處就是他的接電與訊號都接 Arduino 板子,所有的一切都可以客製化,但壞處就是很多東西必須自行製作,包含它的外包裝以及線路對接,畢竟當這個互動方式要展現給大眾時,不能讓線材外露以及要好維修,在焊接技術沒有很好的情況下,電子零件越小就越容易焊壞掉。
另一個原因為感應器不穩定的因素,在初次製作時找了一個大小剛好的盒子,也做了挖洞加工讓模組感應的圓罩可以外露出來,加工完的當下互動測試正常,就在當晚盒子不小心摔到,第二天要繼續加工細節時,訊號開始輸出不穩定,當我決定要在做另一個時,因為我的焊接技術沒有很好,所以後續製作的就沒有第一個那麼成功了。
感應燈所提供的感應器會分成兩種:乾接點、濕接點,所謂乾溼的定義不是真的乾跟濕,而是開關性質不一樣。
乾接點為電氣開關,接點是沒有正負極之分的,他是利用電磁性繼電器來形成迴路,這是什麼意思呢?當感測器裡的電磁鐵通電時會產生磁性,把另一個磁鐵吸下來行成電路閉合。
濕接點為有源開關,屬於電子元件,分成有電及無電狀態,接點具有正負極之分所以不能夠接反。
從以上的特點來看乾接點比較適合我們使用。
從工具備料開始我們會需要以下東西:
感應器有四條不同顏色的線,紅色與黑色分別接上插頭的兩條線,不用區分正負,但通常我會對顏色,假如說買到的電線是黑紅分的話就對黑紅,如果買到的電線是黑白 ( 通常白色是黑色線但上面有白色的條紋跟字 ) 就黑對黑、紅對白。黃色線要對上 Arduino 版的 5V,白色線要接上板子的訊號與電阻接到接地。
下圖為 Arduino 細節接法示意圖,上面的感應器先用 LED 燈做示意,也可以省去麵包版直接接到板子上:
以下為 Arduino 的程式碼,在接到感測器輸出值為 HIGH 時表示說有感應到人經過,在括弧裡可以去做要做的事情,如:開燈、播影片、播聲音等。
#include "SoftwareSerial.h"
#define sensorPin 4
int sensorValue = 0; // 紅外線數據
void setup() {
Serial.begin(9600);
pinMode(sensorPin, INPUT); // 紅外線
}
void loop() {
sensorValue = digitalRead(sensorPin); // 讀取感應器輸出的數位值
if(sensorValue == HIGH) {
// 做想做的事情
}
}