El código trata de un temporizador. Para setear el tiempo (cada 10 min) hay que dejar el pulsador x segundos. Por ejemplo, si lo dejas presionado 5 segundos el temporizador empezará la cuenta atrás desde 50 minutos.
int red=14;
int green=13;
int boton=6;
int boton2=7;
void setup () {
// Seteamos pines
pinMode (red, OUTPUT);
pinMode (green, OUTPUT);
pinMode (boton, INPUT);
Serial.begin(9600);
}
void loop () {
inicio:
digitalWrite(red,LOW);
digitalWrite(green,LOW);
delay(250);
int estado_boton2;
int estado_boton;
estado_boton2 = digitalRead (boton2);
int contar_segundos2 = 0;
while (estado_boton2 == HIGH)
{
digitalWrite (green, HIGH);
delay (400);
digitalWrite (green, LOW);
delay (300);
contar_segundos2 = contar_segundos2 + 1*2820;
estado_boton2 = digitalRead (boton2);
Serial.print((contar_segundos2)/282);
Serial.print(" min ");
}
long minutos_contar2 = contar_segundos2;
long contar=minutos_contar2 -1;
for ( long esperar = 0; esperar < minutos_contar2; esperar++) {
digitalWrite(red,HIGH);
digitalWrite (green, LOW);
delay (100);
digitalWrite (green, HIGH);
delay (100);
estado_boton2 = digitalRead (boton2);
estado_boton = digitalRead (boton);
if (estado_boton2==HIGH || estado_boton==HIGH){
goto inicio;
}
contar=contar-1;
Serial.print((contar/282)+1);
Serial.print(" min. quedan ");
}
}
El problema es que cuando la cuenta pasa los 110 minutos, el número pasa a ser negativo y deja de funcionar.
Gracias por vuestra atención.
Un saludo!
¿Alguien sabe que puede pasar?
Con unsigned long ya funciona el contador, pero los valores que salen en consola no corresponden a minutos.
Gracias a todos.
Bueno. Aquí está. Problema solucionado, puedo pasar los 110 minutos y muestra lo que queda sin problemas de formato.
No se si es esta manera la que decías, si no lo es, agradecería que me siguieras aconsejando.
Ahora estoy trabajando en darle formato(01 h 32 min 22 seg). He intentado mil cosas pero no se qué hacer.
Un saludo y muchas gracias de nuevo!
Vuelvo a tener problemas. Unas veces funciona y otras no. Cuando no funciona llega al final de la cuenta atrás, y en vez de apagar el led, empieza otra vez la cuenta desde números muy altos.
Gracias.
Vale me contesto yo. El problema es el siguiente. El cristal de nuestro micro no es exacto, entonces, si cojo un minuto me arriesgo a que varíe entre 1001 ms, 999 ms y 1000. Si sale 998 nunca va a ser !=0 porque los cálculos no dan...