martes, 25 de junio de 2013

Arduino Tutorial 6: Hagamos un juego. Apunta bien!!

Hola buenas, pues hoy quiero prepararos un minijuego para recordar todo lo que ya hemos visto e introducir un nuevo elemento: el pulsador.


Hasta ahora hemos visto elementos que sólo reaccionaban a las órdenes que ya habíamos establecido previamente.Ahora nosotros podemos alterar las órdenes que indiquemos en función de si hemos pulsado no el pulsador. Daros cuenta de que entonces nuestro pulsador se convierte en un elemento de control, con el que podemos dar órdenes al proyecto.

Este juego va a consistir en que vamos a tener 5 Leds iluminandose de derecha a izda  y cuando el led iluminado sea el del centro, entonces usaremos el pulsador para "dispararlo". El zumbador que vamos a colocar sonará y los led comenzarán a ir más deprisa. Tendremos 5 niveles de dificultad, en los que el tiempo de intermitencia de cada led irá siendo menor.

Esta práctica nos va a servir para repasar lo que ya sabíamos acerca de las salidas (luces,sonido), repasar los conceptos como vectores y bucles, y para introducir este nuevo concepto de órdenes.

Para los que no hayais visto nunca el pulsador os recomiendo que veais este tutorial desde arduino


Código del texto.

// Declaramos un vector que va a contener nuestros leds
int leds[ ] = {2,3,4,5,6};
//La variable n nos permite "contar" el número de leds
int n=0;
//El tiempo variará según las condiciones del juego
int tiempo= 300;
int button = 10;
int zumbador= 11;

//Declaramos una función que actúe si se activa el pulsador a la vez que el led de en medio.

void aciertooerror(){
  //En concreto la condición debe ser que el pulsador "button" esté "ALTO" a la vez que el led número 3. 
   if(digitalRead(button)==HIGH && n==2) {
    //Esto produce que el zumbador de una "nota", y que el tiempo de "lectura" sea menor. 
      digitalWrite(zumbador,HIGH);
      delay (1000);
      digitalWrite(zumbador,LOW);
      tiempo = tiempo - 50;
   
 //Al 5ºintento se reinicia el juego.
    if(tiempo<60){
      tiempo=300;
     }
  }
}

void setup() {                
  // declaramos los pines como salidas. Utilizamos un bucle 
  for(n=0;n<5;n++){
  pinMode(leds[n], OUTPUT); 
  }  
  pinMode(button, INPUT);     
  pinMode(zumbador, OUTPUT);
}

// Utilizamos dos bucles for, el primero para encender todos los leds en orden ascendente y el segundo para apagarlos en orden descendente
// Entre ellos llamamos a la funcion aciertooerror.
void loop(){
  for(n=0;n<5;n++) {
     digitalWrite(leds[n],HIGH);
     delay(tiempo);
     aciertooerror();
     digitalWrite(leds[n],LOW);
     delay(tiempo);
   }
}

Cualquier duda que tengais podeis comentarla aquí abajo y sino mandarme un mail. Pronto nos vemos con nuevas prácticas HASTA LUEGO!.