2016-09-30 35 views
0

每當傳感器檢測到物體時,我想在串行監視器中打印「輸入」,但是我的輸出是「輸入」「輸入」,依此類推直到除非感應到下一個條目,並且以此格式繼續。我只想在感應到對象條目時纔打印「條目」。如何在每次傳感器檢測到物體輸入時連續打印「輸入」

` 

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

`

回答

-1

你不使用後透明傳感器條件值一樣。

if (sensor_1 == 1) 
{ 
    if (sensor_2 == 1) 
    { 
    Serial.println("Entry"); 
    sensor_1 = 0; 
    sensor_2 = 0; 
    } 
} 

應該這樣做。

+0

感謝您的幫助,但我改變了邏輯來感知進入和退出。再次感謝 –