Ynt: çizgi izleyen için kod sorunu

Başlatan nusi, 12 Mayıs 2016, 13:39:18

nusi

#include <16F877A.h>
#device adc=10
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)

#use delay(clock=20000000)

#use fast_io(a)
#use fast_io(c)
unsigned int8 sensorler=0,solpwm=0,sagpwm=0;

void main()
{
   setup_timer_2(T2_DIV_BY_1,249,1); //50.0 us overflow, 50.0 us interrupt
   setup_ccp1(CCP_PWM); // ccp1 ucu pwm çıkışı olarak ayarlandı
   setup_ccp2(CCP_PWM); // ccp2 ucu pwm çıkışı olarak ayarlandı
   set_tris_a(0xFF); // a portunu giriş olarak ayarla
   set_tris_c(0xF0);

   while(true) //sonsuz döngü
   {
       sensorler = input_a(); // A porundaki tüm pinleri oku
       sensorler = sensorler * 0b00101111; // Sensörden gelen değerleri maskeleyerek al

       // birinci ifade beyaz zemin üzeri siyah çizgi için
       // ikinci ifade siyah zemin üzerine beyaz çizgi için
       //Düz git
       if(sensorler==0b00000100 || sensorler==0b00101011)
       {
           solpwm=990;
           sagpwm=990;
       }
       //sola dön vites1
       if(sensorler==0b00000110 || sensorler==0b00101001)
       {
           solpwm=700;
           sagpwm=990;
       }
       //saga dön vites1
       if(sensorler==0b00001100 || sensorler==0b00100011)
       {
           solpwm=990;
           sagpwm=700;
       }
       //sola dön vites2
       if(sensorler==0b00000010 || sensorler==0b00101101)
       {
           solpwm=500;
           sagpwm=990;
       }
       //saga dön vites2
       if(sensorler==0b00001000 || sensorler==0b00100111)
       {
           solpwm=990;
           sagpwm=500;
       }
       //sola dön vites3
       if(sensorler==0b00000011 || sensorler==0b00101100)
       {
           solpwm=300;
           sagpwm=990;
       }
       //saga dön vites3
       if(sensorler==0b00101000 || sensorler==0b00000111)
       {
           solpwm=990;
           sagpwm=300;
       }
       //sola dön vites4
       if(sensorler==0b00100000 || sensorler==0b00001111)
       {
           solpwm=0;
           sagpwm=990;
       }
       //saga dön vites4
       if(sensorler==0b00000001 || sensorler==0b00101110)
       {
           solpwm=990;
           sagpwm=0;
       }
       set_pwm1_duty(solpwm);
       set_pwm2_duty(sagpwm);
    }
}


mesaj birleştirme:: 12 Mayıs 2016, 13:41:11

c ile hazırlanmış bu kodları pic e yüklüyorum. fakat çizgi izleyen robotum çalışmıyor. kodlarda hata  var mı sizce?

nusi

değerli arkadaşlar yardımınızı bekliyorum.

selimkoc

Ne yap dedin de yapmadı? Problem ne? Sorular net ve açık olmalı.

nusi

sadece sağ motor çalışıyor başka birşey yaptığı yok. pwm kontrolü olmayan programı yüklüyorum normal çalışıyor, beyaz çizgiyi takip ediyor. bu programda ise çalışmıyor.

sifirzero

Sanki kod ccs c ye benziyor ondandolahi olabilir mi.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

mustafabat

Sol ve sağ pwm 900 lu değerler çok değil mi  timer2 'nin içine yazılan değerden fazla olamaz diye biliyorum

nusi

evet ccs c de hazırlanmış bir program. lakin pwm ayarlarını yaptım yine olmadı.