如何在每次传感器检测到物体输入时连续打印“输入”
问题描述:
每当传感器检测到物体时,我想在串行监视器中打印“输入”,但是我的输出是“输入”“输入”,依此类推直到除非感应到下一个条目,并且以此格式继续。我只想在感应到对象条目时才打印“条目”。如何在每次传感器检测到物体输入时连续打印“输入”
`
#define trig1 11
#define echo1 10
#define trig2 9
#define echo2 6
#define ledpin 13
int sensor_1 = 0;
int sensor_2 = 0;
int count = 0;
long duration1, distance1;
long duration2, distance2;
//unsigned long prevmillis=0;
//const long interval=1000;
void setup() {
// put your setup code here, to run once:
pinMode(trig1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(trig2, OUTPUT);
pinMode(echo2, INPUT);
pinMode(ledpin, OUTPUT);
Serial.begin(9600);
}
void loop() {
//unsigned long prevmillis=millis();
sensor1(); ///set sensor_1=1
sensor2();///set sensor_2=1
if (sensor_1 == 1)
{ if (sensor_2 == 1) {
Serial.println("Entry");
}
}
}
int sensor1(void)
{
digitalWrite(trig1, LOW);
delayMicroseconds(2);
digitalWrite(trig1, HIGH);
delayMicroseconds(10);
digitalWrite(trig1, LOW);
duration1 = pulseIn(echo1, HIGH);
analogWrite(ledpin, 0);
distance1 = duration1 * .034/2;
if (distance1 < 10) {
delay(100);
sensor_1 = 1;
//delay(400);
//count++;
//unsigned long currentmillis=millis();
//Serial.println(currentmillis-prevmillis);
//Serial.println("Sensor1 Sensed Object");
//Serial.println(count);
analogWrite(ledpin, 255);
delay(200);
}
//return sensor_1;
}
int sensor2(void)
{
digitalWrite(trig2, LOW);
delayMicroseconds(2);
digitalWrite(trig2, HIGH);
delayMicroseconds(10);
digitalWrite(trig2, LOW);
duration2 = pulseIn(echo2, HIGH);
analogWrite(ledpin, 0);
distance2 = duration2 * .034/2;
if (distance2 < 15) {
delay(100);
sensor_2 = 1;
//delay(400);
//count++;
//unsigned long currentmillis=millis();
//Serial.println(currentmillis-prevmillis);
//Serial.println("Sensor2 Sensed Object");
//Serial.println(count);
analogWrite(ledpin, 255);
delay(100);
}
//return sensor_2;
}
`
答
你不使用后透明传感器条件值一样。
if (sensor_1 == 1)
{
if (sensor_2 == 1)
{
Serial.println("Entry");
sensor_1 = 0;
sensor_2 = 0;
}
}
应该这样做。
感谢您的帮助,但我改变了逻辑来感知进入和退出。再次感谢 –