Eu de novo em mais um post surpreendente, espetacular!! Uma coisa que não sabia que existia no arduino: Threads. Claro! O arduino processa código C, então dá pra fazer isso e muito mais. Em baixo vai o código de um temporizador que precisei fazer pro projeto Kerberos:
void requireStatus(){
Serial1.println("Status");
}
void requireModo(){
Serial1.println("Modo");
}
// Envio de mensagens para o controle
#define NUMBER_OF_ACTIONS 2
// Classe da Thread
typedef struct{
unsigned long previousTrigger;
unsigned int interval;
void (*function)();
}ProtoThread;
// Instancia da Thread
ProtoThread protoThreads[NUMBER_OF_ACTIONS] = {
{5000,10000,requireModo},
{2000,10000,requireStatus} //predelay 2000 milliseconds, then from then on always trigger every 1000 millisecond - REPETE CADA 1s
};
void loop(){
delay(100);
// Verifica Threads
for (byte i=0; i<NUMBER_OF_ACTIONS; i++) {
if ((millis() - protoThreads[i].previousTrigger) > protoThreads[i].interval) {
protoThreads[i].previousTrigger = millis();
protoThreads[i].function();
}
delay(100);
}
}
Dando uma explicada sobre o que tá acontecendo: o comando 'typedef struct' vai criar uma estrutura, uma classe chamada ProtoThread. Logo abaixo estamos instanciando ela passando o tempo para iniciar a partir do power on do arduino, o tempo de espera para ser executada novamente e a função que irá chamar. Veja que o Loop é o encarregado de fazer a verificação.
Por enquanto é só pessoal! Qualquer dúvida comenta ai.
ja ta ja ne
0 comentários:
Postar um comentário