Hola espero esten bien, otra vez yo, avanzo y encuentro mas complicaciones,les platico. Tengo un interruptor que al estar apagado me imprime en el monitor serial "Esta apagado" y tiene un led apagado( muy obvio xD) y cuando activo el interruptor quiero que encienda el led al minuto de haberlo activado, se me ocurria con millis(); guardar el tiempo que lleva el arduino en una variable y en otra sumarle 60000(1 min) para que en un if checara si ya habia llegado al minuto y encendiera el led y me imprimiera que habia pasado un minuto. El problema es que nunca enciende el led, solamente al estar apagado me imprime lo de "Esta apagado", tambien queria sacar el tiempo total que habia estado activado el interruptor, asi que al apagar el interruptor tambien guardaba en otra variable lo que tenia millis(); para sacar una diferencia y tener el tiempo total, eso tampoco me lo imprime, para hacer pruebas quise imprimir las variables donde guardo los tiempos en millis y tampoco me imprime nada, solo el texto. adjunto el codigo y una foto del monitor serial si sirve de algo. Disculpen las molestias, les agradeceria muchisimo cualquier ayuda.
const int pinLed=13; //Pin del led
const int pinBoton=8; //Pin del interruptor
// variables para guardar los valores de los actuadores
int estadoBoton = 0; // variable para guardar el estado del interruptor
int estadoLed = 0; // variable para guardar el estado del led
unsigned long tiempo_inicio=0; //Variable para guardar el tiempo cuando se enciende el interruptor
unsigned long tiempo_fin=0; //Variable para guardar el tiempo cuando se apaga el interruptor
unsigned long tiempo_encendido=0; //Variable para la referencia de 1 minuto
float tiempo_total=0; //Variable para el tiempo total que duro encendido el led
int habilitador=0; //habilitador para imprimir el tiempo que estuvo encendido(tiempo_total)
void setup() {
// inicializa el pin del led como de salida
pinMode(pinLed, OUTPUT);
// inicializa el pin del boton como de entrada
pinMode(pinBoton, INPUT);
Serial.begin(9600);
}
void loop() {
// lee el valor del estado del boton
estadoBoton = digitalRead(pinBoton); // lee el estado del boton en pinBoton
// checa si el estado del boton es HIGH
if (estadoBoton == HIGH){
habilitador=1; //Cuando el interruptor se pone en 1 la primera vez pasa a uno para poder imprimir el tiempo total con un if
digitalWrite(pinLed, HIGH); // prende el led
tiempo_inicio= millis(); //guardo el tiempo que lleva al activar el interruptor
tiempo_encendido=tiempo_inicio+60000; //sumo el tiempo de inicio y 60000 para tener el equivalente a un minuto
if(tiempo_inicio>=tiempo_encendido) //checo si ya paso el minuto
{
Serial.println("Pasaron 1 minuto");
}
}
else {
digitalWrite(pinLed, LOW); // apaga el led
Serial.println("Boton apagado no esta contando");
if(habilitador==1){ //Este es el habilitador para que al activar y desactivar el interruptor realice lo siguiente
tiempo_fin=millis(); //Guardo el tiempo que llevaba al cerrar el interruptor
tiempo_total=(((tiempo_fin-tiempo_inicio)/1000)/60.0); //Hago el calculo de cuanto duro encendido el led
Serial.print("tiempo que estuvo encendido:");
Serial.println(tiempo_total);
Serial.println(tiempo_inicio);
Serial.println(tiempo_fin);
}
}
}
