Algoritma Sorunu

Rukawa+

Üye
Katılım
23 Kas 2013
Mesajlar
1
Puanları
1
Yaş
31
Meraba arkadaşlar elimde çizgi izleyen bir robot var C dilinde yazılmış bir program ile sorunum ise bunun algoritmasını nasıl çıkarabilirim ben biraz uğraştım fakat prof. bir şekilde yazıldğı için pek hakim olamadım yardımcı olan herkese şimdiden teşekkür ederim


#include <18f452.h> ; PIC ı başlat
#use delay(clock=40000000) ; kullanılacak olan kristalin 4MHz olduğunu anlatmaktadır
#FUSES NOWDT,H4,noPROTECT,BROWNOUT,BORV20,PUT,NOLVP ; Yardımcı komutlar
#use fast_io(d) ; Port yönlendirme komutu d için geçerli

unsigned int16 sag_hiz=1020; ; değişken bildirimleri yapıldı
unsigned int16 sol_hiz=1020;
int sag=0;
int sensor=0;

void hiz_hesapla()
{
switch (sensor) {
case 0b00000001: sag_hiz=64; sag=0; sol_hiz=960; break;
case 0b00000011: sag_hiz=128; sol_hiz=896; break;
case 0b00000010: sag_hiz=192; sol_hiz=832; break;
case 0b00000110: sag_hiz=256; sol_hiz=768; break;
case 0b00000100: sag_hiz=320; sol_hiz=704; break;
case 0b00001100: sag_hiz=384; sol_hiz=640; break;
case 0b00001000: sag_hiz=448; sol_hiz=576; break;
case 0b00011000: sag_hiz=512; sol_hiz=512; break;
case 0b00010000: sag_hiz=576; sol_hiz=448; break;
case 0b00110000: sag_hiz=640; sol_hiz=384; break;
case 0b00100000: sag_hiz=704; sol_hiz=320; break;
case 0b01100000: sag_hiz=768; sol_hiz=256; break;
case 0b01000000: sag_hiz=832; sol_hiz=192; break;
case 0b11000000: sag_hiz=896; sol_hiz=128; break;
case 0b10000000: sag_hiz=960; sag=1; sol_hiz=64; break;

case 0b00000000: if sag==1 sag_hiz=1024; sol_hiz=0; else
sag_hiz=1024; sol_hiz=0; break;
}
}

void main ()
{
set_tris_b(0x00); b portunu çıkış yap
set_tris_d(0xff); d portunu giriş yap
setup_ccp1(CCP_PWM); CCP1 PWM modülünü aç
setup_ccp2(CCP_PWM); CCP2 PWM modulünü aç
set_pwm1_duty(0);
set_pwm2_duty(0);
setup_timer_2(T2_DIV_BY_16, 255, 1);
enable_interrupts(global);

while(TRUE)
{
sensor=input_d();
hiz_hesapla();
set_pwm1_duty((unsigned int32)(sag_hiz));
set_pwm2_duty((unsigned int32)(sol_hiz));
output_b(sensor);
}

}
 
Arkadaşım sensörden okuduğu veriye göre sağ ve sol motorun hızlarını pwm olarak ayarlamış burada.Eğer ödev ise çok daha basit kodlar var buradaki eleman biraz fantazi yapmış.Sağ sensör aktif ise sol motoru döndür,sol sensör aktif ise sağ motoru döndür gibi basit bir algoritması var.Onları araştırmanı tavsiye ederim iyi çalışmalar..
 

Yeni mesajlar

Forum istatistikleri

Konular
127,966
Mesajlar
913,960
Kullanıcılar
449,611
Son üye
ramazansanli@

Yeni konular

Geri
Üst