Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: nusi - 12 Mayıs 2016, 13:39:18

Başlık: Ynt: çizgi izleyen için kod sorunu
Gönderen: nusi - 12 Mayıs 2016, 13:39:18
#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?
Başlık: Ynt: çizgi izleyen için kod sorunu
Gönderen: nusi - 12 Mayıs 2016, 23:02:23
değerli arkadaşlar yardımınızı bekliyorum.
Başlık: Ynt: çizgi izleyen için kod sorunu
Gönderen: selimkoc - 12 Mayıs 2016, 23:43:50
Ne yap dedin de yapmadı? Problem ne? Sorular net ve açık olmalı.
Başlık: Ynt: çizgi izleyen için kod sorunu
Gönderen: nusi - 13 Mayıs 2016, 09:39:38
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.
Başlık: Ynt: Ynt: çizgi izleyen için kod sorunu
Gönderen: sifirzero - 13 Mayıs 2016, 11:10:00
Sanki kod ccs c ye benziyor ondandolahi olabilir mi.
Başlık: Ynt: çizgi izleyen için kod sorunu
Gönderen: mustafabat - 13 Mayıs 2016, 13:42:27
Sol ve sağ pwm 900 lu değerler çok değil mi  timer2 'nin içine yazılan değerden fazla olamaz diye biliyorum
Başlık: Ynt: Ynt: çizgi izleyen için kod sorunu
Gönderen: nusi - 13 Mayıs 2016, 23:58:05
evet ccs c de hazırlanmış bir program. lakin pwm ayarlarını yaptım yine olmadı.