ADXL 345 ile Labirent oyunu için yardım.

Başlatan ozanyuksel89, 15 Mart 2013, 02:22:00

ozanyuksel89

Merhaba, 16f877a mikroişlemcisine Adxl345 ve GLCD bağlayarak Labirent oyunu yapmaya çalışıyorum. Butonlarla grafik ekrandaki topu hareket ettirebiliyorum ama adxl345 ten alınan bilgiyle topu hareket ettirileceğini bilmiyorum. ADXL345 in bağlanması ve Glcd için yazılımında yardım ederseniz çok sevinirim.


#include <16f877.h>     
#include <stdio.h>
#include <math.h>
#include "stdlib.h"


#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay (clock=20000000)

#include <HDM64GS12.c>
#include <graphics.c>

  
#define   buton      pin_a0
#define   buton2      pin_a1
#define   buton3      pin_a2
#define   buton4      pin_a3

int i;
int k ;
int x;
int y;
int r;
int1 dd=0;



char yazi1[]="OZAN";       
char yazi2[]="YUKS";
char yazi3[]="IS";
char yazi4[]="UNI";
char yazi5[]="GAME OVER";



         /* ANA PROGRAM */



void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   glcd_init(ON); 
    glcd_text57(5,7,yazi1,1, ON);
    glcd_text57(35,7,yazi2,1, ON);
    glcd_text57(5,32,yazi3,1, ON);
    glcd_text57(14,45,yazi4,1,ON);
   delay_ms(1500);

   
  

r=3; i=3;
k=3;
y=k;
x=r;
      glcd_init(ON);
      glcd_rect(0,0,127,63,NO,ON);
       glcd_rect(30,45,45,0,YES,ON);
       glcd_rect(90,45,100,0,YES,ON);
      glcd_circle(5,59,5,NO,ON);
       glcd_circle(x,y,r,yes,on);




while(1)
   {   
   
   if (dd)
   {
         
   //   delay_ms(1);
         glcd_rect(0,0,127,63,NO,ON);
      glcd_rect(30,45,45,0,YES,ON);
      glcd_rect(90,45,100,0,YES,ON);      
      glcd_circle(5,59,5,NO,ON);
      glcd_circle(x,y,r,yes,on);
      dd=0;
      
   }
   
   //write_eeprom(2,k);
   //y=read_eeprom(2);  



    if (input(buton))  // butonuna basıldıgimda +x
    {
       delay_ms(1);   // Buton arklarını önleme gecikmesi ark ne demek?
       if(y<45+r)
      {
         if (x<30-r && x>=r) 
         {
            x++;
            dd=1;
            glcd_init(ON);
         }
      
          else if (45+r<=x && x<90-r ) 
            {
               x++;
               dd=1;
            glcd_init(ON);
            }
         else if (100+r<=x && 127-r>x)
            {   
               x++;   
               dd=1;
               glcd_init(ON);
            }
      }
      
          if(y>=45+r && y<127-r)         
         {
               if (x<127-r && x>=0+r)
                  {   
                     x++;   
                     dd=1;
                     glcd_init(ON);
                  }

         } 
    
     }


     if (input(buton2))  // butonuna basıldıgimda +x
    {
       delay_ms(1);   // Buton arklarını önleme gecikmesi ark ne demek?
       if(y<45+r)
      {
         if (x<=30-r && x>0+r) 
         {
            x--;
            dd=1;
            glcd_init(ON);
         }
      
          else if (45+r<x && x<=90-r ) 
            {
               x--;
               dd=1;
            glcd_init(ON);
            }
         else if (100+r<x && 127-r>=x)
            {   
               x--;   
               dd=1;
               glcd_init(ON);
            }
      }
      
          if(y>=45+r && y<127-r)         
         {
               if (x<=127-r && x>0+r)
                  {   
                     x--;   
                     dd=1;
                     glcd_init(ON);
                  }

         } 
    
     }



    if (input(buton3))  // butonuna basıldıgimda +x
    {
       delay_ms(1);   // Buton arklarını önleme gecikmesi ark ne demek?
       if (x>=30-r && 45+r>=x)
      {
            if (y<63-r && y>=45+r)
            {
               y++;
               dd=1;
               glcd_init(ON);
            }      

      }
      if (x>=90-r && x<=100+r)         
      {
         if (y<63-r && y>=45+r)
            {
               y++;
               dd=1;
               glcd_init(ON);
            }
      }
      if (x>=0+r && x<=30-r)
      { 
               if(y<63-r && y>=0+r)      

            {
               y++;
               dd=1;
               glcd_init(ON);
            }
      }   
         if (x>=45+r && x<=90-r)
      { 
               if(y<63-r && y>=0+r)      

            {
               y++;
               dd=1;
               glcd_init(ON);
            }
      }
       if(x>=100+r && x<=127-r)
      { 
               if(y<63-r && y>=0+r)      

            {
               y++;
               dd=1;
               glcd_init(ON);
            }
      }

      
   }




   if (input(buton4))  // butonuna basıldıgimda +x
    {
       delay_ms(1);   // Buton arklarını önleme gecikmesi ark ne demek?
       if (x>=30-r && 45+r>=x)
      {
            if (y<=63-r && y>45+r)
            {
               y--;
               dd=1;
               glcd_init(ON);
            }      

      }
      if (x>=90-r && x<=100+r)         
      {
         if (y<=63-r && y>45+r)
            {
               y--;
               dd=1;
               glcd_init(ON);
            }
      }
      if (x>=0+r && x<=30-r)
      { 
               if(y<=63-r && y>0+r)      

            {
               y--;
               dd=1;
               glcd_init(ON);
            }
      }   
         if (x>=45+r && x<=90-r)
      { 
               if(y<=63-r && y>0+r)      

            {
               y--;
               dd=1;
               glcd_init(ON);
            }
      }
       if(x>=100+r && x<=127-r)
      { 
               if(y<=63-r && y>0+r)      

            {
               y--;
               dd=1;
               glcd_init(ON);
            }
      }


   }



  }


  
}