Arduino红外门
我想做一个红外传感器门与DFRobot红外传感器(开关)和伺服。问题出在if语句中,因为当红外传感器前面没有任何东西时,digitalread总是在变化,这是它所支持的方式。。。因此,它可以快速关闭和打开。但我希望当传感器前面有东西时,门是打开的,然后是延迟,如果门前面有东西(新的),门就会关上 霉菌代码:Arduino红外门,arduino,infrared,Arduino,Infrared,我想做一个红外传感器门与DFRobot红外传感器(开关)和伺服。问题出在if语句中,因为当红外传感器前面没有任何东西时,digitalread总是在变化,这是它所支持的方式。。。因此,它可以快速关闭和打开。但我希望当传感器前面有东西时,门是打开的,然后是延迟,如果门前面有东西(新的),门就会关上 霉菌代码: #include <Servo.h> Servo myservo;// create servo object to control a servo
#include <Servo.h>
Servo myservo;// create servo object to control a servo
// a maximum of eight servo objects can be created
int IRsensor =8;
int pos = 180; // variable to store the servo position
int d;
boolean kondisi;
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode (IRsensor,INPUT);
Serial.begin (9600);
}
void loop()
{
d = digitalRead (IRsensor);
bukatutup (d);
delay (15);
}
void bukatutup(int IR)
{
Serial.println (IR);
if (IR == 0 and (kondisi == false))
{
pos = 0;
Serial.println ("terbuka");
myservo.write (pos);
kondisi == true;
delay(1000);
}
else if ( IR == 0 and (kondisi == true))
{
pos = 180;
Serial.println ("tertutup");
kondisi == false;
myservo.write (pos);
delay (1000);
}
}
#包括
伺服myservo;//创建伺服对象以控制伺服
//最多可以创建八个伺服对象
int IRsensor=8;
int pos=180;//变量来存储伺服位置
int d;
布尔kondisi;
无效设置()
{
myservo.attach(9);//将针脚9上的伺服连接到伺服对象
pinMode(红外传感器,输入);
Serial.begin(9600);
}
void循环()
{
d=数字读取(红外传感器);
布卡图普(d);
延误(15);
}
无效bukatutup(内部IR)
{
Serial.println(IR);
if(IR==0和(kondisi==false))
{
pos=0;
Serial.println(“terbuka”);
myservo.write(pos);
kondisi==真;
延迟(1000);
}
else如果(IR==0和(kondisi==true))
{
pos=180;
Serial.println(“tertutup”);
kondisi==假;
myservo.write(pos);
延迟(1000);
}
}
Thx,所以您需要引入延迟,这就是问题所在吗?检测到什么东西,打开门,但只有在一段时间内没有检测到任何东西时才关门?不,我希望门前面有东西(新的)时关门好的,对不起。但是你想让门一直关着,直到有一段时间门前什么都没看到,这是问题吗?让我澄清一下,首先传感器会打开(有东西)(门打开),然后它会关闭(没有东西)(门一直打开),然后如果它再次打开(有新东西)它将关闭。当传感器第三次跳闸时,您希望发生什么情况?所以传感器跳闸一次:打开门。然后什么也没检测到:准备关门。检测到:关上门。既然门已经关上,当再次检测到某些东西时,需要发生什么?