Olá Pessoal.

Eu preciso incrementar uma variável(++1) sempre que pressionar o botão dentro de uma rotina no loop.

O tempo que este botão será pressionado varia de 50 a 500ms.Primeiramente fiz da maneira abaixo,fico bem preciso mas ele congela a rotina enquanto não for solto, o que está me atrapalhando muito.Alguém teria uma sugestão ?

Obrigado.

Att.:Reinaldo de Souza

pinMode(sensor,INPUT_PULLUP);
void loop(){
if (!digitalRead(sensor)){
  qtde ++;
}
while(!digitalRead(sensor)) delay(0); //fim da condiçao
}

Exibições: 143

As respostas para este tópico estão encerradas.

Respostas a este tópico

Olá Reinaldo de Souza

Não é recomendado colar o código no post, pois ele fica excessivamente bagunçado e difícil de ler. O ideal é anexar a .ino com o exemplo do seu problema.

Em todo caso, você pode tentar fazer uma "chave". veja esta lógica de exemplo:

bool chave;

int contador;

if ((botao == HIGH) && (chave == 0)) { chave = 1; contador++;}

else if (botao == LOW) {chave = 0;)

Recomendo também que você faça uma pesquisa sobre "debounce", pois  em pouco tempo você irá sentir a necessidade de conhecer.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço