Hay algunas formas de hacerlo, como el uso de interrupciones de temporizador, etc., pero otra forma es usar una máquina de estados simple para realizar un seguimiento de cuándo ocurrieron los últimos eventos. Considere esto más como un ejemplo de cómo hacerlo porque no está probado y no soy un usuario de Arduino, por lo que es posible que tenga algunos tipos de datos incorrectos. Pero un enfoque sería algo como:
boolean led_on = false;
unsigned long led_toggle_ms = 0;
boolean pump1_on = false;
unsigned long pump_toggle_ms = 0;
void loop()
{
if (millis() - led_toggle_ms >= 500)
{
led_toggle_ms = millis();
led_on = !led_on;
digitalWrite(ledB, led_on);
}
if (millis() - pump_toggle_ms >= 5000)
{
pump_toggle_ms = millis();
pump1_on = !pump1_on;
digitalWrite(pump1, pump1_on);
digitalWrite(pump2, !pump1_on);
}
}
Al hacer un seguimiento de la hora en que ocurrió algo por última vez en lugar de usar delay
, permite que el resto del código continúe ejecutándose. Tenga en cuenta que según la millis () documentación , el valor se desbordará después de aproximadamente 50 días, así que si desea que la aplicación se ejecute Durante más tiempo habrá que tenerlo en cuenta. Si no te importa un fallo momentáneo después de 50 días, podría ser algo simple como:
if ((millis() - led_toggle_ms >= 500) || (millis() < led_toggle_ms))