(Para aquellos que no saben, el juego de simon es la siguiente:
http://www.youtube.com/watch?v=4YhVyt4q5HI)
Materiales / herramientas están bastante sencillo...
Utilicé un cortador del laser pero lo puedes hacer manualmente
Madera contrachapada
Acrílico
Arduino UNO
8 sensores piezoeléctricos
8 LED ' S
Código temporal ha sido implementado, falta sonido pero que vendrá muy pronto
Video rápido, día y noche
http://www.youtube.com/watch?v=ZcibT5wFgy4&feature=youtu.be
Nota: A menos que sienta cómodo con la codificación y jugando con diferente resistencia, quisiera derecha para hacerlo en una escala mayor!
Ejemplo: por
[código]
const int buttonSensor = A5;
int led1 = 5; Pasadores LED
led2 int = 4;
led3 int = 3;
led4 int = 2;
int vuelta = 0;
int inputRead = 0;
/ * int entrada2 = bajo;
input3 int = bajo;
int input4 = bajo; * /
randomArray int [50]; Intencionalmente de largo para almacenar hasta 100 entradas (dudoso que nadie conseguirá esto ahora)
int inputArray [50];
void setup() {}
Serial.Begin(9600);
pinMode (led1, salida);
pinMode (led2, salida);
pinMode (led3, salida);
pinMode (led4, salida);
randomSeed(analogRead(0)); Agregado para generar "más aleatoriedad" con randomArray para la función de salida
para (int y = 0; y < = 99; y ++) {//For declaración a las funciones de entrada y salidas en bucle
Output();
INPUT();
}
}
void loop() {//Unused void loop(), aunque por alguna razón no compila sin este /shrug
}
void output() {//function para generar la matriz de ser igualada por el jugador
para (int y = vuelta; y < = vuelta; y ++) {//Limited la variable de vuelta
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]);
Si (randomArray [x]
== 1) {sentencias //if para mostrar los valores almacenados en la matriz
digitalWrite (LED 1, HIGH);
Delay(500);
digitalWrite (LED 1, bajo);
Delay(100);
}
Si (randomArray [x]
== 2) {
digitalWrite (led2, HIGH);
Delay(500);
digitalWrite (led2, LOW);
Delay(100);
}
Si (randomArray [x]
== 3) {
digitalWrite (LED 3, alto);
Delay(500);
digitalWrite (LED 3, bajo);
Delay(100);
}
Si (randomArray [x]
== 4) {
digitalWrite (led4, HIGH);
Delay(500);
digitalWrite (led4, LOW);
Delay(100);
}
}
}
}
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 la cuenta de vuelta
/ * input1 = digitalRead(switch1);
entrada2 = digitalRead(switch2);
INPUT3 = digitalRead(switch3);
input4 = digitalRead(switch4); * /
inputRead = analogRead(buttonSensor);
Serial.println(inputRead);
Delay(100);
Si (inputRead > 685) {//Checking para pulsar botón
digitalWrite (LED 1, HIGH);
playTone(1915, 200); //Passes valor del tono y la duración del tono a la función de playTone
Delay(200);
digitalWrite (LED 1, bajo);
inputArray [x] = 1;
Delay(50);
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 ((inputRead > 600) & & (inputRead < 680)) {}
digitalWrite (led2, HIGH);
Delay(200);
digitalWrite (led2, LOW);
inputArray [x]
= 2;
Delay(50);
Serial.Print("");
Serial.Print(2);
Si (inputArray [x]
! = randomArray [x]
) {
FAIL();
}
x ++;
}
Si ((inputRead > 535) & & (inputRead < 590)) {}
digitalWrite (LED 3, alto);
Delay(200);
digitalWrite (LED 3, bajo);
inputArray [x]
= 3;
Delay(50);
Serial.Print("");
Serial.Print(3);
Si (inputArray [x]
! = randomArray [x]
) {
FAIL();
}
x ++;
}
Si ((inputRead > 400) & & (inputRead < 525)) {}
digitalWrite (led4, HIGH);
Delay(200);
digitalWrite (led4, LOW);
inputArray [x]
= 4;
Delay(50);
Serial.Print("");
Serial.Print(4);
Si (inputArray [x]
! = randomArray [x]
) {
FAIL();
Serial.Print("Failed");
}
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 < = 5; y ++) {//Flashes luces para el fracaso
digitalWrite (LED 1, HIGH);
digitalWrite (led2, HIGH);
digitalWrite (LED 3, alto);
digitalWrite (led4, HIGH);
Delay(200);
digitalWrite (LED 1, bajo);
digitalWrite (led2, LOW);
digitalWrite (LED 3, bajo);
digitalWrite (led4, LOW);
Delay(200);
}
Delay(500);
vuelta = -1; Restablece gire valor para que el juego se inicia sin necesidad de un botón de reset
} [/ code]