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;
}
`
助けてくれてありがとうが、私はエントリーと出口を感知するロジックを変えた。もう一度ありがとう –