Estoy tratando de abrir y cerrar una pequeña puerta que debería abrirse o cerrarse cada 12 horas. Me preguntaba si podría hacer un pequeño script de bucle con un retraso () durante 12 horas, retraso (43 200 000 000); ¿Supongo? Sin embargo, no tengo idea si eso es posible y / o recomendable. Algunos comentarios / alternativas (si es necesario) serían buenos :)
arduino-uno
timers
Fred Pannekoek
fuente
fuente
Respuestas:
El método de reloj en tiempo real es la forma más precisa, pero de lo contrario use
millis
Esto retrasará hasta aprox. 4294967295 ms (2 ^ 32-1) o 49 días, después de los cuales el temporizador alcanzará el valor de
startMillis
fuente
delay(LONG_DELAY_MS)
? La implementación de arduino acepta largos sin firmar. Tampoco estoy completamente seguro de que el código funcione correctamente cuando semillis()
envuelve, y es más pequeño questartMillis
delay()
tiene sus usos, pero por largas demoras no es bueno. Simplemente le dice al microcontrolador que no haga nada durante losx
ciclos de reloj. Durante ese tiempo, tu Arduino no puede hacer nada más.Su mejor opción sería usar una cosa llamada reloj de tiempo real (RTC). Estos chips están hechos específicamente para realizar un seguimiento del tiempo, y puede conectarlos a su Arduino con facilidad. Aquí hay un ejemplo de cómo podrías hacer eso.
fuente
Puede usar la interrupción de vigilancia y hacer que su MCU duerma mientras espera y ahorre energía.
Pero tenga en cuenta que solo ahorrará energía si su placa también lo ahorra. Eso significa que debe tener un regulador de bajo voltaje de reposo en lugar de los reguladores habituales que equipan las placas Arduino más comunes, como la Uno. De lo contrario, no importa si su MCU ahorra energía si su placa no lo hace.
Aquí está el código (no probado):
El código que copié es de esta página: Arduino de baja potencia con el temporizador de vigilancia .
fuente
¿Tiene un sueño (sin int int segundos) disponible?
Si no, esto le permitiría retrasar () mucho tiempo:
fuente
Esto funcionará:
fuente
Solo uso para bucles cuando no quiero hacer cosas en el medio:
fuente
delay(43200000)
.