09.G Hra „REACTION LED“ (meranie reakčného času)

09.G Hra „REACTION LED“ (meranie reakčného času)

Základný nápad

  1. LED je zhasnutá
  2. Arduino čaká náhodný čas
  3. LED sa rozsvieti
  4. Žiak čo najrýchlejšie stlačí ENTER v Serial Monitor
  5. Arduino vypočíta reakčný čas a vypíše ho v milisekundách

Výhody:

  • žiadny nový hardware
  • žiaci sú vťahnutí do hry
  • učí ich myslenie s časom (millis)
  • pracuje s klávesnicou (Serial.available)
  • dá sa súťažiť v triede

Zapojenie

Presne ako doteraz:

  • LED anóda → rezistor → Pin ~9
  • LED katóda → GND

Kód programu





int ledPin = 9;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  Serial.println("Hra REACTION LED");
  Serial.println("Po rozsvieteni LED stlac ENTER!");
}

void loop() {
  digitalWrite(ledPin, LOW);

  long cakaj = random(2000, 7000); // 2–7 sekund
  delay(cakaj);

  digitalWrite(ledPin, HIGH);
  unsigned long start = millis();

  // cakanie na ENTER
  while (!Serial.available()) {
    // caka kym hrac stlaci ENTER
  }

  unsigned long koniec = millis();
  unsigned long cas = koniec - start;

  Serial.read(); // vymaz buffer
  Serial.print("Reakcia: ");
  Serial.print(cas);
  Serial.println(" ms");

  delay(2000); // pauza medzi kolami
}

Ako sa to hrá

  1. Spusti Serial Monitor
  2. Nastav 9600 baud
  3. Nechaj žiakov kliknúť myšou do vstupu Serial Monitor
  4. LED sa po náhodnom čase rozsvieti
  5. Žiak stlačí ENTER
  6. Arduino vypíše čas v ms

Príklad výstupu:





Hra REACTION LED
Po rozsvieteni LED stlac ENTER!
Reakcia: 228 ms
Reakcia: 421 ms
Reakcia: 178 ms

Prečo je to zábavné

  • žiaci súťažia o najlepší čas
  • do hry sa primieša stres, reflexy a šťastie
  • dá sa rozšíriť na reálne tlačidlo (neskôr)
  • učí ich chápať časovanie a eventy

Úlohy pre žiakov (Game Dev štýl)

Ľahšie:

  • zväčšiť rozpätie random času
  • pridať výpis „Pripraviť sa… Pozor… TERAZ!“

Stredné:

  • miesto Serial Monitor použiť tlačidlo
  • pridaj tzv. false start detekciu (ak stlačí skôr)

Ťažšie:

  • uložiť najlepší čas (high score)
  • robiť priemer 5 pokusov
  • vyhlásiť „WINNER / LOSER“

Bonus – simulácia reality

Pridáš falošné spustenie (svetlo sa rozsvieti ale neplatí), žiak musí ignorovať.


Prečo je to výborná pedagogická lekcia

Žiak sa naučí pracovať s:

  • random()
  • millis()
  • Serial.available()
  • reakčným časom
  • cycle control
  • debug panelom

A hlavne:

  • je to hravé
  • je v tom psychológia
  • dá sa to rozvíjať do projektov

Pridaj komentár