如何在每次传感器检测到物体输入时连续打印“输入”

问题描述:

每当传感器检测到物体时,我想在串行监视器中打印“输入”,但是我的输出是“输入”“输入”,依此类推直到除非感应到下一个条目,并且以此格式继续。我只想在感应到对象条目时才打印“条目”。如何在每次传感器检测到物体输入时连续打印“输入”

` 

#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; 
    } 
} 

应该这样做。

+0

感谢您的帮助,但我改变了逻辑来感知进入和退出。再次感谢 –