基於期末小專題,最近試了一下紅外線,利用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);
}
}