Arduino ile Reaksiyon Süresi Ölçme Oyunu (Malzemeler ve Kodlar)

Arduino ile Reaksiyon Süresi Ölçme Oyunu projesi kapak görseli

Proje ne yapıyor?

Ne kadar hızlı tepki verdiğinizi ölçen bir oyun yapıyoruz. LED rastgele bir anda yanar; yanar yanmaz butona basmanız gerekir. Arduino tepki sürenizi milisaniye cinsinden ölçer ve en iyi skorunuzu saklar. LED yanmadan basarsanız buzzer “erken bastın” uyarısı verir. Sınıfta arkadaşlarla yarışmak için idealdir.

  • Yaş grubu: 10 yaş ve üzeri
  • Seviye: Başlangıç
  • Süre: Yaklaşık 40 dakika
  • Bu projede öğrenecekleriniz: millis() ile süre ölçmek, random() ile rastgele sayı üretmek, while döngüsü, değişkende skor saklamak

Malzeme listesi

MalzemeAdet
Arduino Uno (veya muadili)1
LED (kırmızı veya yeşil)1
220 Ω direnç1
Push buton1
Pasif buzzer1
Breadboard1
Erkek-erkek jumper kablo~8
USB kablo1

Devre bağlantıları

Arduino ile Reaksiyon Süresi Ölçme Oyunu devre şeması
BileşenBağlantıArduino pini
LEDUzun bacak (220 Ω üzerinden)D8
LEDKısa bacakGND
ButonBir bacağıD2
ButonÇapraz karşı bacağıGND
Buzzer+ (uzun bacak)D9
Buzzer–GND

Kodlar

// Arduino Reaksiyon Süresi Oyunu - ozandamci.com
const int ledPin = 8;
const int butonPin = 2;
const int buzzerPin = 9;
unsigned long enIyiSkor = 0; // 0 = henüz skor yok
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(butonPin, INPUT_PULLUP);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
randomSeed(analogRead(A0)); // boştaki pinden rastgelelik al
Serial.println("Reaksiyon oyununa hos geldin!");
}
void loop() {
Serial.println("Hazir ol... LED yaninca butona bas!");
// Rastgele 2-5 saniye bekle, bu sırada erken basmayı yakala
unsigned long bekleme = random(2000, 5000);
unsigned long baslangic = millis();
while (millis() - baslangic < bekleme) {
if (digitalRead(butonPin) == LOW) {
Serial.println("Erken bastin! Tekrar dene.");
tone(buzzerPin, 200, 600);
delay(2000);
return; // loop'u baştan başlat
}
}
// LED'i yak ve süreyi başlat
digitalWrite(ledPin, HIGH);
unsigned long yanmaZamani = millis();
while (digitalRead(butonPin) == HIGH) {
// butona basılmasını bekle
}
unsigned long tepki = millis() - yanmaZamani;
digitalWrite(ledPin, LOW);
tone(buzzerPin, 1500, 100);
Serial.print("Tepki suren: ");
Serial.print(tepki);
Serial.println(" ms");
if (enIyiSkor == 0 || tepki < enIyiSkor) {
enIyiSkor = tepki;
Serial.println("Yeni rekor!");
}
Serial.print("En iyi skor: ");
Serial.print(enIyiSkor);
Serial.println(" ms");
Serial.println("-----------------------");
while (digitalRead(butonPin) == LOW) {
// butonun bırakılmasını bekle
}
delay(2000);
}

Adım adım yapılışı

  1. LED’i takın. LED’in uzun bacağına 220 Ω direnç bağlayıp D8’e, kısa bacağını GND’ye bağlayın.
  2. Butonu takın. Butonu breadboard’un ortasındaki boşluğun üzerine yerleştirin. Bir bacağını D2’ye, çapraz karşısındaki bacağını GND’ye bağlayın.
  3. Buzzer’ı takın. Uzun bacağını D9’a, kısa bacağını GND’ye bağlayın.
  4. Kodu yükleyin. Kartınızı ve portu seçip Yükle‘ye basın.
  5. Oyunu başlatın. Araçlar → Seri Port Ekranı‘nı açın (9600 baud). “Hazır ol” yazısını görünce LED’e odaklanın ve yanar yanmaz butona basın.
  6. Yarışın. Birkaç kişi sırayla oynayıp en iyi skoru kimin yaptığını görün. Ortalama insan tepki süresi 200–300 ms civarındadır.

Sorun giderme

  • LED yanmadan “Erken bastın” yazıyor: Buton bacakları yanlış yerleştirilmiş olabilir; çapraz bacakları kullandığınızdan emin olun.
  • Seri Port Ekranı’nda anlamsız karakterler var: Ekranın sağ altındaki hız ayarını 9600 baud yapın.

Kendiniz deneyin

  • İki buton ve iki LED ile iki kişilik düello modu yapın: kim önce basarsa onun LED’i yansın.
  • Skoru I2C LCD ekranda gösterin, böylece bilgisayara gerek kalmasın.

Videolu anlatım

Projenin yapılışını adım adım videodan da izleyebilirsiniz. Diğer projeler için Arduino Projeleri oynatma listesine göz atın, yeni videolardan haberdar olmak için YouTube kanalıma abone olabilirsiniz.

Videolu anlatım: Arduino ile Reaksiyon Süresi Ölçme Oyunu

Bir önceki proje: Arduino ile Sıcaklık ve Nem Ölçer Yapımı – DHT11 ve LCD Ekran

Daha fazla proje için: Bu ve benzeri projeleri adım adım anlattığım Arduino Projeleri kitabıma göz atabilirsiniz.

Bir Cevap Yazın