Arduino Simon Says (2 / 4 paso)

Paso 2: El dibujo

El bosquejo fue hecho originalmente por Robert Spann en el 2009. Usé una versión anterior de su boceto puesto que no me gustó la manera integró sonido en versiones posteriores del bosquejo. Para dar el sonido del juego he decidido utilizar la biblioteca de Tone.h. La biblioteca no ha sido actualizada desde el lanzamiento de Arduino 1.0, así que siguió adelante y actualizado para ser compatible con Arduino 1.0. Al hacerlo recorte alguno hacia atrás compatibilidad con más viejos IDEs. Así que si luego tu ejecutando una versión antigua del IDE utiliza el enlace en el paso siguiente para descargar la biblioteca original. He conectado una copia de la biblioteca que se actualiza en esta página. Así que asegúrese de descargar y lugar en la carpeta de Arduino y las bibliotecas o el bosquejo no compilará en Arduino 1.0.

Aquí está el bosquejo. También se adjunta un archivo del bosquejo. Si hay que cualquier duda sobre ello por favor hágamelo saber.

/ * Juego de Simon Says. Ahora con efectos de sonido.

HCE de Robert Spann
Código recortado y efectos de sonido añadidos por digimike

Los botones son a pernos designados allí sin desplegable resistencias
y conectado a tierra algo entonces + 5.
*/
#include < Tone.h >
Tono speakerpin;
int starttune [] = {NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_F4, NOTE_G4};
int duration2 [] = {100, 200, 100, 200, 100, 400, 100, 100, 100, 100, 200, 100, 500};
int Nota [] = {NOTE_C4, NOTE_C4, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5};
duración de int [] = {100, 100, 100, 300, 100, 300};

botón Boolean [] = {2, 3, 4, 5}; Los cuatro botón pines de entrada
ledpin Boolean [] = {8, 9, 10, 11};  Pasadores LED
int vuelta = 0;  girar contra
int buttonstate = 0;  Comprobador de estado de botón
randomArray int [100]; Intencionalmente de largo para almacenar hasta 100 entradas (dudoso que nadie conseguirá esto ahora)
int inputArray [100];

void setup()
{
Serial.Begin(9600);
speakerpin.Begin(12); es en el pin 13

para (int x = 0; x < 4; x ++) / / LED alfileres son salidas
{
pinMode (ledpin [x], salida);
}

para (int x = 0; x < 4; x ++)
{
pinMode (botón [x], INPUT);  botón pines son entradas
digitalWrite (botón [x], HIGH);  permiten pullup interna; botones de inicio en posición alta; lógica invertida
}

randomSeed(analogRead(0)); Agregado para generar "más aleatoriedad" con randomArray para la función de salida
para (int thisNote = 0; thisNote < 13; thisNote ++) {}
jugar la siguiente NOTA:
speakerpin.Play(starttune[thisNote]);
sostener la Nota:
Si (thisNote == 0 || thisNote == 2 || thisNote == 4 || thisNote == 6)
{
digitalWrite (ledpin [0], HIGH);
}
Si (thisNote == 1 || thisNote == 3 || thisNote == 5 || thisNote == 7 || thisNote == 9 || thisNote == 11)
{
digitalWrite (ledpin [1], HIGH);
}
Si (thisNote == 8 || thisNote == 12)
{
digitalWrite (ledpin [2], HIGH);
}
Si (thisNote == 10)
{
digitalWrite (ledpin [3], HIGH);
}
Delay(duration2[thisNote]);
parada para la siguiente NOTA:
speakerpin.STOP();
digitalWrite (ledpin [0], LOW);
digitalWrite (ledpin [1], LOW);
digitalWrite (ledpin [2], LOW);
digitalWrite (ledpin [3], LOW);
Delay(25);
}
Delay(1000);
}

void loop()
{
para (int y = 0; y < = 99; y ++)
{
función para generar la matriz de ser igualada por el jugador
digitalWrite (ledpin [0], HIGH);
digitalWrite (ledpin [1], HIGH);
digitalWrite (ledpin [2], HIGH);
digitalWrite (ledpin [3], HIGH);

para (int thisNote = 0; thisNote < 6; thisNote ++) {}
jugar la siguiente NOTA:
speakerpin.Play(Note[thisNote]);
sostener la Nota:
Delay(Duration[thisNote]);
parada para la siguiente NOTA:
speakerpin.STOP();
Delay(25);
}

digitalWrite (ledpin [0], LOW);
digitalWrite (ledpin [1], LOW);
digitalWrite (ledpin [2], LOW);
digitalWrite (ledpin [3], LOW);
Delay(1000);

para (int y = vuelta; y < = vuelta; y ++)
{//Limited de la variable a su vez
Serial.println(""); Algunas salida serie a seguir a lo largo de
Serial.Print ("convertir:");
Serial.Print(y);
Serial.println("");
randomArray [y] = al azar (1, 5); Asignar a un número al azar (1-4) a randomArray [y], y siendo la vuelta cuenta
para (int x = 0; x < = vuelta; x ++)
{
Serial.Print(randomArray[x]);

para (int y = 0; y < 4; y ++)
{

Si (randomArray [x] == 1 & & ledpin [y] == 8)
{sentencias //if para mostrar los valores almacenados en la matriz
digitalWrite (ledpin [y], HIGH);
speakerpin.Play (NOTE_G3, 100);
Delay(400);
digitalWrite (ledpin [y], LOW);
Delay(100);
}

Si (randomArray [x] == 2 & & ledpin [y] == 9)
{
digitalWrite (ledpin [y], HIGH);
speakerpin.Play (NOTE_A3, 100);
Delay(400);
digitalWrite (ledpin [y], LOW);
Delay(100);
}

Si (randomArray [x] == 3 & & ledpin [y] == 10)
{
digitalWrite (ledpin [y], HIGH);
speakerpin.Play (NOTE_B3, 100);
Delay(400);
digitalWrite (ledpin [y], LOW);
Delay(100);
}

Si (randomArray [x] == 4 & & ledpin [y] == 11)
{
digitalWrite (ledpin [y], HIGH);
speakerpin.Play (NOTE_C4, 100);
Delay(400);
digitalWrite (ledpin [y], LOW);
Delay(100);
}
}
}
}
INPUT();
}
}

void input() {//Function para permitir la entrada del usuario y comprobación de entrada contra la matriz generada

para (int x = 0; x < = vuelta;)
{//Statement controlado por girar a la cuenta

para (int y = 0; y < 4; y ++)
{

ButtonState = digitalRead(button[y]);

Si (buttonstate == baja & & botón [y] == 2)
{//Checking para pulsar botón
digitalWrite (ledpin [0], HIGH);
speakerpin.Play (NOTE_G3, 100);
Delay(200);
digitalWrite (ledpin [0], LOW);
inputArray [x] = 1;
Delay(250);
Serial.Print("");
Serial.Print(1);
Si (inputArray [x]! = randomArray[x]) {entrada de valor //Checks por el usuario y los controles contra
FAIL();                              el valor en el mismo lugar en la matriz generada
} Se llama función de fail //The si no coincide con
x ++;
}
Si (buttonstate == baja & & botón [y] == 3)
{
digitalWrite (ledpin [1], HIGH);
speakerpin.Play (NOTE_A3, 100);
Delay(200);
digitalWrite (ledpin [1], LOW);
inputArray [x] = 2;
Delay(250);
Serial.Print("");
Serial.Print(2);
Si (inputArray [x]! = {randomArray[x])}
FAIL();
}
x ++;
}

Si (buttonstate == baja & & botón [y] == 4)
{
digitalWrite (ledpin [2], HIGH);
speakerpin.Play (NOTE_B3, 100);
Delay(200);
digitalWrite (ledpin [2], LOW);
inputArray [x] = 3;
Delay(250);
Serial.Print("");
Serial.Print(3);
Si (inputArray [x]! = {randomArray[x])}
FAIL();
}
x ++;
}

Si (buttonstate == baja & & botón [y] == 5)
{
digitalWrite (ledpin [3], HIGH);
speakerpin.Play (NOTE_C4, 100);
Delay(200);
digitalWrite (ledpin [3], LOW);
inputArray [x] = 4;
Delay(250);
Serial.Print("");
Serial.Print(4);
Si (inputArray [x]! = randomArray[x])
{
FAIL();
}
x ++;
}
}
}
Delay(500);
a su vez ++; Aumenta la cuenta a su vez, también la última acción antes de iniciar la función de salida de nuevo
}

void fail() {//Function utilizado si el jugador no coincide con la secuencia

para (int y = 0; y < = 2; y ++)
{//Flashes de luces para el fracaso

digitalWrite (ledpin [0], HIGH);
digitalWrite (ledpin [1], HIGH);
digitalWrite (ledpin [2], HIGH);
digitalWrite (ledpin [3], HIGH);
speakerpin.Play (NOTE_G3, 300);
Delay(200);
digitalWrite (ledpin [0], LOW);
digitalWrite (ledpin [1], LOW);
digitalWrite (ledpin [2], LOW);
digitalWrite (ledpin [3], LOW);
speakerpin.Play (NOTE_C3, 300);
Delay(200);
}
Delay(500);
vuelta = -1; Restablece gire valor para que el juego se inicia sin necesidad de un botón de reset
}

Artículos Relacionados

Total Recall - Arduino Simon Says en esteroides!

Total Recall - Arduino Simon Says en esteroides!

Total Recall es un Simon juego para Arduino. Arduino básico Simon Game consta de 4 botones, 4 LEDs, un Arduino, un código y tal vez un altavoz y efectos de sonido. Total Recall toma las cosas un paso más allá añadiendo una pantalla LCD y ofrece 1 y j
Arduino Simon Say

Arduino Simon Say

esta es mi versión de Arduino Simon SayNecesitarás:6 x 220 ohm resistencias3 X leds, uno para cada color, verde, rojo, amarillo3 X presionar botones1 X ArduinoAlgunos cablesPaso 1: Diagrama de circuitos 5 voltios pasan a través de los botones para lo
Crear tu propio juego de Simon Says y Arduino DIY Electro masa!

Crear tu propio juego de Simon Says y Arduino DIY Electro masa!

Para empezarEl objetivo de este Instructable es convertir a la masa del electro en un botón capacitivo del tacto con Arduino utilizando la librería de arduino CapSense y luego usarlo para crear un Simon Says juego. Utilizaremos un botón de arranque c
Simon Says con LEDs y sonido

Simon Says con LEDs y sonido

Hola y Bienvenidos de nuevo a Instructables!Todos muchos de nosotros han jugado Simon Says donde inevitablemente te encuentras saltando alrededor en un pie mientras elefante ruidos y te preguntas a ti mismo por qué nunca fue una buena idea de decir "
Arduino Simon dice juego de

Arduino Simon dice juego de

Este es un divertido proyecto que hice con mis hijos durante las vacaciones.Para este juego la casa decidí usar una vieja caja de iPhone 5c. Lo tenía justo ahí y parecía del tamaño adecuado.Lista de componentes:(Nota: todos los enlaces son productos
Simon Says game

Simon Says game

He creado un juego de memorias electrónicas en el estilo del "Simon Says" (un icono de los años 70). Basado en un ARM cortex M0 microcontrolador. Usted encontrará un manual detallado de construcción, esquemas y código fuente en mi sitio Web. Tam
Juego de Simon Says interactivo

Juego de Simon Says interactivo

no recuerdo bien cómo es este juego evolucionado pero la principal motivación detrás de él mejorar el procesamiento cognitivo y la atención por que los jugadores se centran en una secuencia de golpes de tambor y luego repetir esa secuencia. Los jugad
Arduino Simón dice

Arduino Simón dice

Cuando era niño siempre he amado mucho mis padres odiaban el juego de Simon Says, utilizando un arduino simple, algunos LEDs, resistencias, pulsadores y un piezo que podemos hacerlo nosotros mismos! Probado y diseñado este circuito usando circuitos 1
Juego de rápido y fácil Simon

Juego de rápido y fácil Simon

No hay puentes! SIN cables! SIN soldar! NO protoboard!Pensando fuera de la caja.Por lo que quiere mostrar su microcontrolador en concierto con algunos modelos periféricos adicionales muy rápido, antes que amigos o pariente están en camino...Puesto en
Hacer un juego SNES controlador basado en Arduino

Hacer un juego SNES controlador basado en Arduino

en este instructable, le mostraré cómo un controlador SNES, enganchar a un Arduino y un simple Simon Says juego.Esto podría ser usado para crear un juego más complejo, o tal vez incluso tratar de hacer un Arduino basado en mini-console.  Finalmente,
Simon dice juego con controlador único "twister"

Simon dice juego con controlador único "twister"

hice este proyecto para un proyecto de clase Final en mi clase de tecnologías de fabricación de este pasado semestre. El objetivo de este proyecto es hacer un control pad de tablero del twister para cualquier juego makey makey. Usé mi tablero de cont
IcosaLEDron: Una bola de LED inteligente de Multi

IcosaLEDron: Una bola de LED inteligente de Multi

¿Qué es un IcosaLEDron? Es un programable, recargable 20 caras "bola" con un LED RGB en cada cara. Dentro es un PCB personalizado equipado con el Atmega328p que es Arduino compatible que permite fácil programación de efectos distintos. Con 20 LE
Android Bluetooth lanzallamas x4 calabaza Simón dice

Android Bluetooth lanzallamas x4 calabaza Simón dice

¡ ADVERTENCIA! Este proyecto contiene combustibles extremadamente inflamables.A pesar de que he tomado medidas de precaución extra, este proyectose recomienda no intentar en casa. Proceda bajo su propio riesgo.¿Quieres darle vida a su Halloween este
Agua de la máquina (JokeBox)

Agua de la máquina (JokeBox)

Este instructivo le guiará en el proceso de hacer un JokeBox.¿Qué es un JokeBox? Es una máquina de agua integrada en un jukebox. El JokeBox tiene 4 bombas, chorros de agua se rocía fuera 1 de las bombas. Las 4 bombas vuelva a colocar el LED del juego