Reacciona. Arduino Castilla 2014

reacciona ArduinoHola, somos el equipo 4 del instituto IES Sefarad y en la semana de los deportes hemos desarrollado el proyecto de las carreras. El proyecto consiste en tres LEDs que se iluminan aleatoriamente. Hay que tocar el sensor capacitivo correspondiente al LED que se enciende dentro del tiempo de reacción. Si no lo consigues, el juego finaliza.


Nuestras modificaciones al programa han sido:

Para que el juego se haga un poco más difícil hemos hecho algunas modificaciones, como por ejemplo: hemos añadido un LED más para que sea más complicado y, a su vez, hemos cambiado el tiempo de reacción a un poco más lento para que nos diera tiempo a reaccionar frente al LED encendido.

El código del programa modificado es:

/*
  React
  Test your reaction time!

  In this game, one of three LEDs will randomly light up.
  You must tap the corresponding capacitive sensor as quick
  as possible. If you don’t react fast enough, the game is over.

  (c) 2013 Arduino Verkstad
*/

#include 
#include 
#include "pitches.h"

//Define the 4 LEDs
int ledPins[] = {9, 10, 11, 12};
int pinCount = 4;
VUMeter LEDs;

//There're 4 pads for pressing
CapacitiveSwitch pad[4];

//You have 750 milliseconds to press the pad
int reactTime = 750;

// the piezo connected to digital pin 8
Melody piezo = Melody(8);

void setup(){
  LEDs.config(pinCount, ledPins);
  LEDs.begin();

  //Configure the pads
  pad[0] = CapacitiveSwitch(2,3);
  pad[1] = CapacitiveSwitch(2,4);
  pad[2] = CapacitiveSwitch(2,5);
  pad[3] = CapacitiveSwitch(2,6);
  pad[0].config(100);
  pad[1].config(100);
  pad[2].config(100);
  pad[3].config(100);
}

void loop(){
  //Wait for a random time before each turn begins
  delay(random(50, 2000));

  //pick a target between the 4 pads
  int target = random(0, 4);
  //Light up the LED
  LEDs.on(target);

  //If the pad corresponding to the LED is pressed
  if(pad[target].pressed(reactTime)){
    LEDs.off(target);

    //Play the winning sound
    int melody[] = { NOTE_GS4, NOTE_C5};
    int noteDurations[] = { 8, 8};
    int numberOfNotes = 2;
    piezo.play(numberOfNotes, melody, noteDurations, 1);
  }
  else{
    //Else if the reaction is too slow, run the function gameOver()
    gameOver();
  }
}

void gameOver(){
  //Turn all LEDs on
  LEDs.fill(pinCount);

  //Play a melody
  int melody[] = { NOTE_E2, NOTE_C2};
  int noteDurations[] = { 2, 1};
  int numberOfNotes = 2;
  piezo.play(numberOfNotes, melody, noteDurations, 1);

  LEDs.blinkAll(100, 10);
  LEDs.fill(0); //Tun all LEDs off
}

Nuestra presentación del proyecto en diapositivas:

El vídeo en el que explicamos en que consiste nuestro proyecto y mostramos cómo se juega:

Este proyecto ha sido realizado por las alumnas de 4º de ESO del IES Sefarad: Elena, Cristina y Áurea.