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;
}
`
感謝您的幫助,但我改變了邏輯來感知進入和退出。再次感謝 –