Hola soy un novato y me gustaría poder resolver esta situación sin tener que recurrir a los delay() (con delay() funciona perfecto, pero quisiera poder hacer esto con millis) , la cuestión es que el switch comienza en estado ON y el led en estado OFF y al cabo de 5 segundos el led pase a estado ON, y cuando el switch pase a estado OFF el led pase a estado OFF en 10 segundos. ( escribí esto simple después puedo darle las etiquetas y el formato adecuado para una buena practica)
Agradezco su ayuda y acepto todas las sugerencias, gracias.
int estado;
void setup() {
pinMode(5, OUTPUT);
}
void loop() {
estado = digitalRead(7); // aqui va un switch simula el on/off
if (estado == 1) {
delay(2000);
digitalWrite(5, HIGH);
} else {
if (estado == 0) {
delay(2000);
digitalWrite(5, LOW);
}
}
}
Ah, disculpa, ya ví que quieres que el led esté iluminado 2 seg y se apague 10 seg . Ok.
Igual ambos ejemplos te pueden servir para entender millis(). Cualquier duda pregunta.
#define pinLed 5
void setup(){
pinMode(pinLed, OUTPUT);
}
void loop(){
static bool estado;
static unsigned int intervalo = 2000;
static unsigned long tiempo;
if(millis() - tiempo >= intervalo || tiempo == 0 ){
estado = !estado;
intervalo = (intervalo == 2000 && tiempo != 0) ? 10000 : 2000;
tiempo = millis();
}
digitalWrite(pinLed, estado);
}
Ante todo gracias por las respuestas, pero mi pregunta es mas o menos como cuando abres una "puerta de casa" y te da por ejemplo 10 segundos para salir cierras la puerta y se enciende un led, y cuando quiera entrar abres la puerta se apaga el led y en 10 segundos el led se enciende definitivamente.
Agradezco toda la ayuda.