Amatör proje için destek

Başlatan protezdiyot, 27 Ocak 2015, 12:32:56

protezdiyot

Merhaba;(Salih abi sana da özel merhaba:) )
Amatör olarak pic programlamaya girdim.Ufak tefek te olsa Salih bey ve ismini hatırlayamadığım diğer arkadaşlar sayesinde bazı şeyler öğrendim.Muhtemelen çok büyük adım şuan atacağım adım ama yinede bu adımı atmak istiyorum.Desteklerinizi bekliyorum.
Öğrenerek ilerleyeceğim bu adımları atarken ve sizlere çok sorum olacaktır.iş yerinde hem çalışıp hemde pic i öğrenmeye çalıştığım için uzun zaman aralıklarıyla sizlere cevap vermek zorunda kalabilirim.Bunlar önbilgilerim.O yüzden şimdiden teşekkürler sabrınız ve desteğiniz için.

Kullanacağım pic 16f628a yada sizin önereceğiniz bir pic olabilir.

Şöyle bir iş yapmak istiyorum.

A B C D  diye 4 adet motorum olacak ,bu motorlar iki yöne dönecek ve bu motorlara RF ile kontrol edilecek  ve 10 sn sonra otomatik olarak duracak.Tekrar RF ile bilgi gittiğinde tekrar baştan çalışacak.
4 adet pic i hem alıcı hemde verici olarak kullanacağım.HAVADAKİ RF SİNYALLERİNDEN ETKİLENMEMESİ  ve kararlı çalışması önemli.

Picleri A - B - C - D diye adlandırıyorum ve alıcı verici durumlarını şu şekilde ŞARTLANDIRDIM.

A PİC'İ için pina0' a bağlı butona basılırsa 1 sayısını üretsin ve Verici olarak bunu yollasın.
A PİC'İ için pina1' e bağlı butona basılırsa 8 sayısını üretsin ve verici olarak bunu yollasın.
A PİC'İ için  4 sayısı RF den gelirse RB0 çıkış versin.
A PİC'İ için  7 sayısı RF den gelirse RB1 çıkış versin.


B PİC'İ için pina0' a bağlı butona basılırsa 2 sayısını üretsin ve Verici olarak bunu yollasın.
B PİC'İ için pina1' e bağlı butona basılırsa 7 sayısını üretsin ve verici olarak bunu yollasın.
B PİC'İ için  1 sayısı RF den gelirse RB0 çıkış versin.
B PİC'İ için  6 sayısı RF den gelirse RB1 çıkış versin.

C PİC'İ için pina0' a bağlı butona basılırsa 3 sayısını üretsin ve Verici olarak bunu yollasın.
C PİC'İ için pina1' e bağlı butona basılırsa 6 sayısını üretsin ve verici olarak bunu yollasın.
C PİC'İ için  2 sayısı RF den gelirse RB0 çıkış versin.
C PİC'İ için  5 sayısı RF den gelirse RB1 çıkış versin.


D PİC'İ için pina0' a bağlı butona basılırsa 4 sayısını üretsin ve Verici olarak bunu yollasın.
D PİC'İ için pina1' e bağlı butona basılırsa 5 sayısını üretsin ve verici olarak bunu yollasın.
D PİC'İ için  3 sayısı RF den gelirse RB0 çıkış versin.
D PİC'İ için  8 sayısı RF den gelirse RB1 çıkış versin.

kudretuzuner

Merhaba,
Bir amatör için oldukça kapsamlı bir çalışma olacak.Başarılar dilerim.Belirtmek isterim ki PIC konusuna girmeden önce PIC'in genel bilgilerini öğrenmeniz faydalı olacaktır.
CCS C başlığında açtığınıza göre kullanacağınız dil bellidir.Yalnız benim önerim basit de olsa .asm hakkında biraz bilgi edinin.16F628 başlangıç için yeterlidir.Arzu ederseniz linkini verdiğim çalışmalarımı gözden geçirebilirsiniz.Kolay gelsin.
https://www.dropbox.com/s/j8jaiwgqniono93/ANTRAK1_ASM_BASLANGC.rar?dl=0
https://www.dropbox.com/s/pu51gzg5vpf3g6f/ANTRAK2_ASM_BASLANGC.rar?dl=0
Amatör

Recep METE

#2
Benim için bir saatte yapılabilecek basit bir program. Ne yapmam lazım ( sen ne istiyorsun) onu söyle.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

protezdiyot

Sn semfero;
Yukarıda şartları yazdım.Veriyi 1 km çaplı alana  iletmek istiyorum. Ancak nasıl yaptığınızıda yazarsanız sevinirim.temel amaç öğrenmek...

Salih

Bu uygulama seri haberleşme üzerinde çalışacak ağırlıklı olarak.
Öncelikle 2 pici proteus üzerinde haberleştirme uygulaması denemesine başla.
Usart haberleşmesini  çözersen, normal uygulamada arada iletken değil,
telsiz bağlantısı yapacaksın.

Recep METE

#5
Alıntı yapılan: protezdiyot - 27 Ocak 2015, 16:31:26
Sn semfero;
Yukarıda şartları yazdım.Veriyi 1 km çaplı alana  iletmek istiyorum. Ancak nasıl yaptığınızıda yazarsanız sevinirim.temel amaç öğrenmek...

Kusura bakma yazını yeni farkettim.Daha fazla geç kalmamak için hemen cevap yazma ihtiyacı hissettim.Hem alıcı hem de verici olan projenin, örnek olarak iki piclisini yaptım.Sen bu örnekten yola çıkarak 4'lü-6'lı hatta daha fazlasını yapabilirsin.Ancak proteus simülasyoda ancak iki tanesini simüle edebiliyoruz.Ben aşağıda yaptığım çalışmanın simülasyonunu youtube yükledim.Çalışma üç buton ve üç ledli. Programda "rda" kesmesi kullanıdı.Sen buton ve ledi ikiye indirebilirsin.Programı ineleyerek olayın mantığını çözebilirsin.İstersen proteus çalışmasını da yüklerim.Gerçek çalışmanda gereken modülleri sonra konuşabiliriz.Eksiklik ve fazlalıkları paylaş.İyi çalışmalar.

http://youtu.be/4j4Hs6L12ac

alıcı
#include <16f877a.h>
#fuses XT,NOWDT,NOWRT,NOCPD,NOPUT,NOPROTECT,NODEBUG,NOLVP,NOBROWNOUT
#use delay(clock=4M)
#use rs232(baud=300,xmit=pin_c6,rcv=pin_c7,parity=N,stop=1)

int8 veri=0,i;



#int_RDA
void  RDA_isr() 
{
disable_interrupts(int_rda);

veri=getch();
if(veri=='4') 
   {
   output_high(pin_b0);
   delay_ms(50);
   output_low(pin_b0);
   delay_ms(50);
   
   }
   
   
   if(veri=='5')
   {
   output_high(pin_b1);
   delay_ms(50);
   output_low(pin_b1);
   delay_ms(50);
   }
   
    if(veri=='6')
    {
    output_high(pin_b2);
   delay_ms(50);
   output_low(pin_b2);
   delay_ms(50);
    }
}

void rf_uyan()
{
putc(0b01010101);
}





void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
  
   
   enable_interrupts(GLOBAL);
   set_tris_b(0x00);
   output_b(0x00);
  
   
   while(true)
   {
    enable_interrupts(INT_RDA);
   
   
 if(input(pin_a0))
 {delay_ms(5);while(input(pin_a0));
 rf_uyan();
  putc('1');
 }
  if(input(pin_a1))
  {delay_ms(5);while(input(pin_a1));
  rf_uyan();
  putc('2');
  }
  
  if(input(pin_a2))
  {delay_ms(5);while(input(pin_a2));
  rf_uyan();
  putc('3');
  }
  }
  
}




verici
#include <16f877a.h>
#fuses XT,NOWDT,NOWRT,NOCPD,NOPUT,NOPROTECT,NODEBUG,NOLVP,NOBROWNOUT
#use delay(clock=4M)
#use rs232(baud=300,xmit=pin_c6,rcv=pin_c7,parity=N,stop=1,bits=8)
int8 veri=0,i;



#int_RDA
void  RDA_isr() 
{
disable_interrupts(int_rda);

veri=getch();
if(veri=='1') 
   {
   output_high(pin_b0);
   delay_ms(50);
   output_low(pin_b0);
   delay_ms(50);
   
   }
   
   
   if(veri=='2')
   {
   output_high(pin_b1);
   delay_ms(50);
   output_low(pin_b1);
   delay_ms(50);
   }
   
    if(veri=='3')
    {
    output_high(pin_b2);
   delay_ms(50);
   output_low(pin_b2);
   delay_ms(50);
    }
}




void rf_uyan()
{
putc(0b01010101);
}
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);


enable_interrupts(GLOBAL);
set_tris_b(0x00);
output_b(0x00);


  while(true)
  {
 
 
 enable_interrupts(INT_RDA);
 
 
 if(input(pin_a0))
 {delay_ms(5);while(input(pin_a0));
 rf_uyan();
  putc('4');
 }
  if(input(pin_a1))
  {delay_ms(5);while(input(pin_a1));
  rf_uyan();
  putc('5');
  }
  
  if(input(pin_a2))
  {delay_ms(5);while(input(pin_a2));
  rf_uyan();
  putc('6');
  }
  }

}

printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

protezdiyot

Çok değerli üstatlar;
Çeşitli sorunlardan oturu şuan hayatımdaki herşeyi askıya alıyorum. Özür dilerim meşgul ettiğim için...

Recep METE

Alıntı yapılan: protezdiyot - 29 Ocak 2015, 10:31:19
Çok değerli üstatlar;
Çeşitli sorunlardan oturu şuan hayatımdaki herşeyi askıya alıyorum. Özür dilerim meşgul ettiğim için...


Seni herşey den el çektiren sorun nedir yardımcı olalım.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d