2016-07-03 43 views
0

私はarduinoの初心者です。私はここでいくつかの問題を抱えています。私は2つの移動PIRセンサーを購入しました。誰かがセンサーの前を通過するとロジック値がHIGHになり、それ以外の場合はLOWになります。そのほかにarduinoループのインクリメントとデクリメントの値

Image

Iは、センサAがHIGHであるときに値をインクリメントしたい、とセンサBがHIGHであるときに同じ値をデクリメントすることになります。

しかし、ここでは変数の値を増減することはできません。遅延を使用する必要があるため、シリアル・プリントは5000ミリ秒間絶えず繰り返されます。そうしないとコードが機能しません。

int pinPIRa; 
int pinPIRb; 
int count; 

void setup() { 
    Serial.begin(9600); 
    pinMode(pinPIRa,INPUT); 
    pinMode(pinPIRb,INPUT); 

} 

void loop() { 

    if(digitalRead(pinPIRb) == HIGH){ 

    Serial.print("Sensor B"); 
    count--; 

    } 

    if(digitalRead(pinPIRa) == HIGH){ 

    Serial.print("Sensor A"); 
    count++; 

    } 

    delay(5000); 

} 

今私はどのように私は何度も繰り返してからシリアルを防ぐことができ、あなたたちのための2つの質問がありますか? Serial.flush()を使用しようとしましたが、動作しません。

そして、カウント変数をどのように増減することができますか?ループ内でコードが実行されているため、count変数は1回以上デクリメントされ、インクリメントされます。

ありがとうございます。

答えて

2

繰り返しを防止するために、変更を追跡するために状態変数を保持することもできます。これにより、実際に変更された場合にのみ状態が考慮されます。

これは、印刷とカウンタの変更の両方をカプセル化する必要があります(一度に2つ修正してください)。

関連する問題