對射式紅外線感測器

功能:對射式紅外線感測器

 

材料接線:對射式紅外線感測器*10、杜邦線(公對公)*2、杜邦線(公對母)*30、麵包板*1

每一個對射式紅外線感測器的接腳VCC接5V或3.3V,接腳GND接板子的GND,依序將第1顆2感測器的中間接腳OUT接接位 2,第2顆接 3,依序接到 11

 

程式:

 

/* 基本程式名稱:1個對射式紅外線感測器 */

void setup ( ) {

  pinMode(2, INPUT);           // 將接在腳位 2 對射式紅外線感測器設定為 INPUT 接收訊號的狀態

  Serial.begin(9600);

}


void loop(){

        Serial.println(digitalRead(2));     //顯示接腳 2的感測器狀態

}

 

 

/* 程式名稱:10個對射式紅外線感測器 */

float time;

int status[11];                           // 設定有11個陣列變數,存放每個感測器的偵測狀態,陣列第0個不予理會

void setup ( ) {

  for (int i=1; i<=10; i++){         //設定迴圈 i 為1∼10

  pinMode(i+1, INPUT);           // 將接在腳位 2∼11,編號第1∼10共10個對射式紅外線感測器設定為 INPUT 接收訊號的狀態

  status[i]=0;                              // 將每個感測器的狀態用陣列變數設為預設值0,表示沒有物品通過

  }

  Serial.begin(9600);

}


void loop() {

  time=(float)micros()/1000000;

  for (int i=1; i<=10; i++){                //設定迴圈 i 為1∼10

    if (digitalRead(i+1) == LOW)      //假如感測器沒有物品通過,將狀態陣列變數設為0

    {

      status[i]=0;                                // 將每個感測器的狀態用陣列變數設為預設值0,表示沒有物品通過

    }

    else if (status[i] == 0)                   //否則(有物品通過),再判斷剛才的狀態為0(剛才沒物品通過),就顯示相關感測器編號及時間

    {

        Serial.print(i);                //顯示感測器編號

        Serial.print("=");

        Serial.println(time,6);     //顯示時間

        status[i] = 1;                   //設定感測器的狀態為1,表示有物品通過

    }

  }

}