Reacciona

¡Pon a prueba tu capacidad de reacción! En este juego, uno de los tres LEDs se iluminarán aleatoriamente. Tienes que golpear el sensor capacitivo correspondiente dentro del tiempo de reacción. Si no lo consigues, el juego finaliza.

Materiales

  • 1 placa Arduino
  • 1 Shield Básica Educativa
  • 1 altavoz piezo
  • 3 LED
  • 3 resistencias de 220 ohm
  • 3 resistencia de 1Mohm
  • 6 cables negros
  • 12 cables de diferentes colores (3 largos)
  • papel de aluminio
  • cinta adhesiva
  • 1 breadboard

Instrucciones

  1. Conecta el shield a la parte superior de tu placa Arduino.
  2. Conecta los tres LED a través del puente de la breadboard (revisa los Pins).
  3. Conecta una resistencia de 220 ​​ohm al Pin digital 9. Conecta la resistencia a la pata larga del primer LED.
  4. Conecta cada pin digital del 10 al 11 a su LED correspondiente siguiendo el mismo método.
  5. Conecta la pata corta de los LEDs a un Pin de Arduino GND utilizando cables negros.
  6. Conecta el cable rojo del altavoz piezo al Pin digital 8 y su cable negro a GND.
  7. Conecta una resistencia de 1MOhm entre los pines digitales 3 y 2, en la breadboard.
    .
  8. Conecta los Pins digitales 4 y 2 y los Pins digitales 5 y 2 siguiendo el mismo método.
  9. Haz un sensor de contacto cortando un cuadrado de papel de aluminio de 5 cm x 5 cm. Envuelve una esquina de la lámina cuadrada a un cable suelto, el cable de metal debe estar en contacto con el papel de aluminio.
  10. Haz tres sensores de contacto, conecta cada pin digital del 3 al 5. Pega los tres sensores firmemente a la mesa, asegurándote de que no se toquen.
  11. Conecta Arduino al ordenador. Mueve la carpeta CapacitiveSensor de la carpeta BasicEducationShield a la librería de la carpeta Arduino. Carga el ejemplo React y prueba el juego.

Código

Puedes encontrar el código en Archivo -> Ejemplos -> BasicEducationShield-> Sports -> React

/*
  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 <CapacitiveSensor.h>
#include <BasicEducationShield.h>
#include "pitches.h"

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

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

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

// 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[0].config(100);
  pad[1].config(100);
  pad[2].config(100);
}

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

  //pick a target between the 3 pads
  int target = random(0, 3);
  //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
}

Cómo funciona

Primero el juego espera durante un período de tiempo aleatorio, antes de elegir un número entre 0 y 2. Este número representa el LED que se encenderá y el sensor asociado a él. El LED se enciende, y el sensor correspondiente espera a ser pulsado. Si tienes la habilidad de pulsarlo dentro del reactTime, sonarán unos aplausos. Entonces el proceso comenzará de nuevo. Sin embargo, si fallas, GameOver () se terminará. Todos los LED se encenderán, sonará un sonido y parpadearán un par de veces. Después, el juego se reiniciará.

¿No funciona?

  1. Consulta la ilustración y vuelve a comprobar las conexiones. Asegúrate de que el shield y los cables estén firmemente conectados.
  2. Aumenta el tiempo permitido de reacción para hacer el juego más fácil y probar que funcione. ¡Asegúrate de volver a cambiarlos cuando todo esté funcionando!
  3. ¿El VU-meter no funciona correctamente? Mira la referencia para corregir el VU-Meter.
  4. ¿El sensor capacitivo no funciona? Mira la referencia para corregir el sensor capacitivo
  5. ¿No puedes cargar el código? Asegúrate de que la librería CapacitiveSensor esté colocada dentro de la carpeta de librerías en la carpeta de Arduino.

¡Sigue experimentando!

  • ¿Se puede hacer juego más difícil? Cambia el tiempo de reacción y el tiempo de espera.
  • No te acaban de gustar los sonidos que emite el piezo? Prueba a hacer tus propias melodías.
  • Intenta cambiar la forma en que el LED parpadea cuando se acaba el juego. Mira el código de ejemplo VUMeterTEst para saber los comandos que puedes usar.
  • ¿Se puede agregar más LEDs y sensores? ¡No olvides agregar ambos tanto a la placa físicamente como al código del programa!