Я пытаюсь подсчитать количество HB100 microwave sensor импульсов в 200ms
квантах времени.Циклы процессора в Arduino uno для цифровых импульсов чтения и подсчета
Вот код:
#include <SoftwareSerial.h>
#include <elapsedMillis.h>
elapsedMillis ElapsedTime;
#define Sensor A0
#define TimeQuanta 200
int Counter = 0;
boolean LastState;
void setup()
{
Serial.begin(250000);
pinMode(Sensor, INPUT);
}
void loop()
{
Counter = 0;
ElapsedTime = 0;
while (ElapsedTime < TimeQuanta){
LastState = digitalRead(Sensor);
if (LastState == LOW && digitalRead(Sensor) == HIGH){
Counter += 1; //Compare Last state with current state
}
}
Serial.print(digitalRead(Sensor));
Serial.print("\t");
Serial.println(Counter);
}
мне нужно знать цифровые циклы чтения. Я сравниваю последнее состояние датчика с текущим состоянием, и если выполняется изменение (LOW TO HIGH), счетчик увеличивается. Тем не менее, мой счетчик всегда 0
!
- - правильный код (состояние
if
)? - Мне нужны задержки?
- Можно ли считать эти импульсы?
Вот Logic Analyzer выход микроволновый датчик:
Edit: если я добавляю delay(1);
перед тем if
то счетчик не 0 больше.
Спасибо за ваш ответ, где я могу найти документ для циклов процессора для любой операции? Отпечатки теперь находятся вне цикла while. – Mehran
Вряд ли я использовал свой собственный «тест». Но можно переключать некоторый выход и измерять частоту. Может быть, есть некоторые статьи по этой теме. – KIIV