Contar hasta 10

Publicado el 05 febrero 2015 por Guille
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
  
   }
  
}