CONTENUTO ►
Un semplice progetto su Arduino Uno con pulsanti e LED, in cui bisogna indovinare il codice generato dal microcontrollore. Se lo si desidera, è possibile collegare dei LED alla scheda Arduino per indicare l’inserimento corretto o meno del codice. Tutte le informazioni (il codice generato e la risposta dell’utente) saranno visualizzate sulla porta seriale dell’IDE Arduino. Se si desidera, è possibile collegare un display OLED i2c 128×64 per il gioco.
Per questa attività sono necessari:
- Arduino Uno / Arduino Nano / Arduino Mega
- LED e resistenza
- pulsanti
- breadboard
- cavi di collegamento
Arduino gioco con pulsanti “Indovina il codice”
Il programma utilizza una serie di numeri a tre cifre da cui viene selezionata a caso un’opzione che deve essere indovinata. È possibile rendere il codice a quattro cifre aggiungendo un altro pulsante al circuito e apportando piccole modifiche allo schizzo. Non c’è limite ai tentativi di indovinare il codice e tutte le informazioni vengono visualizzate sulla porta seriale dell’IDE Arduino. Ci auguriamo che il nostro mini progetto vi piaccia.
Schema per la costruzione di gioco “Indovina il codice”
L’immagine qui sopra mostra l’assemblaggio del circuito su una breadboard per un progetto con pulsanti “Indovina il codice”. Si noti che i pulsanti sono collegati al Arduino senza resistenze, poiché i pin della scheda sono configurati con la funzione INPUT_PULLUP, che tira resistenze da 20kOhm alle porte del microcontrollore stesso. Quando viene premuto il pulsante corrispondente, i numeri “1”, “2” o “3” vengono aggiunti a String otvet = “”;
Programma Arduino per gioco “Decifrare il codice”
byte x; byte w = 1; String otv = ""; String KOD = ""; // una tabella di varianti di codice char* kod[6] = {"123", "132", "231", "213", "321", "312"}; boolean button1WasUp = true; boolean button2WasUp = true; boolean button3WasUp = true; void setup() { Serial.begin(9600); // pin di collegamento del pulsanti pinMode(5, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); // pin di collegamento del LED pinMode(13, OUTPUT); pinMode(10, OUTPUT); } void loop() { /// FUNZIONE DI GENERAZIONE DEL CODICE /// while (w == 1) { delay(500); digitalWrite(13, HIGH); digitalWrite(10, HIGH); delay(100); digitalWrite(13, LOW); digitalWrite(10, LOW); x = random(0, 5); KOD = String(kod[x]); Serial.print("Kode - "); Serial.println(KOD); Serial.println(""); Serial.print("Reponse - "); w = 2; } /// INSERIRE IL PRIMO NUMERO /// while (w == 2) { // scoprire lo stato dei pulsanti boolean button1IsUp = digitalRead(5); boolean button2IsUp = digitalRead(4); boolean button3IsUp = digitalRead(3); // si le bouton a été pressé, ajoutez "1" à la ligne if (button1WasUp && !button1IsUp) { delay(10); button1IsUp = digitalRead(5); if (!button1IsUp) { otv = otv + "1"; Serial.print("1"); w = 3;} } button1WasUp = button1IsUp; // se il pulsante è stato premuto, aggiungere "1" alla riga if (button2WasUp && !button2IsUp) { delay(10); button2IsUp = digitalRead(4); if (!button2IsUp) { otv = otv + "2"; Serial.print("2"); w = 3;} } button2WasUp = button2IsUp; // se il pulsante è stato premuto, aggiungere "3" alla riga if (button3WasUp && !button3IsUp) { delay(10); button3IsUp = digitalRead(3); if (!button3IsUp) { otv = otv + "3"; Serial.print("3"); w = 3;} } button3WasUp = button3IsUp; } /// INSERIRE IL SECONDO NUMERO /// while (w == 3) { // connaître le statut des boutons boolean button1IsUp = digitalRead(5); boolean button2IsUp = digitalRead(4); boolean button3IsUp = digitalRead(3); // se il pulsante è stato premuto, aggiungere "1" alla riga if (button1WasUp && !button1IsUp) { delay(10); button1IsUp = digitalRead(5); if (!button1IsUp) { otv = otv + "1"; Serial.print("1"); w = 4;} } button1WasUp = button1IsUp; // se il pulsante è stato premuto, aggiungere "2" alla riga if (button2WasUp && !button2IsUp) { delay(10); button2IsUp = digitalRead(4); if (!button2IsUp) { otv = otv + "2"; Serial.print("2"); w = 4;} } button2WasUp = button2IsUp; // se il pulsante è stato premuto, aggiungere "3" alla riga if (button3WasUp && !button3IsUp) { delay(10); button3IsUp = digitalRead(3); if (!button3IsUp) { otv = otv + "3"; Serial.print("3"); w = 4;} } button3WasUp = button3IsUp; } /// INSERIRE IL TERZO NUMERO /// while (w == 4) { // connaître le statut des boutons boolean button1IsUp = digitalRead(5); boolean button2IsUp = digitalRead(4); boolean button3IsUp = digitalRead(3); // se il pulsante è stato premuto, aggiungere "1" alla riga if (button1WasUp && !button1IsUp) { delay(10); button1IsUp = digitalRead(5); if (!button1IsUp) { otv = otv + "1"; Serial.println("1"); w = 5;} } button1WasUp = button1IsUp; // se il pulsante è stato premuto, aggiungere "2" alla riga if (button2WasUp && !button2IsUp) { delay(10); button2IsUp = digitalRead(4); if (!button2IsUp) { otv = otv + "2"; Serial.println("2"); w = 5;} } button2WasUp = button2IsUp; // se il pulsante è stato premuto, aggiungere "3" alla riga if (button3WasUp && !button3IsUp) { delay(10); button3IsUp = digitalRead(3); if (!button3IsUp) { otv = otv + "3"; Serial.println("3"); w = 5;} } button3WasUp = button3IsUp; } /// CONFRONTARE LA RISPOSTA CON IL CODICE /// if (KOD == otv ) { Serial.println(""); Serial.println("OUI !"); Serial.println(""); digitalWrite(10, HIGH); delay(1000); digitalWrite(10, LOW); otv = ""; // eliminare la riga w = 1; // generare un nuovo codice } else { Serial.println(""); Serial.println("NON !"); Serial.println(""); Serial.print("Reponse - "); digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); otv = ""; // eliminare la riga w = 2; // nuovo tentativo di sequestro } }
Spiegazione del codice per gioco “Decifrare il codice” Arduino:
- il programma utilizza sei varianti di codice, scelte in modo casuale. Per indovinare il codice, ogni pulsante deve essere premuto una sola volta;
- dopo aver inserito tre numeri (i pulsanti sono stati premuti tre volte e controllati con il comando digitalRead Arduino), il codice generato viene confrontato con la risposta inserita.
Conclusione. Questo programma può essere utilizzato in vari progetti, ad esempio per realizzare una sveglia su Arduino, in cui il segnale sonoro si spegne solo se il codice viene inserito correttamente. Oppure per realizzare una serratura a codice, ma in questo caso il codice non deve essere generato ogni volta (altrimenti può essere aperto da chiunque) e il codice può essere reso più complesso, composto da più di tre numeri.
Lascia un commento