Last active
June 22, 2018 14:01
-
-
Save edirpedro/15afd9681c7cb6a0a8fd537f02cb3434 to your computer and use it in GitHub Desktop.
Classe Temporizador para Arduino, substitui o uso da função delay()
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* 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(); | |
} | |
}; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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