Haberler:

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

Ana Menü

servo motor kontrolü

Başlatan krian, 08 Aralık 2007, 16:20:28

krian

merhaba arkadaslar

ben bir servo motoru 5 adımda 0-180 dödürmek istiyorum.proteusta birkaç deneme yaptım.delay_us fonksiyonu sabit sayı ile calısıyor. degisken atadığımda calısmıyor.bunun sebebi ne olabilir.program asagıda

#include <16f84a.h>
#use delay(clock=4000000)
#fuses XT,NOWDT

int i;
long zaman[6];

main()
  {

     set_tris_a(0x03);
     set_tris_b(0x00);
     output_b(0);
     zaman[1]=1000;
     zaman[2]=1250;
     zaman[3]=1500;
     zaman[4]=1750;
     zaman[5]=2000;

     i=0;
     for(;;)
       {
          if(input(PIN_A0))
            {

             i++;
             if(i>5) i=1;
             output_b(i);
             output_high(PIN_A3);
             delay_us(zaman[i]);
             output_low(PIN_A3);
             delay_ms(1000);
            }
           if(input(PIN_A1))
            {

             i--;
             if(i<1) i=5;
             output_b(i);
             output_high(PIN_A3);
             delay_us(zaman[i]);
             output_low(PIN_A3);
             delay_ms(1000);
           }
       }
  }

MURSEL

arkadaşım kesindeğil ama aklımda sadece 8 bitlik degişekn atayabildigimizi sanıyorum ama sen dizinin içinden 256 üstünde bi degişken atadıgın için sorun oludugunu düşünüyorum  neden 8 bitlik diye sorarsan bunu acıuklıcak bilgim yok dersten aklıma kalanlar dogruluguda kesind değil ama deneyip görebilirsin  kolay gelsin

kostebek

Tam emin olmamakla beraber Ram de tuttuğu adreste problem olabilir. Mesela 0x20 den başlayan Ram'e sahip PIC ilerde sen 0x10 da bir bölge tutmak istersen sorun olabilir.

Yukardaki arkadaşın dediğini de olabilir tabiki