Função Arduino IF + TEMPO

Olá, como faço para escrever essa função no arduino:

  • Se o botão1 ficar apertado mais que 2 segundos , Acionar saida1

Não sei como implementar o IF com o tempo de 2 segundos.

Me ajudem por favor.

const unsigned char but_pin = <mete aqui o pino.>; 
unsigned char prev_but = 0; 
unsigned char but = 0; 
unsigned long prev_time = 0 ; 
const unsigned long interval = 2000; 

void loop() {
but = digitalRead(but_pin); 

if (but != prev_but && but == HIGH {
   prev_time = millis(); 
}; 

if (but == HIGH) {
   if (millis() - prev_time > interval) {
      digitalWrite(saida, HIGH); 
   }
} else {
   prev_time = millis(); 
} 

prev_but = but; 
}



Muito obrigado bubulindo, funcionou perfeitamente aqui, se possivel teria como você explicar o código para mim? gostaria de entender como foi feito.

O que é que não entendes no código?

As variaveis (prev_but , but, prev_time e interval), como elas funcionam no programa?

prev_but - Guarda o estado do botao entre ciclos. Tu queres perceber quando o botão mudou de estado e para isso precisas de comparar entre antes (prev_but) e agora (but).

but - dá jeito na lógica passar o estado do botão para uma variável.

prev_time - Tens de saber quando começas a contar o tempo. Prev_time guarda o início dum intervalo.

interval - é o intervalo de tempo que estás a temporizar.

Muito obrigado bubulindo pela explicação, me ajudou muito..

de nada.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.