Estado alto por largo tiempo

hola a todos, necesito una ayuda, quiero prender una valvula por 30 minutos o 3 horas de seguido, pero apenas conozco que arduino trabaja en millis entoces no se si deba poner 1'800.000 milis para los 30 minutos, me recomendaron usar un modulo relog y poner (una) hora de prendido y pasados 30 minutos (otra) hora para apagado, pero no me sirve asi, la pregunta es: que codigo existe? que libreria existe? de que forma hago para que pueda hacer por ejemplo (y yo se que esto es horrible) (delay=30) y que esos 30 sean minutos o bueno que me aconsejan, muchas gracias!!

No entiendo cuál es tu duda, ¿tener que poner cifras "grandes"?

El contador de millis(), en un uso continuo obviamente, se reinicia cada 49 días (lo cual no es ningún problema en un código bien hecho), por lo que 3 hs no es nada que no se pueda manejar.

Si te molesta poner 1800000 para indicar 30 minutos, puedes poner 30 * 60 * 1000.
¿Te sigue molestando? Haz una sencilla función que pase los minutos a milisegundos como ésta

unsigned long min2ms(unsigned int minutos){
  return minutos * 60000UL;  // => minutos * 60 * 1000
}

y la usas (con tu horrible ejemplo :wink: )

delay(min2ms(30));  // => delay(1800000)

Ahora, tener detenido el micro 30 min o 3 hs con delay(), es un despropósito y te imposibilita realizar cualquier otra acción. Ojo con eso.

Saludos

Hola,
¿Que grado de exactitud precisas?. Con delays, millis o micros tienes retrasos, por ejemplo con millis unos dos segundos por cada 5 minutos. Si eso te es valido adelante y ojo a lo que te dice @gatul con lo de denener al micro. Si no son aceptables tedras que usar un modulo de reloj.
Saludos.