Tenho uma Ethernet Shield que esta respondendo a requisições de clientes, gostaria de executar uma função especifica a cada 5 minutos.
Essa função somente seria de configuração, não vai interferir na requisição dos clientes. Como faço para chamar essa função a cada 5 minutos sem utilizar o delay()? pois a função delay trava o arduino durante esse tempo e ele para de responder aos clientes, quero rodar a função que disse anteriormente e mesmo assim continuar respondendo aos clientes.
Não sei se fui claro, mas se alguém puder me apresentar um tutorial ou link ficaria grato.
Vou utilizar os seguinte código, pois alem de simples é eficiente. Porém tenho uma dúvida. Quando o Arduino exceder a capacidade do unsigned long (overflow ) o sistema vai ter guardado o último número em (UpdateNoIPLastMillis) e vai possivelmente nunca mais atualizar. Não sei se realmente isso vai acontecer, mas alguém com experiência em programação poderia dizer o que vai acontecer depois de MUITO tempo ligado isso? Como corrigir?
unsigned long UpdateNoIPCycle = 300000;
unsigned long UpdateNoIPLastMillis = 0;
void setup(){
Serial.begin(9600);
Serial.println("iniciando...");
}
void loop(){
if(cycleCheck(&UpdateNoIPLastMillis, UpdateNoIPCycle)) {
Serial.println("Verificando");
}
}
// function for multitasking
// http://arduino.cc/forum/index.php/topic,5686.msg44073.html
boolean cycleCheck(unsigned long *UpdateNoIPLastMillis, unsigned long UpdateNoIPCycle) {
unsigned long currentMillis = millis();
if(currentMillis - *UpdateNoIPLastMillis >= UpdateNoIPCycle) {
*UpdateNoIPLastMillis = currentMillis;
return true;
}
else{
return false;
}
}