Arduino ile YILAN oyunu

İnternette dolaşırken karşılaştığım bu proje beni eskilere götürdü. Hatırlarsanız nokia 5110 3210 3310 vs modellerinde yılan oyunu vardı bu oyun bende bağımlılık yapmıştı. Aynı duyguları paylaşanlar vardır.

Bu projemizde Nokia 5110 lcd ve bir adet joystick kullanılmıştır. Joystick ile yılanın sağ-solt-alt-yukarı kontrolü sağlanır. Bu proje 10dk nızı alacaktır ama oyun sizin günlerinizi alır. :))

Projemizin devresinde bağlantılar şu şekilde olması gerekmektedir.

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

RST ucu 11.pin
CE ucu 12.pin
DC ucu 10.pin
Din ucu 9.pin
Clk ucu 8.pin
Vcc ucu 3.3V
BL ucu 3.3V
Gnd ucu GND ye
bağlanmalıdır.

Programımız


#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) {case 1: y--; break; case 2: y++; break; case 3: x--; break; case 4: 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("OYUN BITTI:(", CENTER, 12); myGLCD.print("puan:", 15, 22);myGLCD.printNumI(len*2, 50, 22); myGLCD.update();delay(8000);}
}

Kütüphanemiz

  1. Yunus Kızılarslan 3 Eylül 2016 16:43

    Düşük hafıza mevcut, kararlılık problemlerine sebep olabilir. HATA verdi. Çalışmıyor. Arduıno da bir tane 3.3 var. Breadbord da bağlayıp çift hat yaptım. çalışmıyor yine de.

    Cevapla
  2. Atilla 5 Mart 2016 08:25

    üzerindeki devrenin şeması nedir acaba ?

    Cevapla
    • Mehmet Selim 5 Mart 2016 11:40

      Devrenin semasini cizemedim kusura bakmayin ama anlatimdan devre semasini cikartabilirsiniz

      Cevapla
  3. bugrakantar 27 Ocak 2016 13:41

    Low memory available, stability problems may occur.
    programı yuklediğimde dusuk bellek diyor ve pogram çalısmıyor ne yapabilirim

    Cevapla
    • bugrakantar 27 Ocak 2016 13:44

      programı yüklediğimde diyor düsük bellek diyor ne alakaysa çalısmıyor ne yapabilirim tesekkurler

      Cevapla
  4. cemil 24 Ocak 2016 20:20

    merhaba benim bir sorum var:
    Joystick kaç eksenli acaba ?

    Cevapla
    • Arduinocu 25 Ocak 2016 09:00

      2 eksenlı .

      Cevapla

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.