Provisionalmente el tiempo tiene 3 minutos pero son fijos (180 segundos). Como podría añadir un pulsador que incremente el tiempo de 5 en 5 minutos hasta 45´' ó 60' para poder elegir la duración.
Saludos.
Adjunto codigo:
#include "TimerOne.h"
int timeLine=180;// Tiempo juego 3 minutos provisional
int homeScore=0;
int awayScore=0;
bool paused=0;//estado de start/stop
//Conectar pins del 2 al 7 a pulsadores
//El otro pin de los pulsadores a GND
// funcion de los pulsadores
// 2 Reset general
// 3 start/stop
// 4 +1 Local
// 5 -1 Local
// 6 +1 Visitante
// 7 -1 Visitante
void setup()
{
int n;
for (n=2;n<8;n++)
pinMode(n,INPUT_PULLUP);
Serial.begin(9600);
Timer1.initialize();
Timer1.attachInterrupt(updateTimeline);
}
//establecido por la rutina de interrupción para señalar la necesidad de actualizar la pantalla
bool timeUpdated=true;
void loop()
{
int n;
bool debounce=false;
// Ver como están las entradas
for (n=2;n<8;n++)
if(digitalRead(n)==LOW)
{
debounce=true;
switch(n)
{
case 2://reset
timeLine=180;// Tiempo 3 minutos provisional
homeScore=0;
awayScore=0;
paused=true;
break;
case 3:// start/Stop
paused=!paused;
break;
case 4:// +1 Local
homeScore++;
break;
case 5://-1 Local
if(homeScore>0)
homeScore--;
break;
case 6:// +1 Visitante
awayScore++;
break;
case 7:// -1 Visitante
if(awayScore>0)
awayScore--;
break;
}
}
//Ahora actualizar la pantalla (pero sólo si UPDATETIME ha ejecutado desde la última vez)
if(timeUpdated)
updateDisplay();
if(debounce)
delay(400);
}
void updateDisplay()
{
char timeString[6];
sprintf(timeString,"%d:%d",timeLine/60,timeLine%60);
Serial.println(timeString);
char scoreline[20];
sprintf(scoreline,"Local %d:%d Visitante",homeScore,awayScore);
Serial.println(scoreline);
timeUpdated=false;
}
void updateTimeline()
{
if(!paused)
timeLine--;
timeUpdated=true;
}