Buenas tardes, estimados amigos ojala me puedan ayudar, estoy tratando de prender un led por 3 segundos luego se prende otro led por 3 segundos y que esto se repita cada dos horas, no quiero realizar con dalay() porque el arduino hace la lectura de un dht 11 y por lo que he leido me caeria bien utilizar la funcion millis, alguien me puede guiar en como hacer esto, soy muy novato con arduino, gracias
Eso que has comentado puedes realizarlo de diferentes maneras:
- Delay (cumple la función pero detiene el proceso) la cual no te convence
- Con el tema milis, el cual aún no he tocado con lo que otro podría ayudarte mejor que yo
.
- Con una variable que sume 1 cada loop y que cada por ejemplo 1000 unidades realice la acción.
El problema que veo son las dos horas, que dan para demasiado, por lo que tengo entendido la finción milis indica el tiempo en milisegundos que la placa lleva encendida de modo que deberías reiniciar este contador cada dos horas, la función requiere de una variable en la que almacenar el dato
unsigned long time;
y una operación simple para obtener ese valor y hacerlo manejable.
time = millis();
El problema que presenta es que si lo reseteas puede que algunas librerías te den errores, pero dicho lo anterior seguro que si discurres un poco se te ocurre algún truco(por ejemplo restar el time al milis actual y que la comparación salga como resultado 79.200.000 que sería lo que corresponde a dos horas en milisegundos) o quizas con una busqueda rápida por internet encuentres algo de información sobre como resetear esta cuenta (recuerda buscar en inglés que para eso es el idioma "común")
Suerte con los leds y ya nos comentaras.
he avanzado un poco y tengo lo siguiente:
int led=13;
unsigned long Crono=0;
unsigned int Tiemp=5000;
void setup(){
pinMode(led,OUTPUT);
Serial.begin(9600);
}
void loop(){
if ((Crono+Tiemp)<millis()) {
digitalWrite(led,HIGH);
Crono=millis();
Serial.println(Crono);
}else {digitalWrite(led,LOW);}
}
Esto hace que pase 5 segundos y el led se enciende, pero se apaga de inmediato, alguien me puede ayudar ha hacer que el led no se apague de inmediato que dure encendido unos 2 segundos pero sin delay, muchas gracias por la ayuda
Lean las normas del foro. Usen tags cada vez que posteen un código
Editen lo que han posteado
Parece mentira de cada 5 msgs en 3 o 4 debemos los moderadores estar repitiendo siempre esto.