⭐⭐ Początkujący plus ⏱️ 25 minut

Gra na refleks

Jak szybki jesteś? Poczekaj, aż LED się zaświeci. Potem jak najszybciej naciśnij przycisk. Ekran pokaże twój czas w milisekundach. Rzuć wyzwanie znajomym!

Najpierw szybko się zaloguj. Potem twój projekt będzie od razu gotowy.

🗺️ Schemat podłączenia

Poprowadź przewody od Arduino do każdej części. Kolory przewodów możesz wybrać samodzielnie.

Od Do
Arduino UNO · D2 Przycisk · 1
Przycisk · 2 Arduino UNO · GND
Arduino UNO · D13 Rezystor 220 Ω · 1
Rezystor 220 Ω · 2 LED (lampka) · ANODE
LED (lampka) · CATHODE Arduino UNO · GND
Arduino UNO · A4 Ekranik OLED 0,91" · SDA
Arduino UNO · A5 Ekranik OLED 0,91" · SCL
Arduino UNO · 5V Ekranik OLED 0,91" · VCC
Arduino UNO · GND Ekranik OLED 0,91" · GND

🛠️ Tak to zbudujesz

  1. Włóż przycisk nad rowkiem breadboardu: jedna nóżka do pin 2, nóżka po drugiej stronie do GND.
  2. Podłącz LED z rezystorem 220 Ω do pin 13, krótszą nóżkę do GND.
  3. Podłącz ekran OLED: SDA do A4, SCL do A5, VCC do 5V i GND do GND.

💻 Kod

// Gra na refleks
// Poczekaj, aż LED się włączy, i naciśnij przycisk jak najszybciej.
// Ekran pokaże, jak szybki byłeś!

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

const int PRZYCISK_PIN = 2;   // Przycisk na pin 2 (druga strona do GND)
const int LED_PIN = 13;   // LED na pin 13 (przez rezystor)

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

unsigned long najlepszyCzas = 0;   // Twój najszybszy czas do tej pory

// Pokaż duży tekst na ekranie
void pokaz(const __FlashStringHelper* gora, unsigned long liczba) {
  ekran.clearDisplay();
  ekran.setTextSize(1);
  ekran.setCursor(0, 0);
  ekran.print(gora);
  if (liczba > 0) {
    ekran.setTextSize(2);
    ekran.setCursor(0, 14);
    ekran.print(liczba);
    ekran.print(F(" ms"));
  }
  ekran.display();
}

void setup() {
  pinMode(PRZYCISK_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
  randomSeed(analogRead(A0));    // Daje naprawdę losowe czasy czekania
  ekran.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  ekran.setTextColor(SSD1306_WHITE);
}

void loop() {
  pokaz(F("Nacisnij przycisk"), 0);
  while (digitalRead(PRZYCISK_PIN) == HIGH);   // Czekamy, aż naciśniesz przycisk
  while (digitalRead(PRZYCISK_PIN) == LOW);    // ...i znowu go puścisz
  pokaz(F("Gotow? Patrz na LED!"), 0);

  delay(random(2000, 5000));               // Tajny czas czekania od 2 do 5 sekund

  if (digitalRead(PRZYCISK_PIN) == LOW) {      // Za wcześnie naciśnięte? Oszust!
    pokaz(F("Za szybko! Jeszcze"), 0);
    delay(2000);
    return;
  }

  digitalWrite(LED_PIN, HIGH);             // TERAZ!
  unsigned long start = millis();
  while (digitalRead(PRZYCISK_PIN) == HIGH);   // Czekamy na twoje naciśnięcie
  unsigned long czas = millis() - start;
  digitalWrite(LED_PIN, LOW);

  if (najlepszyCzas == 0 || czas < najlepszyCzas) {
    najlepszyCzas = czas;
    pokaz(F("NOWY REKORD!"), czas);
  } else {
    pokaz(F("Twoj czas:"), czas);
  }
  delay(3000);
}

🧠 Co robi kod?

  • Po naciśnięciu przycisku czekamy tajny czas od 2 do 5 sekund (random()).
  • Potem LED się włącza i startujemy stoper z millis().
  • Gdy naciśniesz, liczymy, ile milisekund to trwało. Zapamiętujemy twój najlepszy czas.

🎯 Spróbuj…

  • Zrób z tego grę dla dwóch graczy, każdy z własnym przyciskiem
  • Niech buzzer zapiszczy przy nowym rekordzie
  • Zagraj 5 rund, a potem pokaż swój średni czas

🚀 Zbuduj ten projekt z Codey: otwórz codey.online/pl/starter-kits/uno/projects/reaction-game i kliknij ZRÓB TO. Wtedy kod i schemat podłączenia będą od razu gotowe.

Najpierw szybko się zaloguj. Potem twój projekt będzie od razu gotowy.
⬇️ Pobierz tę stronę jako PDF 📚 Pobierz cały tutorial (PDF)

Codey Online to produkt od OTRONIC

Zbuduj swój projekt Arduino lub ESP32 z pomocą AI

Opisz, co chcesz zbudować. Codey Online napisze kod, narysuje schemat połączeń, skompiluje projekt i wgra go na płytkę bezpośrednio z przeglądarki.

Zacznij za darmo