⭐⭐ Gevorderde beginner ⏱️ 25 minuten

Reactiespel

Hoe snel ben jij? Wacht tot de LED aangaat en druk dan zo snel mogelijk op de knop. Het scherm laat je tijd zien in milliseconden. Daag je vrienden uit!

Je logt eerst even in. Daarna staat je project meteen klaar.

🗺️ Aansluitschema

Volg de draden van de Arduino naar elk onderdeel. De kleuren van de draden mag je zelf kiezen.

Van Naar
Arduino UNO · D2 Drukknop · 1
Drukknop · 2 Arduino UNO · GND
Arduino UNO · D13 Weerstand 220 Ω · 1
Weerstand 220 Ω · 2 LED (lampje) · ANODE
LED (lampje) · CATHODE Arduino UNO · GND
Arduino UNO · A4 OLED-schermpje 0,91" · SDA
Arduino UNO · A5 OLED-schermpje 0,91" · SCL
Arduino UNO · 5V OLED-schermpje 0,91" · VCC
Arduino UNO · GND OLED-schermpje 0,91" · GND

🛠️ Zo bouw je het

  1. Zet de drukknop over de gleuf van het breadboard: één pootje naar pin 2, een pootje aan de andere kant naar GND.
  2. Zet de LED met een weerstand van 220 Ω op pin 13, het korte pootje naar GND.
  3. Sluit het OLED-scherm aan: SDA naar A4, SCL naar A5, VCC naar 5V en GND naar GND.

💻 De code

// Reactiespel
// Wacht tot de LED aangaat en druk dan zo snel mogelijk op de knop.
// Het scherm laat zien hoe snel je was!

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

const int KNOP_PIN = 2;   // Drukknop op pin 2 (andere kant naar GND)
const int LED_PIN = 13;   // LED op pin 13 (via de weerstand)

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

unsigned long besteTijd = 0;   // Je snelste tijd tot nu toe

// Zet een tekst groot op het scherm
void toon(const __FlashStringHelper* boven, unsigned long getal) {
  scherm.clearDisplay();
  scherm.setTextSize(1);
  scherm.setCursor(0, 0);
  scherm.print(boven);
  if (getal > 0) {
    scherm.setTextSize(2);
    scherm.setCursor(0, 14);
    scherm.print(getal);
    scherm.print(F(" ms"));
  }
  scherm.display();
}

void setup() {
  pinMode(KNOP_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
  randomSeed(analogRead(A0));    // Zorgt voor echt willekeurige wachttijden
  scherm.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  scherm.setTextColor(SSD1306_WHITE);
}

void loop() {
  toon(F("Druk op de knop..."), 0);
  while (digitalRead(KNOP_PIN) == HIGH);   // Wachten tot je de knop indrukt
  while (digitalRead(KNOP_PIN) == LOW);    // ...en weer loslaat
  toon(F("Klaar? Let op de LED!"), 0);

  delay(random(2000, 5000));               // Een geheime wachttijd tussen 2 en 5 seconden

  if (digitalRead(KNOP_PIN) == LOW) {      // Te vroeg gedrukt? Valsspeler!
    toon(F("Te vroeg! Opnieuw."), 0);
    delay(2000);
    return;
  }

  digitalWrite(LED_PIN, HIGH);             // NU!
  unsigned long start = millis();
  while (digitalRead(KNOP_PIN) == HIGH);   // Wachten op jouw druk
  unsigned long tijd = millis() - start;
  digitalWrite(LED_PIN, LOW);

  if (besteTijd == 0 || tijd < besteTijd) {
    besteTijd = tijd;
    toon(F("NIEUW RECORD!"), tijd);
  } else {
    toon(F("Jouw tijd:"), tijd);
  }
  delay(3000);
}

🧠 Wat doet de code?

  • Na een druk op de knop wachten we een geheime tijd tussen 2 en 5 seconden (random()).
  • Dan gaat de LED aan en starten we een stopwatch met millis().
  • Als je drukt, rekenen we uit hoeveel milliseconden het duurde. Je beste tijd onthouden we.

🎯 Probeer eens…

  • Maak er een spel voor twee spelers van, met elk een eigen knop
  • Laat een zoemer piepen bij een nieuw record
  • Speel 5 rondes en laat daarna je gemiddelde tijd zien

🚀 Bouw dit project met Codey: open codey.online/nl/starter-kits/uno/projects/reaction-game en klik op MAAK DIT. Dan staan de code en het aansluitschema meteen klaar.

Je logt eerst even in. Daarna staat je project meteen klaar.
⬇️ Download deze pagina als PDF 📚 Download de complete tutorial (PDF)

Codey Online is een product van OTRONIC

Bouw je Arduino- of ESP32-project met AI

Beschrijf wat je wilt bouwen. Codey Online schrijft de code, tekent het aansluitschema, compileert het en flasht je board rechtstreeks vanuit de browser.

Gratis starten