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ışı
- Arduino çalıştırıldığında labirent LCD ekranda gösterilir
- Oyuncu başlangıç konumunda (
P) yer alır - Joystick kullanılarak labirent içinde hareket edilir
- Duvarlardan kaçınılarak doğru yol bulunur
- 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ı

Joystick Bağlantıları
| Joystick | Arduino |
|---|---|
| VRx | A0 |
| VRy | A1 |
| SW | D2 |
| VCC | 5V |
| GND | GND |
I2C LCD Bağlantıları
| LCD | Arduino |
|---|---|
| SDA | A4 |
| SCL | A5 |
| VCC | 5V |
| GND | GND |
Oyun Mantığı
P→ Oyuncu karakteri#→ DuvarX→ 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.