Почему мой счетчик холла не считает?

Я хочу использовать датчик эффекта Холла с таймером (millis). Счетчик должен сбросить через 1 секунду и распечатать данный счетчик.

const int Hallsensor=3;
int HallValue;
int LastHallValue;
int Hcount =0;
unsigned long timer = 0;
unsigned long start_time = 0;

void setup() {
  pinMode(Hallsensor, INPUT);
  Serial.begin(9600);
  counting = true;
  start_time = millis();
}

void loop() {
  LastHallValue = HallValue;
  timer = millis();
  if((timer - start_time) >= 1000) {
    HallValue = digitalRead(Hallsensor);
    if (HallValue == LOW and LastHallValue == HIGH) {
      Hcount++;
      Serial.println(Hcount);
    } else {
      if(counting == true) {
        Serial.print("Count is");
        Serial.println(Hcount);
        counting = false;
      }
    }
  }
}

, 👍0

Обсуждение

Ваш датчик Холла, который выводит аналоговый сигнал, пропорциональный напряженности магнитного поля, или он выводит сигнал логического уровня? Пожалуйста, отредактируйте свой вопрос, чтобы включить номер детали датчика Холла и/или схему данных., @jose can u c

Мой датчик Холла выводит аналоговый датчик, пропорциональный напряженности магнитного поля. Высокий и низкий работает в нашем случае (хотя нам нужен усилитель телосложения)., @Willis Houtman


1 ответ


0
const int Hallsensor=3;
int HallValue;
int LastHallValue;
int Hcount =0;

unsigned long timer = 0;
unsigned long lastChangeTime = 0;

void setup()
{

  pinMode(Hallsensor, INPUT);
  Serial.begin(9600);
   counting = true;
    start_time = millis();


}

void loop()
{

    LastHallValue = HallValue;
    HallValue = digitalRead(Hallsensor); 
    if (HallValue == LOW and LastHallValue == HIGH){
        Hcount++;
        lastChangeTime = millis();
        Serial.println(Hcount);   
    }
    else{
        if(counting == true){
            Serial.print("Count is");
            Serial.println(Hcount);
            counting = false;
            // Serial.println(LastHallValue);    
        }
    }

    if( (Hcount>0) && (millis() - lastChangeTime) >= 1000){
        Hcount = 0;// сбросить счетчик, если он не увеличился в последнюю секунду.
    }

}
,

Просто публикация другого кода без объяснения причин не является полезным ответом. **Укажите, что вы изменили** и дайте хотя бы несколько слов объяснения того, какую проблему это решает., @Chris Stratton