Boa tarde pessoal, estou com dificuldades em aplicar um debounce na leitura de um sensor Infra Vermelho.

Quero filtrar bounces e pequenos ruídos via código, e aceitar somente que mude de HIGH para LOW ou vice-versa se a leitura for acima de 500ms.

segue meu código, que não esta dando certo...

--------------------------------------------------------------------------------------

int buttonState; // variável do estado do botão
unsigned long lastDebounceTime = 0; // última vez que o botão foi pressionado
unsigned long debounceDelay = 500; // O intervalo

String passou_peca; // variável que recebe sim/não 

void setup() {  
   pinMode(buttonPin, INPUT);
}

void loop() 
{

 // verifica se o botão foi pressionado
 int buttonState = digitalRead(buttonPin);

 if (buttonState == HIGH)
   {
     if ((millis() - lastDebounceTime) > debounceDelay)
     {  
       passou_peca = "sim";
     }  
     lastDebounceTime = millis();
   }

  if (buttonState == LOW)
  {
    if ((millis() - lastDebounceTime) > debounceDelay)
    {
       passou_peca = "nao";
    }
    lastDebounceTime = millis();
  }

}

Exibições: 96

Responder esta

Respostas a este tópico

Olá Renan.

      Isto foi implementado aqui:  "implementação via Sensor Prox."

      Abrçs

      Elcids

Exato Elcids, postei antes e depois que vi sua resposta..heheh. 

Grato.

RSS

© 2021   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço