Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

9.BUTON VE RF

Başlatan toyo, 11 Mart 2013, 22:47:02

toyo

merhabalar  ;D
Bir arkadaşım rs232 iletişimini kullanarak kablosuz buton ile motor kontrolü yapmaya çalışıyor.projesinde 15 tane felan buton varmış.
Bana bir soru sordu.8.butona kadar kontrollerde sıkıntı yok.ancak 9 dan sonraki butonlara bastığımızda işlem yapmıyor dedi. bende 8 e kadar çalışıyor ise 22 ye kadar da çalışır dedim  :D
meğer öle değilmiş  :o benzer bir projede ben yaptım .sadece ISIS ortamında denedim.6 butonlu ve çalışıyordu.
7.buton ekledim çalışıyor.8.butonu ekledim çalışıyor.9. çalışmıyor.  :o neden acaba?
Teşekkürler..
#include <16f628a.h>           //Kullanılacak denetleyicinin başlık dosyayı tanıtılıyor.

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                    //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection

#define ileri pin_a0
#define geri pin_a1
#define sag pin_a2
#define sol pin_a3
#define tepesag pin_a4
#define tepesol pin_b0

#use delay(clock=4000000) //Gecikme fonksiyonu içn osilatör frekansı ayarlanıyor.

#use rs232(baud=2400, xmit=PIN_b2,parity=N,stop=1) //

int i;             //Tamsayı tipinde değişken tanımlanıyor. 
int e=0;
void main()
{
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
 setup_timer_1(T1_DISABLED);
 setup_comparator(NC_NC_NC_NC);
 setup_vref(FALSE);

   while(TRUE)
         {
         e=1;
         putc(e);
         
         
/////////////////İLERİ////////////////////
                while(input(ileri))
                {
                  putc(0x6C); 
                 
                 }
                 
                
/////////////////GERİ////////////////////                
                while(input(geri))
                { 
            
                  putc(0x7e); 
                  
                }
/////////////////SAĞ////////////////////
                while(input(sag))
                {         
                  putc(0x1e); 
                                 
                }
/////////////////SOL////////////////////               
                while(input(sol))
                {           
                  putc(0x3d);

                }
               while(input(tepesag))
                {                    
                  putc(0x3c); 
                          
                }   
                 while(input(tepesol))
                { 
               
                  putc(0x8d);             
         }
         
          while(input(pin_b3))
                { 
                
                  putc(0x1c); 
                 
                }
          while(input(pin_b4))
                { 
                
                  putc(0x5c); 
 
         }
          while(input(pin_b5))
                { 
                
                
                  
                  putc(0x9c); 
               
         
         
         }
         }

         }


ALICI
#include <16f877.h>       //Kullanılacak denetleyicinin başlık dosyayı tanıtılıyor.

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                      //HACİRİCİ KRİSTAL OSİLATÖR KULLANILACAK
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection


#use delay(clock=4000000)

#use rs232(baud=2400,rcv=PIN_c7,parity=N,stop=1)
int al=0;
void main()
{
output_b(0x00);
set_tris_b(0x00);
output_a(0x00);
set_tris_a(0x00);
output_c(0x00);
set_tris_c(0x00);
output_d(0x00);
set_tris_d(0x00);
while(TRUE)
{
 al=getch();
 
if(al==1){
output_low(pin_b4);
output_low(pin_b5);
output_low(pin_d4);
output_low(pin_d5);
}
////////////////////////////İLERİ//////////////////////////////////
if(al==0x6C)     //Eğer 0x6C geldiyse
{
      output_high(pin_b4); // ENA pini aktif(1.1.motor)
      output_high(pin_b5);   //ENB Pini aktif(1.2.motor)
      
      output_high(pin_b0); //motor saat yönünde dönsün 1.1
      output_low(pin_b1); //1.1
      output_high(pin_b2); //motor saat yönünde dönsün 1.2
      output_low(pin_b3); //1.2
      
      
      output_high(pin_d4); // ENA pini aktif(2.1.motor)
      output_high(pin_d5);   //ENB Pini aktif(2.2.motor)
      
      output_high(pin_d0); //motor saat yönünde dönsün 2.1
      output_low(pin_d1); //2.1
      output_high(pin_d2); //motor saat yönünde dönsün 2.2
      output_low(pin_d3); //2.2    
      }
     
////////////////////////////GERİ//////////////////////////////////
  if(al==0x7E) 
      {
      output_high(pin_b4); // ENA pini aktif(1.1.motor)
      output_high(pin_b5) ;  //ENB Pini aktif(1.2.motor)
      
      output_low(pin_b0); //motor - yönde dönsün 1.1
      output_high(pin_b1); //1.1
      output_low(pin_b2); //motor - yönde dönsün 1.2
      output_high(pin_b3); //1.2
      
      
      output_high(pin_d4); // ENA pini aktif(2.1.motor)
      output_high(pin_d5);   //ENB Pini aktif(2.2.motor)
      
      output_low(pin_d0); //motor - yöndedönsün 2.1
      output_high(pin_d1); //2.1
      output_low(pin_d2); //motor - yönde dönsün 2.2
      output_high(pin_d3); //2.2 
      }
////////////////////////////SAĞ//////////////////////////////////
   if(al==0x1E) //
      {
      output_low(pin_b4); //1. motor sürücü devresi pasif
      output_low(pin_b5);
      
      output_high(pin_d4); // ENA pini aktif(2.1.motor)
      output_high(pin_d5) ;  //ENB Pini aktif(2.2.motor)
      
      output_high(pin_d0); //motor saat yönünde dönsün 2.1
      output_low(pin_d1); //2.1
      output_high(pin_d2); //motor saat yönünde dönsün 2.2
      output_low(pin_d3); //2.2  
      }
////////////////////////////SOL//////////////////////////////////
 if(al==0x3D)     
       {
      output_low(pin_d4); //2.motor sürücü devresi pasif.
      output_low(pin_d5);   
      
      output_high(pin_b4); // ENA pini aktif(1.1.motor)
      output_high(pin_b5);   //ENB Pini aktif(1.2.motor)
      
      output_high(pin_b0); //motor saat yönünde dönsün 1.1
      output_low(pin_b1); //1.1
      output_high(pin_b2); //motor saat yönünde dönsün 1.2
      output_low(pin_b3); //1.2
      
       }
       //////////TEPE SAG///////////
 if(al==0x3C)     
      {
      output_high(pin_a0);
      
      }
       //////////TEPE SOL///////////
 if(al==0x8D)     
      {
      output_high(pin_a1);
      
      }
      if(al==0x5C)     
      {
      output_high(pin_c1);
      
      }
      if(al==0x1C)     
      {
      output_high(pin_c0);
      
      }
      if(al==0x9C)     
      {
      output_high(pin_c2);
      
      }

}
}
Gelirken ne getirilir ki giderken ne götürülür.

run

al degişkenin 8 bitlik byte tipinde olduğundan 8 kontrol yapabilirsin

iki byte gönderirsen 16 komut iletebilirsin
özgürlük için teknoloji

sadogan

Kodlarınız la
Simülasyon da 9 butonda çalışıyor.

serhat1990

Alıntı yapılan: run - 11 Mart 2013, 22:55:38
al degişkenin 8 bitlik byte tipinde olduğundan 8 kontrol yapabilirsin

iki byte gönderirsen 16 komut iletebilirsin

8bit yani 1 byte değişken göndererek 256 kontrol yapabilirsin . Neden 8 kontrol yapasınki . 2^8 = 256 farklı değer demektir .

Ayrıca çalışmalarınızda simülasyon ortamına güvenmeyin en iyisi gerçekte denemek . Bunun için bir board hazırlayın kendinize program atıp rahatça deneyebileceğiniz .

İyi çalışmalar dilerim .

toyo

Şimdi denedim hakikaten çalışıyor.önceden yaptığım da 6 buton vardı .3 yerine yanlışlıkla 2 buton ekledim.sonra fark ettim ve 9.butonuda ekledim .

derlelemede bir sıkıntı yaşamışım. programı açıyorum değişiklik yapıp derliyorum sonra kapatıyorum.hiç bir sıkıntı yok yeni hex kodu oluşturuluyor.
bir başka program açıyorum.bir kaç değişiklik yaptıktan sonra yine derlediğimde gayet normal bişekilde 0 hata 0 uyarı. sonradan fark ettim ; koymasan bile derliyor.ama hex kodu eski halinde kalıyor.galiba ilk açtığım programı kapatmıyor   :o
Gelirken ne getirilir ki giderken ne götürülür.