Encontrei um metodo de executar ações sincronizadas no tempo, sem pausa e facil de expandir, replicar
#define NUMBER_OF_ACTIONS 2
typedef struct{
unsigned long previousTrigger;
unsigned int interval;
void (*function)();
}ProtoThread;
ProtoThread protoThreads[NUMBER_OF_ACTIONS] = {
{0,600,action1}, //triggers every 600 millisecond -a cada 600ms
{1000,1000,action2} //predelay 1000 milliseconds, then from then on always trigger every 1000 millisecond - REPETE CADA 1s
};
// funcao comum do ARDUINO
void loop(){
for (byte i=0; i<NUMBER_OF_ACTIONS; i++) {
if (millis() - protoThreads.previousTrigger > protoThreads.interval) {
protoThreads.previousTrigger = millis();
protoThreads.function();
}
}
}
void action1(){
//executo unica vez após energizar coma traso de 600ms
}
void action2(){
//executo a cada 1 segundo completado }
Um erro o forum, nao permite mostrar o codigo corretamente adicione a funcao loop um campo do array
referenciando a variavel i, nas variaveis protoThreads
.previousTrigger e protoThreads.interval
void loop(){
for (byte i=0; i<NUMBER_OF_ACTIONS; i++) {
if (millis() - protoThreadsAQUI.previousTrigger > protoThreadsAQUI.interval) {
protoThreadsAQUI.previousTrigger = millis();
protoThreadsAQUI.function();
}}}
Agora estou pensado como adaptar, um enable