2016-07-03 2 views
0

나는 arduino의 초보자이고 여기에 몇 가지 문제가 있습니다. 나는 2 개의 Moviment PIR 센서를 구입했다. 누군가가 센서 앞을 통과하면 로직 값이 HIGH이고, 그렇지 않으면 값은 LOW이다. 센서 B가 HIGH 인 경우 I는 동일한 값을 센서 A는 HIGH 일 때의 값을 증가하기 위해, 그리고 감소 것이다 게다가arduino 루프의 증가 및 감소 값

Image

.

하지만 여기서는 문제가 있습니다. 변수 값을 증가 및 감소시킬 수 없으며 지연을 사용해야하기 때문에 직렬 인쇄가 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); 

} 

이제 두 가지 질문이 있습니다. 일련 번호가 여러 번 반복되는 것을 어떻게 방지 할 수 있습니까? Serial.flush()를 사용하려고했지만 작동하지 않습니다.

그리고 어떻게 카운트 변수를 증가시키고 감소시킬 수 있는지 알고 싶습니다. 루프 내에서 코드가 실행 중이기 때문에 count 변수는 한 번 이상 감소 및 증가합니다.

감사합니다.

답변

2

반복을 방지하기 위해 상태 변수를 유지하여 변경 사항을 추적 할 수도 있습니다. 이것은 실제로 변경된 경우에만 상태를 고려하게합니다. 이 작업을 수행하여 메모리 제한에 도달하지 않습니다.

인쇄 및 카운터 변경을 캡슐화해야합니다 (한 번에 두 번 수정)