RF KONTROL ÇALIŞMIYOR

Katılım
6 Eki 2012
Mesajlar
9
Puanları
1
merhaba arkadaşlar; ben çizgi izleyen robot yapıyorum. buna bir iki ek özellik eklemek istedim. araç yine çizgi izleyecek ancak ben rf ile sinyal yollayınca araç yavaşlayacak. yazılımın çizgi izleyen ve rf kısmı ayrı ayrı çalışıyor ancak birleştirdiğim zaman simülasyonda çalışmıyor. devre çizimi ekte veriyorum. kodlar aşağıdadır. yardımınız için teşekkür ederim.

Kod:
[COLOR=#a52a2a][B]VERİCİ KODLARI[/B][/COLOR]
#include <verici.h>

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use rs232 (baud=9600, xmit=PIN_B2, rcv=PIN_B1)


void uyan(){      // RF cihzını uyandırmak için
    putc(0x55);
    putc(0x00);
    putc(0xff);
    return;
}




void main(){
    
  
  while(true){
    uyan();
    if(input(pin_b4))  // B4 portu 5 volt ise B bilgisini yolla
        putc('X');
        else
        putc('Y');
     


  }}


Kod:
[U][B][COLOR=#00ff00]ANA DEVRE KODLARI[/COLOR][/B][/U]
#include <16f877a.H>#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)






#use delay (clock=4000000)


#define en_sag       pin_a0
#define orta_sag     pin_a1
#define orta_sol     pin_a2
#define en_sol       pin_a3
#define input1       pin_b0
#define input2       pin_b1
#define input3       pin_b2
#define input4       pin_b3 
#define enable_a     pin_b4
#define enable_b     pin_b5


void main()
{


   char a;
   a=getc();
     
   output_high(enable_a);
   output_high(enable_b);
    
   while(1)
 {
 
 if(a='X'){
    
   if(input(en_sag)==1 && input(orta_sag)==0 && input(orta_sol)==0 && input(en_sol)==0)
   {     
   output_low(input1);
   output_low(input2);
   output_high(input3);
   output_low(input4);     
      }
      
 if(input(en_sag)==1 && input(orta_sag)==1 && input(orta_sol)==0 && input(en_sol)==0)
   {   
   output_low(input1);
   output_low(input2);
   output_high(input3);
   output_low(input4);
   
   }
   
   if(input(en_sag)==0 && input(orta_sag)==1 && input(orta_sol)==0 && input(en_sol)==0)
      {
   output_low(input1);
   output_low(input2);
   output_high(input3);
   output_low(input4);
   }
   
    if(input(en_sag)==0 && input(orta_sag)==0 && input(orta_sol)==0 && input(en_sol)==1)
      {
   output_high(input1);
   output_low(input2);
   output_low(input3);
   output_low(input4);
   }
  
   
    if(input(en_sag)==0 && input(orta_sag)==0 && input(orta_sol)==1 && input(en_sol)==1 )
      {
   output_high(input1);
   output_low(input2);
   output_low(input3);
   output_low(input4);   
      }
    
 
    if(input(en_sol)==0 && input(orta_sag)==0 && input(orta_sol)==1 && input(en_sol)==0)
   {   
   output_high(input1);
   output_low(input2);
   output_low(input3);
   output_low(input4);
      }
     
   if(input(en_sag)==0 && input(orta_sag)==1 && input(orta_sol)==1 && input(en_sol)==0)
   {   
   output_high(input1);
   output_low(input2);
   output_high(input3);
   output_low(input4);
    }
      }
   
   if(a='Y'){
   
      
   output_low(input1);
   output_low(input2);
   output_low(input3);
   output_low(input4);
      
      }
  
   


      
 }}
 

Ekli dosyalar

  • devre.jpg
    devre.jpg
    88.8 KB · Görüntüleme: 15
Robot hem çizgi izleme hem de rf okuma işlemini birlikte sağlıklı bir şekilde yapamayacak diye düşünüyorum. Çünkü ben d

GT-N7100 cihazımdan Tapatalk kullanılarak gönderildi
 
.... Çünkü be de çizgi izleyen yaparken sensör den gelen bilgileri pc nin usb si üzerinden seri port üzerinde görmek için seri iletişim kodları ekliyordum. Seri iletişim kodları program üzerinde aktif iken robot çizgiyi takip edemiyordu bu kodları kaldırımda takip edebiliyordu. Şunu yapabilirsiniz robot çizgi izlemeye baslamadan hız bilgisini gönderir seri iletişimi kapatıp çizgiyi takip ettirebilirsiniz diye düşünüyorum.
Diğer bir konu seri iletişim hızınız baud çok yüksek nasıl bir rf modül kullanıyorsunuz bilmiyorum ama piyasadaki modüller maximum 2400 baud ile çalışıyor. Ayrıca getc komutunu whole içinde veya seri kesme alt programınin içinde kullanmalisiniz. Sizin yaptiginiz gibi olursa pic ilk enerji aldiginda birkez gelen bilgiyi okur ve while sonsuz dongusune girer bir daha da gelen bilgiyi okuyamaz. Benim tavsiyem rf e geçmeden bu işleri önce kablo baglantisi ile yapınız.

GT-N7100 cihazımdan Tapatalk kullanılarak gönderildi
 
Ayrıca verici programındaki uyan () alt programındaki 0x55 bilgisi preamble'dir bu bilgi alıcısı uyandırır. 0x00 ve 0xff ise senkron bilgisidir. Alıcıya bundan sonra gelenin asıl bilgi olduğunu belirtir. Preamble ve senkron bilgilerini hatta data bilgisini bir defa göndermek yetmeyecek. Bunların her birini en az 5 defa gondermelisiniz. Alıcı kısmında ise siz hemen getc () ile bilgi almaya kalkmissiniz. Olması gereken ise oncelikle ,vericiden 5 defa gonderdiginiz senkron bilgilerinizin doğru alınıp alınmadığını kontrol etmek olmalı 5 defa 0x00 ve 0xff i doğru aldıktan sonra gelen veriyi doğru alabilirsiniz. Daha detaylı bilgi için ve örnek kod için UEFA'NIN sayfasından teknik dokümanları incelemelisiniz.

GT-N7100 cihazımdan Tapatalk kullanılarak gönderildi
 
baud dediğiniz gibi yüksek onu deneme amaçlı yapmıştım zaten genelde 900 baud kullanıyorum. senkron ve uyandırma bilgilerini gönderdikten sonra arka arkaya 3 kere veri yolladım ve hepsi geldikten sonra işlem yapmayı denedim ama olmadı. belki sorun simulasyon programındadır diye düşünüyorum. bugün devreyi bord kurup deneyeceğim.
 
0x00 veya 0xff gibi sürekli 1 veya 0 lardan oluşan bilgi rf ile gönderilemez. Bunu forumdaki herkes kulakardı ediyor sonra neden olmuyor ya da bi oldu bi olmadı filan mesajları uçuşuyor havada.

Rf bilgi göndermek o kadar basit değil. Seri bilgi kabul eden verici kullanılırsa o başka tabi.
 

Forum istatistikleri

Konular
128,126
Mesajlar
915,245
Kullanıcılar
449,839
Son üye
Qkay

Yeni konular

Geri
Üst