Skip to content

Instantly share code, notes, and snippets.

@edirpedro
Last active June 22, 2018 14:01
Show Gist options
  • Save edirpedro/15afd9681c7cb6a0a8fd537f02cb3434 to your computer and use it in GitHub Desktop.
Save edirpedro/15afd9681c7cb6a0a8fd537f02cb3434 to your computer and use it in GitHub Desktop.
Classe Temporizador para Arduino, substitui o uso da função delay()
/*
* Temporizador
* Executa funções após um determinado período de tempo,
* o mesmo que usar delay(), porém sem interromper o fluxo do programa
* Autor: Edir Pedro
* Website: https://gist.github.com/edirpedro/15afd9681c7cb6a0a8fd537f02cb3434
*/
class Temporizador {
private:
long passado = 0;
public:
/* Executa uma função especificada a cada intervalo de tempo definido
* @param tempo {long} Intervalo de tempo em millissegundos
* @param callback {function} Função a ser executada ao atingir o ciclo
*/
void cada(long tempo, void (*callback)()){
long atual = millis();
if (atual - this->passado >= tempo) {
this->passado = atual;
callback();
}
};
};
void setup() {
Serial.begin(9600);
}
// Crie uma instância para cada temporizador que deseja usar no programa
Temporizador t1;
Temporizador t2;
void loop() {
Serial.print(":"); // Imprime no console enquanto estiver rodando o programa
t2.cada(100, oi); // A cada 0,1 segundo executa a função oi()
t1.cada(1000, ola); // A cada 1 segundo executa a função ola()
}
void oi() {
Serial.println("Oi!");
}
void ola() {
Serial.println("Olá!");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment