Vamos a realizar un sencillo juego que consiste en contar mentalmente 10 segundos. Para ello solo vamos a necesitar una resistencia de 15K, un pulsador y un arduino.
El esquema ha realizar es el siguiente:
Antes de empezar el juego, hay que abrir el Monitor Serial. Después hay que pulsar el pulsador y empezar a contar mentalmente 10 segundos. Cuando conteis 10 segundos, hay que volver a pulsar el pulsador. En el Monitor Serial aparecerá si hemos contado menos, más o 10 segundos exactos.
El código ha insertar es el siguiente:
const int botonPin = 2; // PIN para el botón
const int ledPin = 13; // PIN para el LED
static int tiempo; // variable que recoge tiempo. Se define como static para poder utilizarla fuera de bucles
int estadoBoton = 0; // Estado del botón
void setup() {
Serial.begin(9600); // Conecta con el Serial Monitor
Serial.println("Pulsa el boton, cuenta mentalmente 10 segundos y clica de nuevo!"); // Frase de inicio del juego
pinMode(ledPin, OUTPUT); // indica que el LED es salida
pinMode(botonPin, INPUT); // indica que el botón es entrada
}
void loop(){
estadoBoton = digitalRead(botonPin); // lee el estado del botón
if (estadoBoton == HIGH) { // si el botón es apretado
digitalWrite(ledPin, HIGH); // el LED se enciende
Serial.println("CONTANDO!"); // se indica que comienza la cuenta
for (tiempo=0;tiempo<10000;tiempo=tiempo+100) { // bucle contador en décimas de segundo
int segundoClick = digitalRead(botonPin); // se define segundoClick
if (segundoClick==1 & tiempo>1000) { // si hay segundoClick
Serial.print("NO TE HAS PASADO DE 10, SOLO "); // si pulsa el botón antes de llegar a 10 segundos...
break; // se rompe el bucle
};
delay(100);
};
Serial.print("PASARON "); // ultimas frases indicando segundos contados
Serial.print(tiempo/1000);
Serial.println(" SEGUNDOS");
Serial.println("--------------------");
delay(1000);
digitalWrite(ledPin, LOW); // se apaga el LED
estadoBoton = LOW; // se reinicia el estado del botón a 0
}
}