测了两种红外对管,上面第一种只能测距,也只能返回0和1,有东西亮灯
下面那种可以避障,有黑的时候可以返回0,有黑关灯,也可以读取他的模拟值,寻迹用这种,避障用上面那种。
arduino代码:
void setup(){
pinMode(3, INPUT);
Serial.begin(9600);
}
void loop(){
Serial.println(digitalRead(3));
}
上升沿代码,灯会闪一下:
void attachInterrupt_fun_3() {
Serial.println("三号引脚已触发中断");
digitalWrite(13,HIGH);
}
void setup(){
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop(){
attachInterrupt(digitalPinToInterrupt(3),attachInterrupt_fun_3,RISING); //触发中断进入函数attachInterrupt_fun_3();RISING(上升的)
digitalWrite(13,LOW);
}
arduino R3 UNO触发中断为2或者3号管脚
下降沿代码:
void attachInterrupt_fun_3() {
Serial.println("三号引脚已触发中断");
digitalWrite(13,HIGH);
}
void setup(){
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop(){
attachInterrupt(digitalPinToInterrupt(3),attachInterrupt_fun_3,FALLING);//同上给代码一样,只不过FALLING(落下;下降沿触发)
digitalWrite(13,LOW);
}
下降沿触发就是电评信号为0的过程,下去就触发
上升沿 下降之后从0到1的过程,你可以一直在下降沿,松开才上升,才触发(个人理解)
上下升沿都触发:
void attachInterrupt_fun_3() {
Serial.println("三号引脚已触发中断");
digitalWrite(13,HIGH);
}
void setup(){
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop(){
attachInterrupt(digitalPinToInterrupt(3),attachInterrupt_fun_3,CHANGE);//CHANGE改变
digitalWrite(13,LOW);
}
上下都会触发,51、32基本上也是这个原理