Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

5 adet pot ile 5 servo kontrolü

Başlatan maeshlmaent, 19 Eylül 2015, 04:57:25

maeshlmaent

#include <16f877.h>
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=10000000)

long int giris1,giris2,giris3,giris4,giris5, bekle1,bekle2,bekle3,bekle4,bekle5, cikis1,cikis2,cikis3,cikis4,cikis5;

void main ()
{
   setup_psp(PSP_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_CCP1(CCP_OFF);
   setup_CCP2(CCP_OFF);
   setup_adc_ports(All_analog);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(All_analog);
  
   delay_us(20);
   while(1)
   {
      giris1=read_adc();
      cikis1=((giris1*1.76)+600);
      bekle1=(20000-cikis1);
      output_high(pin_b0);
      delay_us(cikis1);
      output_low(pin_b0);
      delay_us(bekle1); 
      
      giris2=read_adc();
      cikis2=((giris2*1.76)+600);
      bekle2=(20000-cikis2);
      output_high(pin_b1);
      delay_us(cikis2);
      output_low(pin_b1);
      delay_us(bekle2);
      
      giris3=read_adc();
      cikis3=((giris3*1.76)+600);
      bekle3=(20000-cikis3);
      output_high(pin_b2);
      delay_us(cikis3);
      output_low(pin_b2);
      delay_us(bekle3);
      
      giris4=read_adc();
      cikis4=((giris4*1.76)+600);
      bekle4=(20000-cikis4);
      output_high(pin_b3);
      delay_us(cikis4);
      output_low(pin_b3);
      delay_us(bekle4);
      
      giris5=read_adc();
      cikis5=((giris5*1.76)+600);
      bekle5=(20000-cikis5);
      output_high(pin_b4);
      delay_us(cikis5);
      output_low(pin_b4);
      delay_us(bekle5);
   }
}

arkadaşlar yazdığım bu kodla sadece birinci pot ile bütün servoları aynı anda kontrol edebiliyorum fakat benim amacım servo başına bir pot ile hepsini aynı anda kontrol etmek acaba nerede yanlış yapıyorum??

maeshlmaent

hatalarımı buldum fakat bir sorum var elimde 5 adet servo yok, uygulamada 2 veya bütün potları aynı anda çevirirsem onlara bağlı  servolarda aynı anda dönermi.
#include <16f877.h>
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)

long int giris1,giris2,giris3,giris4,giris5, bekle1,bekle2,bekle3,bekle4,bekle5, cikis1,cikis2,cikis3,cikis4,cikis5;

void main ()
{
   setup_psp(PSP_DISABLED); 
 setup_timer_1(T1_DISABLED); 
 setup_timer_2(T2_DISABLED,0,1); 
 setup_CCP1(CCP_OFF); 
 setup_CCP2(CCP_OFF);
 
  setup_adc(adc_clock_div_32);
 setup_adc_ports(ALL_ANALOG); 
 enable_interrupts(INT_AD); 
 enable_interrupts(GLOBAL); 
  
   delay_us(20);
   while(1)
   {
      set_adc_channel(0);
     delay_us(20);
      giris1=read_adc();
      cikis1=((giris1*1.76)+600);
      bekle1=(20000-cikis1);
      output_high(pin_b0);
      delay_us(cikis1);
      output_low(pin_b0);
      delay_us(bekle1); 
      
     set_adc_channel(1);
      delay_us(20);
     giris2=read_adc();
      cikis2=((giris2*1.76)+600);
      bekle2=(20000-cikis2);
      output_high(pin_b1);
      delay_us(cikis2);
      output_low(pin_b1);
      delay_us(bekle2);
      
      set_adc_channel(2);
       delay_us(20);
      giris3=read_adc();
      cikis3=((giris3*1.76)+600);
      bekle3=(20000-cikis3);
      output_high(pin_b2);
      delay_us(cikis3);
      output_low(pin_b2);
      delay_us(bekle3);
      
      set_adc_channel(3);
     delay_us(20);
      giris4=read_adc();
      cikis4=((giris4*1.76)+600);
      bekle4=(20000-cikis4);
      output_high(pin_b3);
      delay_us(cikis4);
      output_low(pin_b3);
      delay_us(bekle4);
      
      set_adc_channel(4);
     delay_us(20);
      giris5=read_adc();
      cikis5=((giris5*1.76)+600);
      bekle5=(20000-cikis5);
      output_high(pin_b4);
      delay_us(cikis5);
      output_low(pin_b4);
      delay_us(bekle5);
   }
}

zengdai

Evet yapabilirsiniz. Özel bir algorithma ile 10 a kadar servoyu birbirine müdahale etmeden hemide 1 derece hassasiyetle potlara göre yönlerini çevirebilirsin. Dronelardada aynı algorithma var.
https://www.picproje.org/index.php/topic,52259.msg395850.html#msg395850
Burada cevabı