#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?
değerli arkadaşlar yardımınızı bekliyorum.
Ne yap dedin de yapmadı? Problem ne? Sorular net ve açık olmalı.
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.
Sanki kod ccs c ye benziyor ondandolahi olabilir mi.
Sol ve sağ pwm 900 lu değerler çok değil mi timer2 'nin içine yazılan değerden fazla olamaz diye biliyorum
evet ccs c de hazırlanmış bir program. lakin pwm ayarlarını yaptım yine olmadı.