Arduino Arduino ile Yılan Oyunu By Yücel Yılmaz Posted on 22 Şubat 2015 8 min read 9 0 13,906 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr 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.) Arduino Joystick Shield Nokia 5110 LCD Modülü +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.) 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: