⭐⭐ Principiante avanzato ⏱️ 25 minuti

Gioco dei riflessi

Quanto sei veloce? Aspetta che il LED si accenda e poi premi il pulsante il più in fretta possibile. Lo schermo mostra il tuo tempo in millisecondi. Sfida i tuoi amici!

Prima fai un veloce accesso. Poi il tuo progetto è subito pronto.

🗺️ Schema di collegamento

Segui i fili dall'Arduino a ogni componente. Puoi scegliere tu i colori dei fili.

Da A
Arduino UNO · D2 Pulsante · 1
Pulsante · 2 Arduino UNO · GND
Arduino UNO · D13 Resistenza 220 Ω · 1
Resistenza 220 Ω · 2 LED (lampadina) · ANODE
LED (lampadina) · CATHODE Arduino UNO · GND
Arduino UNO · A4 Piccolo schermo OLED 0,91" · SDA
Arduino UNO · A5 Piccolo schermo OLED 0,91" · SCL
Arduino UNO · 5V Piccolo schermo OLED 0,91" · VCC
Arduino UNO · GND Piccolo schermo OLED 0,91" · GND

🛠️ Così lo costruisci

  1. Metti il pulsante sopra la fessura della breadboard: un piedino va al pin 2, un piedino dall’altro lato va a GND.
  2. Metti il LED con una resistenza da 220 Ω sul pin 13, con il piedino corto verso GND.
  3. Collega lo schermo OLED: SDA ad A4, SCL ad A5, VCC a 5V e GND a GND.

💻 Il codice

// Gioco dei riflessi
// Aspetta che il LED si accenda e poi premi il pulsante il piu in fretta possibile.
// Lo schermo mostra quanto sei stato veloce!

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

const int PIN_PULSANTE = 2;   // Pulsante sul pin 2 (altro lato a GND)
const int PIN_LED = 13;   // LED sul pin 13 (con la resistenza)

Adafruit_SSD1306 schermo(128, 32, &Wire, -1);  // OLED: SDA = A4, SCL = A5

unsigned long migliorTempo = 0;   // Il tuo tempo piu veloce finora

// Mostra un testo grande sullo schermo
void mostra(const __FlashStringHelper* sopra, unsigned long numero) {
  schermo.clearDisplay();
  schermo.setTextSize(1);
  schermo.setCursor(0, 0);
  schermo.print(sopra);
  if (numero > 0) {
    schermo.setTextSize(2);
    schermo.setCursor(0, 14);
    schermo.print(numero);
    schermo.print(F(" ms"));
  }
  schermo.display();
}

void setup() {
  pinMode(PIN_PULSANTE, INPUT_PULLUP);
  pinMode(PIN_LED, OUTPUT);
  randomSeed(analogRead(A0));    // Crea attese davvero casuali
  schermo.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  schermo.setTextColor(SSD1306_WHITE);
}

void loop() {
  mostra(F("Premi il tasto..."), 0);
  while (digitalRead(PIN_PULSANTE) == HIGH);   // Aspetta finche premi il pulsante
  while (digitalRead(PIN_PULSANTE) == LOW);    // ...e poi lo lasci
  mostra(F("Pronto? Occhio LED!"), 0);

  delay(random(2000, 5000));               // Un'attesa segreta tra 2 e 5 secondi

  if (digitalRead(PIN_PULSANTE) == LOW) {      // Premuto troppo presto? Furbetto!
    mostra(F("Presto! Riprova."), 0);
    delay(2000);
    return;
  }

  digitalWrite(PIN_LED, HIGH);             // ORA!
  unsigned long inizio = millis();
  while (digitalRead(PIN_PULSANTE) == HIGH);   // Aspetta la tua pressione
  unsigned long tempo = millis() - inizio;
  digitalWrite(PIN_LED, LOW);

  if (migliorTempo == 0 || tempo < migliorTempo) {
    migliorTempo = tempo;
    mostra(F("NUOVO RECORD!"), tempo);
  } else {
    mostra(F("Tuo tempo:"), tempo);
  }
  delay(3000);
}

🧠 Che cosa fa il codice?

  • Dopo aver premuto il pulsante, aspettiamo un tempo segreto tra 2 e 5 secondi (random()).
  • Poi il LED si accende e facciamo partire un cronometro con millis().
  • Quando premi, calcoliamo quanti millisecondi sono passati. Ricordiamo il tuo tempo migliore.

🎯 Prova anche…

  • Trasformalo in un gioco per due giocatori, ognuno con il suo pulsante
  • Fai suonare un buzzer quando c’è un nuovo record
  • Gioca 5 turni e poi mostra il tuo tempo medio

🚀 Costruisci questo progetto con Codey: apri codey.online/it/starter-kits/uno/projects/reaction-game e clicca su FAI QUESTO. Così il codice e lo schema di collegamento sono subito pronti.

Prima fai un veloce accesso. Poi il tuo progetto è subito pronto.
⬇️ Scarica questa pagina come PDF 📚 Scarica il tutorial completo (PDF)

Codey Online è un prodotto di OTRONIC

Crea il tuo progetto Arduino o ESP32 con l'AI

Descrivi cosa vuoi realizzare. Codey Online scrive il codice, disegna lo schema di collegamento, lo compila e programma la tua scheda direttamente dal browser.

Inizia gratis