(Pour ceux qui ne connaissent pas, le jeu de simon est le suivant :
http://www.youtube.com/watch?v=4YhVyt4q5HI)
Matériaux / outils sont assez simple...
J’ai utilisé un cutter laser, mais vous pouvez le faire manuellement
Contreplaqué
Acrylique
Arduino UNO
8 capteurs Piezo
8 LED
Code temporaire a été mis en place, manque son mais cela viendra assez vite
Vidéo rapide, jour et nuit
http://www.youtube.com/watch?v=ZcibT5wFgy4&feature=youtu.be
Remarque : Sauf si vous vous sentez confortablement avec codage et jouer avec les différentes résistances, je donnerais avise pour que cela soit dans une plus grande échelle !
Exemple : par
[code]
const int buttonSensor = A5 ;
led1 int = 5 ; Broches de la LED
led2 int = 4 ;
led3 int = 3 ;
led4 int = 2 ;
Tournez int = 0 ;
int inputRead = 0 ;
/ * int input2 = faible ;
int input3 = faible ;
int input4 = bas; * /
int randomArray [50] ; Intentionnellement de long pour stocker jusqu'à 100 entrées (douteux n’importe qui obtiendra ce jour)
int inputArray [50] ;
void setup() {}
Serial.Begin(9600) ;
pinMode (led1, sortie) ;
pinMode (led2, sortie) ;
pinMode (DEL3, sortie) ;
pinMode (led4, sortie) ;
randomSeed(analogRead(0)) ; Ajouté pour générer « plus aléatoire » avec le randomArray pour la fonction de sortie
pour (int y = 0; y < = 99; y ++) {//For déclaration à effectuer une boucle sur les fonctions d’entrée et de sortie
Output() ;
Input() ;
}
}
void loop() {//Unused void loop(), si pour une raison quelconque ils ne compilent pas sans cette /shrug
}
Sub output() {//function pour générer le tableau soit mis en correspondance par le joueur
pour (int y = virage; y < = virage; y ++) {//Limited de la variable de la tour
Serial.println("") ; Une sortie série à suivre le long
Serial.Print ("tourner:") ;
Serial.Print(y) ;
Serial.println("") ;
randomArray [y] = aléatoire (1, 5) ; Vous affectez un nombre aléatoire (1-4) à la randomArray [y], y étant la tour compter
pour (int x = 0; x < = virage; x ++) {}
Serial.Print(randomArray[x]) ;
Si (randomArray [x]
== 1) {//if déclarations pour afficher les valeurs stockées dans le tableau
digitalWrite (led1, HIGH) ;
Delay(500) ;
digitalWrite (led1, faible) ;
Delay(100) ;
}
Si (randomArray [x]
== 2) {
digitalWrite (led2, HIGH) ;
Delay(500) ;
digitalWrite (led2, faible) ;
Delay(100) ;
}
Si (randomArray [x]
== 3) {
digitalWrite (DEL3, HIGH) ;
Delay(500) ;
digitalWrite (DEL3, faible) ;
Delay(100) ;
}
Si (randomArray [x]
== 4) {
digitalWrite (led4, HIGH) ;
Delay(500) ;
digitalWrite (led4, faible) ;
Delay(100) ;
}
}
}
}
input() Sub {//Function pour permettre l’entrée d’utilisateur et vérification d’entrée contre le tableau généré
pour (int x = 0; x < = tourner;){//Statement commandée par le comte de la tour
/ * input1 = digitalRead(switch1) ;
INPUT2 = digitalRead(switch2) ;
INPUT3 = digitalRead(switch3) ;
4 = digitalRead(switch4); * /
inputRead = analogRead(buttonSensor) ;
Serial.println(inputRead) ;
Delay(100) ;
Si (inputRead > 685) {//Checking pour pousser le bouton
digitalWrite (led1, HIGH) ;
playTone(1915, 200) ; //Passes ton valeur et durée de la tonalité à la fonction playTone
Delay(200) ;
digitalWrite (led1, faible) ;
inputArray [x] = 1 ;
Delay(50) ;
Serial.Print("") ;
Serial.Print(1) ;
Si (inputArray [x]! = randomArray[x]) {//Checks valeur entrée par l’utilisateur et le vérifie contre
Fail() ; la valeur au même endroit sur le tableau généré
} Function fail //The est appelée si elle ne correspond pas
x ++ ;
}
Si ((inputRead > 600) & & (inputRead < 680)) {}
digitalWrite (led2, HIGH) ;
Delay(200) ;
digitalWrite (led2, faible) ;
inputArray [x]
= 2 ;
Delay(50) ;
Serial.Print("") ;
Serial.Print(2) ;
Si (inputArray [x]
! = randomArray [x]
) {
Fail() ;
}
x ++ ;
}
Si ((inputRead > 535) & & (inputRead < 590)) {}
digitalWrite (DEL3, HIGH) ;
Delay(200) ;
digitalWrite (DEL3, faible) ;
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, faible) ;
inputArray [x]
= 4 ;
Delay(50) ;
Serial.Print("") ;
Serial.Print(4) ;
Si (inputArray [x]
! = randomArray [x]
) {
Fail() ;
Serial.Print("Failed") ;
}
x ++ ;
}
}
Delay(500) ;
tour ++ ; Incrémente le nombre de tour, aussi la dernière action avant de démarrer la fonction sortie maintes fois
}
fail() Sub {//Function utilisé si le joueur ne peut pas correspondre à la séquence
pour (int y = 0; y < = 5; y ++) {//Flashes s’allume pour défaut
digitalWrite (led1, HIGH) ;
digitalWrite (led2, HIGH) ;
digitalWrite (DEL3, HIGH) ;
digitalWrite (led4, HIGH) ;
Delay(200) ;
digitalWrite (led1, faible) ;
digitalWrite (led2, faible) ;
digitalWrite (DEL3, faible) ;
digitalWrite (led4, faible) ;
Delay(200) ;
}
Delay(500) ;
tourner = -1 ; Réinitialisations tourner valeur jusqu'à ce que le jeu recommence sans avoir besoin d’un bouton de réinitialisation
} [/ code]