2012年12月24日 星期一

紅外線遮斷感應 判斷先後感應




基於期末小專題,最近試了一下紅外線,利用Arduino和2個紅外線收發器,來判斷是從左邊還右邊經過。目前寫完的code還有些bug(從正上方2個一起感應也有動作),還須修改一下,電路圖晚點放上來。


const int ir1_signal = 22;
const int ir2_signal = 24;
const int led1 = 26;
const int led2 = 28;
int ir1_state ;
int ir2_state ;
int i,k=0,j=0;

void setup(){

pinMode(ir1_signal,INPUT);
pinMode(ir2_signal,INPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);

}

void loop(){

  ir1_state = digitalRead(ir1_signal);
  ir2_state = digitalRead(ir2_signal);

  //如果ir1先被感應,將變數k=1,j=0。如果ir2先被感應,將變數k=0,j=1
  if(ir1_state==LOW && ir2_state==HIGH){
    k=1;
    j=0;
   }else if(ir2_state==LOW && ir1_state==HIGH){
    j=1;
    k=0;
   }
  //判斷第2個IR是否感應
  if( ir2_state == LOW && k==1){
     digitalWrite(led1,HIGH);   //signal_1
     delay(1000);
     k=0;
   }else if( ir1_state == LOW && j==1){
     digitalWrite(led2,HIGH);   //siganl_2
     delay(1000);
     j=0;
   }else{
     digitalWrite(led2,LOW);
     digitalWrite(led1,LOW);
   }
   
}