Ana Sayfa Arduino Arduino ile Yılan Oyunu

Arduino ile Yılan Oyunu

8 min read
9
0
13,906

Merhabalar,

Uzuuunca bir aradan sonra tekrar yazı yazma şansı bulabildim. Bugünkü yazımda size çocukluğumuzdan da hatırlayacağımız,sağlamlığıyla tanıdığımız Nokia 3310’un vazgeçilmez oyunları arasında bulunan Yılan Oyunu’nu Arduino üzerinde nasıl oynayabileceğimizi anlatacağım.
Başlayalım;
İlk önce gerekli olan malzemeleri ve tavsiye ürün linklerini listelersek;

Arduino Pro Mini ( Arduino UNO R3’te kullansanız olur.)

promini1

Arduino Joystick Shield

joystick-300x300

Nokia 5110 LCD Modülü

lcdekran1-278x300

+9V Pil ve Pil Başlığı ( Arduino Pro Mini kullanacaksanız, Arduino’muzu dışarıdan beslemek için gereklidir. )

Erkek-Dişi Arduino Jumper Kabloları ( Tercih sebebi; LCD Ekran ve Joystick bacaklarını Arduino ile bağlantı yapmak için gereklidir.)

disierkek-300x280

Elemanlarımızı nereden temin edebiliriz derseniz aliexpress ( yurtdışı )  ya da direnc.net ( yurtiçi ) gibi siteleri önerebilirim.

Elemanların bağlantısı şöyle olacaktır;
LCD’mizin RST,CE,DC,Din,Clk,Vcc,BL,Gnd gibi uçları bulunmaktadır. Bu uçlar çeşitli fonksiyonları yerine getirmektedir.

LCD Ekranın Arduino ile bağlantısı;

RST ucunu 11 numaralı pin’e
CE ucunu 12 numaralı pin’e
DC ucunu 10 numaralı pin’e
Din ucu 9 numaralı pin’e
Clk ucu 8 numaralı pin’e
Vcc ucu 3.3V‘a ( Bu LCD Ekranınızın özelliğine göre değişir, kimisi 3.3V’ta çalışırken,kimisi 3.3V-5V arası gerilimde çalışabilmektedir,Lakin garanti olması açısından siz 3.3V’a bağlayın.)
BL ucu 3.3V ya da 5V’a ( Yukarıdaki söylediklerim bu pin için de geçerlidir )
Gnd ucu GND pin’ine
bağlanacaktır.

LCD’yi çalıştırmak için de gerekli olan bir kütüphane vardır,bu kütüphaneyi de bu linkten indirebilirsiniz.
http://www.henningkarlsen.com/electronics/library.php?id=47

Bu kütüphaneyi indirdikten sonra RAR’dan çıkarıp,o klasörü C:\Program Files (x86)\Arduino\libraries dizini altına kopyalamanız gerekmektedir.

Joystick ile Arduino arasındaki bağlantımız ise ;

GND ucu Arduino’nun GND ucuna
+5V ucu ya da Vcc ucu Arduino’nun 5V ucuna
VRx ucu Arduino’nun A0 ucuna
VRy ucu Arduino’nun A1 ucuna

Bu işlemleri de tamamladıktan sonra aşağıdaki kodumuzu derleyip Arduino’muza atabiliriz.

#include<LCD5110_Graph.h>
LCD5110 myGLCD(8,9,10,11,12);
extern unsigned char SmallFont[];
extern unsigned char TinyFont[];
int endgame = 10;  
int zx[300] = {26, 25, 24, 23, 22};   
int zy[300] = {20, 20, 20, 20, 20};
int len=5; 
int navi=4;  
int x,y,mx,my;
long pM = 0;  
long per = 75;  
void setup()
{
 myGLCD.InitLCD();  
 myGLCD.setFont(SmallFont);
 for(int u=5; u <= 300-1; u++) {
 zx[u]=-1;zy[u]=-1;
 }
 mx=random(84); 
 my=random(44);
 mx=random(84); 
 my=random(44);
}
void loop()
{
int b0=analogRead(A0);
int b1=analogRead(A1);
if((b0 < 400)and(navi!=4)) {navi=3;}
if((b0 > 600)and(navi!=3)) {navi=4;}
if((b1 < 400)and(navi!=1)) {navi=2;}
if((b1 > 600)and(navi!=2)) {navi=1;}
if(zx[0] < 0)  {endgame=0;}
if(zx[0] > 83) {endgame=0;}
if(zy[0] < 0)  {endgame=0;}
if(zy[0] > 49) {endgame=0;}
   
unsigned long cM = millis();
if(cM - pM > per) {
 pM = cM;  
 myGLCD.clrScr();   
  for(int i=1; i < len; i++) { 
    myGLCD.drawRect(zx[i], zy[i], zx[i]+1, zy[i]+1); 
}  
 
  x=zx[0];
  y=zy[0];
  for(int t=len; t > 0; t--)  {  
    zx[t]=zx[t-1];  
    zy[t]=zy[t-1]; 
}
  switch(navi)  {
   case1: y--; break; 
   case2: y++; break; 
   case3: x--; break; 
   case4: x++; break;  
}
  zx[0]=x; 
  zy[0]=y;  
  myGLCD.drawRect(zx[0], zy[0], zx[0]+1, zy[0]+1);  
  myGLCD.drawRect(mx, my, mx+1, my+1);
 
if(((x==mx)or(x+1==mx)or(x-1==mx)) and((y==my)or(y+1==my)or(y-1==my)))   {
  len=len+10; 
  per=per-5; 
  mx=random(84); 
  my=random(44);}
 
    myGLCD.update();
   
}
 
if(endgame == 0) {
myGLCD.clrScr();
myGLCD.print("kaybettin :(", CENTER, 12); 
myGLCD.print("puan:", 15, 22);
myGLCD.printNumI(len*2, 50, 22); 
myGLCD.update();
delay(8000);
}
}

Bazı dipnotlar vermek gerekirse;

♦Eğer Arduino Pro Mini kullanacaksanız +9V pilinin + ucunu ( pil başlığıyla aldıysanız kırmızı kabloyu ) RAW pinine bağlamanız gerekmektedir. – ucunu da ( siyah kabloyu ) GND pinine bağlamalısınız.

♦Eğer yılan oyununda joystick’te sağ-sol yaptığınızda yukarı-aşağı gidiyorsa Arduino’ya Joystick bağlantınızı yanlış yapmış olabilirsiniz. A0 ve A1 uçlarını yer değiştiriniz.

♦Arduino UNO R3 ile kullanacaksanız, ve bu kart üzerinde de RAW ucu olmadığı için USB üzerinden devrenizi besleyebilir veya adaptör ucu girişinden +9V piliniz ile besleyebilirsiniz.

♦Kodu derleyip atarken Tools/Board kısmından doğru kart’ı seçtiğinizden emin olun !
Arduino Pro Mini kullanıyorsanız kartınızı tanımalısınız, çünkü pek çok farklı versiyonu bulunmaktadır. Ama genel olarak 5V 16MHz Atmega328 serisi piyasada dolanmaktadır.

Çalışma Videosu:

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Yücel Yılmaz
Daha Fazla Göster -  Arduino

9 Yorumlar

  1. Cptn

    17 Mayıs 2016 at 16:56

    selamun aleykum hocam çok başarılı teşekkürler yalnız ben bunu bılgısayar bağlantısı olmadan çalıştıraamaz mıyım acaba acil yardımcı olur musunuz ?

    Reply

    • Bilal Kaya

      17 Mayıs 2016 at 21:51

      Aleykümselam,kullandığınız arduinonun 9voltluk girişine bir adet 9voltluk pıil takmanız gerekiyor.

      Reply

  2. enes

    27 Haziran 2017 at 16:22

    hata alıyorum

    Reply

  3. semih demirhan

    25 Ocak 2019 at 13:48

    kodlarda hatalar oluşmuş kontrol edip güncellermisiniz ?

    Reply

  4. arda

    6 Nisan 2019 at 14:36

    Merhaba kodu yüklerken amp hatası alıyorum bide kullandığınız library atar mısınız

    Reply

    • Yücel Yılmaz

      Yücel Yılmaz

      8 Nisan 2019 at 09:54

      Merhabalar, kodlar düzeltildi. Tekrar dener misiniz ?

      Reply

  5. Onurcan

    20 Ağustos 2020 at 12:22

    Arduino r3 için aynı kodları kullanabilirmiyiz

    Reply

  6. kerem

    12 Mayıs 2022 at 22:32

    lcd ekranda yıalanın yemesi için noktalar çıkıyor ama joystick i haraket ettirdiğimizde yılan çıkmıyor sadece noktalar çıkıyor yılan çıkmıyor

    Reply

    • Akın

      2 Haziran 2023 at 11:39

      Soruna bir çözüm buldunuz mu acaba?

      Reply

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

EcubMaker TOYDIY 4in1 3D Yazıcı İncelemesi

Merhabalar, Bugün sizlerle beraber EcubMaker firmasının üretmiş olduğu 4’ü 1 arada (…