Ana içeriğe geç

Arduino Labirent Oyunu (I2C LCD + Joystick)

Arduino Labirent Oyunu (I2C LCD + Joystick)

Arduino I2C LCD ve joystick kullanarak labirent oyunu nasıl yapılır? Bu rehberde devre bağlantıları, oyun mantığı ve tam Arduino kodunu bulabilirsiniz.

Arduino Labirent Oyunu, I2C LCD ekran ve joystick modülü kullanılarak geliştirilen, hem eğlenceli hem de öğretici bir Arduino oyun projesidir.
Bu projede joystick ile karakteri yönlendirerek labirentten çıkış noktasına ulaşmaya çalışırsınız.


Projenin Amacı

Bu proje ile:

  • I2C LCD ekran kullanımını
  • Joystick modülünden X–Y eksen verisi okumayı
  • Oyun mantığı ve koordinat sistemini
  • Basit çarpışma kontrolünü

öğrenmiş olursunuz.


🎮 Oyun Nasıl Oynanır? (Labirent Oyunu)

Bu labirent oyununda amaç, joystick kullanarak oyuncu karakterini labirent içerisinden geçirip hedef noktaya ulaştırmaktır.
Oyun, I2C LCD ekran üzerinde gerçek zamanlı olarak görüntülenir.


🧭 Ekrandaki Semboller

LCD ekranda kullanılan karakterlerin anlamları aşağıdaki gibidir:

  • P → Oyuncu karakteri
  • # → Duvar (geçilemez alan)
  • X → Hedef / çıkış noktası
  • Boşluk ( ) → Yürünebilir alan

🕹️ Joystick Kontrolleri

Oyuncu karakteri joystick yardımıyla dört yöne hareket ettirilir:

  • Joystick yukarı → Karakter yukarı gider
  • Joystick aşağı → Karakter aşağı gider
  • Joystick sağ → Karakter sağa gider
  • Joystick sol → Karakter sola gider

Joystick analog bir modül olduğu için, belirli eşik değerleri aşıldığında hareket algılanır.


🚧 Hareket Kuralları

  • Oyuncu duvarların (#) içinden geçemez
  • LCD ekran sınırlarının dışına çıkılamaz
  • Geçerli bir hareket yapıldığında oyuncu yalnızca bir adım ilerler
  • Duvara doğru hareket edilirse bu hareket iptal edilir

🏁 Oyunu Kazanma

  • Oyuncu karakteri (P), hedef noktaya (X) ulaştığında oyun kazanılır
  • LCD ekranda “YOU WIN!” mesajı görüntülenir
  • Oyun durur ve yeniden başlatılana kadar devam etmez

🔄 Oyun Akışı

  1. Arduino çalıştırıldığında labirent LCD ekranda gösterilir
  2. Oyuncu başlangıç konumunda (P) yer alır
  3. Joystick kullanılarak labirent içinde hareket edilir
  4. Duvarlardan kaçınılarak doğru yol bulunur
  5. Hedefe ulaşıldığında oyun başarıyla tamamlanır

💡 Oynanış İpuçları

  • Joystick’i yavaş ve kontrollü hareket ettirin
  • Önce labirenti gözle incelemek daha kolay ilerlemenizi sağlar
  • Hareketler arasında kısa bir gecikme olduğu için acele etmeyin

Kullanılan Malzemeler

  • Arduino Uno veya Arduino Nano
  • I2C 16x2 LCD ekran
  • Joystick modülü (KY-023)
  • Breadboard
  • Jumper kablolar

Devre Bağlantıları

I2c led devre şeması

Joystick Bağlantıları

JoystickArduino
VRxA0
VRyA1
SWD2
VCC5V
GNDGND

I2C LCD Bağlantıları

LCDArduino
SDAA4
SCLA5
VCC5V
GNDGND

Oyun Mantığı

  • P → Oyuncu karakteri
  • # → Duvar
  • X → Hedef
  • Joystick ile yukarı, aşağı, sağ ve sol hareket edilir
  • Duvarlara çarpılamaz
  • Hedefe ulaşıldığında oyun kazanılır

Arduino Kodları

I2C LCD Ekran kütüphane ekleme talimatı için tıklayınız

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

#define VRX A0
#define VRY A1

int playerX = 0;
int playerY = 0;

char maze[2][16] = {
{'P',' ','#',' ',' ',' ','#',' ',' ',' ',' ','#',' ',' ',' ','X'},
{'#',' ','#',' ','#',' ','#',' ','#','#',' ','#',' ','#',' ','#'}
};

void drawMaze() {
lcd.clear();
for (int y = 0; y < 2; y++) {
lcd.setCursor(0, y);
for (int x = 0; x < 16; x++) {
lcd.print(maze[y][x]);
}
}
}

void setup() {
lcd.init();
lcd.backlight();
drawMaze();
}

void loop() {
int xValue = analogRead(VRX);
int yValue = analogRead(VRY);

int newX = playerX;
int newY = playerY;

if (xValue < 300) newX--;
else if (xValue > 700) newX++;

if (yValue < 300) newY++;
else if (yValue > 700) newY--;

if (newX >= 0 && newX < 16 && newY >= 0 && newY < 2) {
if (maze[newY][newX] != '#') {

if (maze[newY][newX] == 'X') {
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("YOU WIN!");
while (1);
}

maze[playerY][playerX] = ' ';
playerX = newX;
playerY = newY;
maze[playerY][playerX] = 'P';
drawMaze();
}
}

delay(200);
}

Geliştirme Önerileri

  • Buzzer ekleyerek ses efektleri

  • Süre bazlı skor sistemi

  • Seviye sistemi (çoklu labirent)

  • EEPROM ile en iyi skor kaydı

  • Daha büyük harita (ekran kaydırma)

Kimler İçin Uygun?

  • Arduino’ya yeni başlayanlar

  • LCD ve joystick öğrenmek isteyenler

  • Arduino ile oyun yapmak isteyenler

  • Blog ve YouTube içeriği üretenler

Sonuç

Arduino I2C LCD ve joystick kullanarak geliştirilen bu labirent oyunu, oyun mantığını öğrenmek için mükemmel bir başlangıç projesidir. Hem eğitim hem de eğlence amaçlı rahatlıkla geliştirilebilir.