Image
31 Temmuz, 2025

Arduino ile Yılan Oyunu Yapımı

Arduino ile Yılan Oyunu Yapımı

Bu rehberde, Arduino Uno, MAX7219 8×8 dot matrix display ve XY joystick modülü kullanarak adım adım bir yılan oyunu projesi geliştireceksiniz. Kod ve bağlantıları tamamen başlangıç seviyesine uygun olarak hazırladık; daha önce benzer bir proje yapmasanız bile rahatça takip edebilirsiniz.

Gerekli Malzemeler

Bağlantı Tablosu

Aşağıdaki tabloda her bir modülün Arduino üzerindeki pinleri ile eşleştirmesini görebilirsiniz:

BileşenArduino PinModül Pin
MAX7219 DIN11DIN
MAX7219 CLK13CLK
MAX7219 CS10CS
Joystick VRxA0VRx
Joystick VRyA1VRy
Joystick VCC5VVCC
Joystick GNDGNDGND

Not: Breadboard üzerinde düzenli bir yerleşim yaparak, kabloların kısa ve düzenli kalmasına dikkat edin.

Adım Adım Kurulum

1. Arduino IDE Hazırlığı

  1. Arduino IDE’yi açın (yoksa arduino.cc sitesinden indirin).
  2. Araçlar > Kart > Arduino Uno’yu seçin.
  3. Araçlar > Port menüsünden bağlı olan COM port’u seçin.

2. Gerekli Kütüphaneyi Yükleyin

  1. Sketch > Include Library > Manage Libraries…
  2. “LedControl” kütüphanesini aratın ve en güncel sürümü yükleyin.

3. Devre Bağlantısını Kurun

  • Breadboard’a Arduino’yu yerleştirin.
  • Tablodaki eşleşmelere göre MAX7219 ve joystick kablolarını bağlayın.
  • Güç (5 V) ve toprak (GND) hatlarının sağlam bağlantısına özen gösterin.

4. Kodun Yüklenmesi

Aşağıdaki kodu Arduino IDE’ye yapıştırın ve Yükle butonuna tıklayın:

cppCopyEdit#include <LedControl.h>

// Dot Matrix bağlantıları (MAX7219)
const int DIN_PIN = 11;
const int CS_PIN  = 10;
const int CLK_PIN = 13;

LedControl matrix = LedControl(DIN_PIN, CLK_PIN, CS_PIN, 1);

// Joystick pinleri
const int VRx = A0;
const int VRy = A1;

// Yılan pozisyonlarını tutan dizi (maksimum 64 hücre)
int snake[64][2];
int snakeLength = 3;

// Hareket yönü (başlangıç: sağ)
int dirX = 1;
int dirY = 0;

// Yem pozisyonu
int foodX = 5;
int foodY = 5;

// Zaman kontrolü
unsigned long lastMove = 0;
int moveDelay = 300; // ms cinsinden hız

void setup() {
  matrix.shutdown(0, false);
  matrix.setIntensity(0, 8);
  matrix.clearDisplay(0);

  snake[0][0] = 2; snake[0][1] = 4;
  snake[1][0] = 1; snake[1][1] = 4;
  snake[2][0] = 0; snake[2][1] = 4;

  randomSeed(analogRead(0));
  placeFood();
}

void loop() {
  readJoystick();
  if (millis() - lastMove > moveDelay) {
    lastMove = millis();
    moveSnake();
    drawSnake();
  }
}

void readJoystick() {
  int xVal = analogRead(VRx);
  int yVal = analogRead(VRy);
  if (xVal < 300) { dirX = -1; dirY = 0; }
  else if (xVal > 700) { dirX = 1; dirY = 0; }
  else if (yVal < 300) { dirX = 0; dirY = -1; }
  else if (yVal > 700) { dirX = 0; dirY = 1; }
}

void moveSnake() {
  int newX = snake[0][0] + dirX;
  int newY = snake[0][1] + dirY;
  if (newX < 0 || newX > 7 || newY < 0 || newY > 7) {
    resetGame();
    return;
  }
  bool grow = false;
  if (newX == foodX && newY == foodY) {
    grow = true;
    snakeLength++;
    placeFood();
  }
  for (int i = snakeLength - 1; i > 0; i--) {
    snake[i][0] = snake[i - 1][0];
    snake[i][1] = snake[i - 1][1];
  }
  snake[0][0] = newX;
  snake[0][1] = newY;
}

void drawSnake() {
  matrix.clearDisplay(0);
  for (int i = 0; i < snakeLength; i++) {
    matrix.setLed(0, snake[i][1], snake[i][0], true);
  }
  matrix.setLed(0, foodY, foodX, true);
}

void placeFood() {
  foodX = random(0, 8);
  foodY = random(0, 8);
}

void resetGame() {
  for (int row = 0; row < 8; row++)
    for (int col = 0; col < 8; col++)
      matrix.setLed(0, row, col, true);

  delay(1000);
  matrix.clearDisplay(0);

  snakeLength = 3;
  snake[0][0] = 2; snake[0][1] = 4;
  snake[1][0] = 1; snake[1][1] = 4;
  snake[2][0] = 0; snake[2][1] = 4;

  dirX = 1; dirY = 0;
  placeFood();
}

5. Test ve Oyun Keyfi

  • Arduino’ya güç verin.
  • Dot matrix üzerinde yılan ve yem görünecek; joystick ile yönlendirin.
  • moveDelay değerini düşürerek yılan hızını artırabilirsiniz.

Sonuç ve İpuçları

  • Hız Ayarı: moveDelay = 300; satırını 200–100 ms arasında değiştirerek oyunu zorlaştırabilirsiniz.
  • Geliştirme: Birden fazla buton veya sensör ekleyerek “puan kaydetme” veya “seviye atlama” özellikleri ekleyin.
  • Paylaşın: Projenizi sosyal medyada #ArduinoYılanOyunu etiketiyle paylaşarak diğer maker’lara ilham verin!

İyi eğlenceler! Bu basit ama eğlenceli proje ile elektronik ve yazılım becerilerinizi bir arada kullanarak kendi yılan oyununuzu oluşturabilirsiniz.