☛ 功能說明

使用Arduino開發板配合移動偵測器偵測人或動物的移動,當有人靠近時閃爍 LED,當無人靠近時,關閉 LED。 這邊使用的感測器是 D-SUN 的人體紅外線感測器 ( Pyro-electric Infrared Detector,簡稱 PIR ),外觀就是一個縮小的半球。 把感測器翻過來另外一面,可以看到有兩個可以調整的橘色旋鈕,說明如下:

✦ 標示 SX ( Sensitivity ) 的旋鈕是偵測的靈敏度,靈敏度以偵測距離 ( high ) 計算,範圍 3~7 米,順時針旋轉靈敏度越高。

✦ 標示 TX ( Time Delay ) 的旋鈕是偵測到信號之後,下一次再繼續偵測的延遲時間,時間範圍是 5~300 秒,順時針旋轉延遲時間越長。

另外一側的三個針腳,分別是 VCC ( 5V )、OUT ( 信號腳 ) 和 GND。 接線方式直接把 VCC 接在開發板的 5V,GND 接 GND,訊號腳接數位腳的位置 ( 例如數位接腳 2 )。

☛ 使用材料

Arduino UNO R3 開發板 × 1、D-SUN 紅外線偵測模組 × 1、電阻 220Ω × 1、LED× 1。

☛ 電路圖及麵包板接線圖

☛ 程式碼

const int led=13;                     //數位接腳 13 連接 LED
const int PIRout=2;                   //數位接腳 2 連接至 PIR 感測器輸出
int val=0;                            //PIR 狀態

void setup()
{
     pinMode(led,OUTPUT);             //設定數位接腳 13 為輸出模式
     pinMode(PIRout,INPUT);           //設定數位接腳 2 為輸入模式
}

void loop()
{
     val=digitalRead(PIRout);         //讀取 PIR 讀取狀態
     if(val==HIGH)                    //PIR 輸出狀態為 HIGH
     {
        digitalWrite(led,HIGH);       //點亮 LED 50ms
        delay(50);
        digitalWrite(led,LOW);        //關閉LED 50ms
        delay(50);
     }
     else                             //PIR 輸出狀態為 LOW
     {
        digitalWrite(led,LOW);        //關閉LED
     }
}

 

☛ 練習

⑴ 設計 Arduino 程式,使用 Arduino 開發板配合移動偵測人或動物的移動,當有人靠近時,點亮 LED,當無人靠近時,關閉 LED。

const int led=13;                     //數位接腳 13 連接 LED
const int PIRout=2;                   //數位接腳 2 連接至 PIR 感測器輸出
int val=0;                            //PIR 狀態

void setup()
{
     pinMode(led,OUTPUT);             //設定數位接腳 13 為輸出模式
     pinMode(PIRout,INPUT);           //設定數位接腳 2 為輸入模式
}

void loop()
{
     val=digitalRead(PIRout);         //讀取 PIR 讀取狀態
     if(val==HIGH)                    //PIR 輸出狀態為 HIGH
     {
        digitalWrite(led,HIGH);       //點亮 LED
     }
     else                             //PIR 輸出狀態為 LOW
     {
        digitalWrite(led,LOW);        //關閉LED
     }
}

 

⑵ 設計 Arduino 程式,配合移動偵測器設計自動小夜燈,當有人靠近時,點亮 LED 20 秒後關閉,當無人靠近時,關閉 LED。

const int led=13;                     //數位接腳 13 連接 LED
const int PIRout=2;                   //數位接腳 2 連接至 PIR 感測器輸出
int val=LOW;                          //PIR 狀態
int ledStatus=LOW;                    //LED 狀態

void setup()
{
     pinMode(led,OUTPUT);             //設定數位接腳 13 為輸出模式
     pinMode(PIRout,INPUT);           //設定數位接腳 2 為輸入模式
}

void loop()
{
     val=digitalRead(PIRout);         //讀取 PIR 讀取狀態
     if(val==HIGH)                    //PIR 輸出狀態為 HIGH
     {
        ledStatus=HIGH;
        digitalWrite(led,ledStatus);  //點亮 LED
        delay(20000);                 //延遲 20 秒
        val=LOW;
     }
     else                             //PIR 輸出狀態為 LOW
     {
        ledStatus=LOW;
        digitalWrite(led,ledStatus);  //關閉LED
     }
}