In questo Arduino progetto mostro come si può realizzare il gioco che dice Simon con un Arduino.
Simon Says è un gioco in cui hai 4 luci, ognuna collegata a un pulsante. All'inizio si accende una spia.
Quindi premere il pulsante corrispondente. Se hai premuto il pulsante destro, la stessa e un'altra spia si accendono. Ogni volta che lo fai bene, entra una luce, ogni volta che arriva una luce sali di un giro. In questo progetto puoi regolare quanti round vuoi giocare.
Se non ottieni una sequenza corretta, perdi la partita e ricomincia da capo. Ogni volta che il gioco viene riprodotto, inizia una sequenza casuale.
- Livello – Principiante 30%
- Durata – 20/30 Min 35%
- Costi – € 36,87 euro completo 30%
Passaggio 1: forniture
1X Arduino UNO
1X paneboard
Cavi di collegamento 18X
Pulsante 4X
1X LED verde, blu, giallo e rosso
4 resistenze da 220 ohm
Passaggio 2: costruisci e cabla
Ora lo metteremo insieme da Simon Says.
Inizi con il più e il meno di Arduino sul più e meno del paneboard per connettere.
Quindi metti le luci a LED nella scheda. Dopo averlo fatto, posiziona una resistenza da 220 ohm sul lato positivo di ciascuna luce LED, questo è il pin più lungo.
Quindi si passa dal pin meno delle luci a LED al proprio pulsante.
Fatto ciò si passa da ogni bottone dello spillo che è in verticale dal meno di ogni led (vedi diagramma Fritzing) al meno del paneboard† Quindi si passa da ogni pulsante al pin che è diagonale dal meno del led al più del paneboard.
Dopo questo aggiungi un cavo dal pin diagonale al meno dei led. A2 = rosso, A3 = verde, A1 = giallo e blu = A0.
Infine, un cavo va dall'altro lato del resistore ai pin I/O. Dal rosso al pin 3, dal verde al pin 2, dal giallo al pin 4 e dal blu al pin 5.
Passaggio 3: programmazione
Ora che hai finito di cablare Arduino puoi farlo board iniziare a programmare.
Puoi copiare il codice qui sotto nel tuo programma Arduino. Ti consigliamo di riscrivere l'intero codice poiché ne imparerai di più.
Nel codice stesso puoi regolare la velocità di accensione e spegnimento delle luci e di quanto tempo diminuisce per una buona combinazione. In questo modo puoi rendere il gioco sempre più difficile.
costante int MAX_LVL = 10;
ordine int[MAX_LVL];
int proprio_segui[MAX_LVL];
int LVL = 1;
tasso int = 1000;
void setup () {
pinMode(A0, INGRESSO);
pinMode(A1, INGRESSO);
pinMode(A2, INGRESSO);
pinMode(A3, INGRESSO);
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
digitalWrite (2, LOW);
digitalWrite (3, LOW);
digitalWrite (4, LOW);
digitalWrite (5, LOW);
}
void loop () {
se(LVL == 1)
generare_segui();
if(letturadigitale(A0) == ALTA &&letturadigitale(A3) == ALTA || LVL != 1){
show_follow();
get_follow();
}
}
void show_follow(){
digitalWrite (2, LOW);
digitalWrite (3, LOW);
digitalWrite (4, LOW);
digitalWrite (5, LOW);
for(int i = 0; io < LVL; i++){
digitalWrite(ordine[i], ALTO);
ritardo (velocità);
digitalWrite(ordine[i], LOW);
ritardo (200);
}
}
void get_follow(){
int flag = 0;
for(int i = 0; io < LVL; i++){
bandiera = 0;
mentre(bandiera == 0){
if(digitalRead(A0) == BASSO){
digitalWrite (5, HIGH);
proprio_segui[i] = 5;
bandiera = 1;
ritardo (200);
if(own_follow[i] != sequenza[i]){
wrong_follow();
ritorno;
}
digitalWrite (5, LOW);
}
if(digitalRead(A1) == BASSO){
digitalWrite (4, HIGH);
proprio_segui[i] = 4;
bandiera = 1;
ritardo (200);
if(own_follow[i] != sequenza[i]){
wrong_follow();
ritorno;
}
digitalWrite (4, LOW);
}
if(digitalRead(A2) == BASSO){
digitalWrite (3, HIGH);
proprio_segui[i] = 3;
bandiera = 1;
ritardo (200);
if(own_follow[i] != sequenza[i]){
wrong_follow();
ritorno;
}
digitalWrite (3, LOW);
}
if(digitalRead(A3) == BASSO){
digitalWrite (2, HIGH);
proprio_segui[i] = 2;
bandiera = 1;
ritardo (200);
if(own_follow[i] != sequenza[i]){
wrong_follow();
ritorno;
}
digitalWrite (2, LOW);
}
}
}
good_follow();
}
vuoto generate_follow(){
seme casuale(millis());
for(int i = 0; io < MAX_LVL; i++){
sequenza[i] = casuale(2, 6);
}
}
void wrong_follow() {
for(int i = 0; io < 3; i++){
digitalWrite (2, HIGH);
digitalWrite (3, HIGH);
digitalWrite (4, HIGH);
digitalWrite (5, HIGH);
ritardo (250);
digitalWrite (2, LOW);
digitalWrite (3, LOW);
digitalWrite (4, LOW);
digitalWrite (5, LOW);
ritardo (250);
}
LVL = 1;
velocità = 1000;
}
void good_follow(){
digitalWrite (2, LOW);
digitalWrite (3, LOW);
digitalWrite (4, LOW);
digitalWrite (5, LOW);
ritardo (250);
digitalWrite (2, HIGH);
digitalWrite (3, HIGH);
digitalWrite (4, HIGH);
digitalWrite (5, HIGH);
ritardo (500);
digitalWrite (2, LOW);
digitalWrite (3, LOW);
digitalWrite (4, LOW);
digitalWrite (5, LOW);
ritardo (250);
se(LVL < MAX_LVL);
LVL++;
velocità -= 100;
}
Il tuo gioco Simon Says ora dovrebbe assomigliare al video qui sotto.
Ogni gioco è diverso, quindi puoi divertirti per ore!
Non riesco a vedere il video, puoi inviarlo via e-mail o metterlo su youtube? Ho fatto questo progetto per la scuola ma non capisco dove sia l'errore.
Ehi Pipino,
Puoi guardare il video qui:
https://youtu.be/u3jqzZJEXQA
Cordiali saluti,
Elettronica per te