bay_momoli
Üye
- Katılım
- 8 Mar 2010
- Mesajlar
- 1
- Puanları
- 1
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NOCPD,NOLVP
#use delay(clock=4000000) //osilatör frekansını tanıtıyoruz
#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(c) //Port yönlendirme komutları C portu için geçerli
#use fast_io(d) //Port yönlendirme komutları D portu için geçerli
#byte portD=8 // Bu komutla portd kelimesi denetleyicinin D portu kaydedicisi adresiyle eşleştirilmiştir
int giris; // 8 bitlik tamsayı tipinde değişkenler tanımlanıyor void main()
void main()
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_adc(ADC_OFF); // ADC birimi devre dışı
set_tris_b(0xff);
set_tris_c(0x00);
set_tris_d(0x00);
output_c(0x00); //C portunun tüm pinlerini sıfırladık
output_d(0x00); //D portunun tüm pinlerini sıfırladık
setup_ccp1(CCP_PWM); //CCP1 modülünden PWM'i seçiyoruz
setup_ccp2(CCP_PWM); //CCP2 modülünden PWM'i seçiyoruz
setup_timer_2(T2_DIV_BY_16,255,1); //PWM frekansını ve çevrim süresini ayarlıyoruz
while(true) //sonsuz döngü oluşturuyoruz
{
giris=input_b(); //LED'lere CNY70'in bilgisi vermek için B portundaki bilgiyi D portuna veriyoruz
giris=giris&0b00011111;
portd=giris;
if (input(pin_b0)==0 && input(pin_b1)==0 && input(pin_b2)==0 && input(pin_b3)==0 && input(pin_b4)==1) //1.sensör çizgiyi algılayınca
{
set_pwm1_duty(64); //1.motora 255 çevrim süresinden 64 verip yaklaşık %25 güç veriyoruz
set_pwm2_duty(255); //2.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
}
if (input(pin_b0)==0 && input(pin_b1)==0 && input(pin_b2)==0 && input(pin_b3)==1 && input(pin_b4)==0) //2.sensör çizgiyi algılayınca
{
set_pwm1_duty(128); //l.motora 255 çevrim süresinden 128 verip yaklaşık %50 güç veriyoruz
set_pwm2_duty(255); //2.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
}
if (input(pin_b0)==0 && input(pin_b1)==0 && input(pin_b2)==1 && input(pin_b3)==0 && input(pin_b4)==0) //3.sensör çizgiyi algılayınca
{
set_pwm1_duty(255); //1.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
set_pwm2_duty(255); //2.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
}
if (input(pin_b0)==0 && input(pin_b1)==1 && input(pin_b2)==0 && input(pin_b3)==0 &&input(pin_b4)==0) //4.sensör çizgiyi algılayınca
{
set_pwm1_duty(255); //1.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
set_pwm2_duty(128); //2.motora 255 çevrim süresinden 128 verip yaklaşık %50 güç veriyoruz
}
if (input(pin_b0)==1 && input(pin_b1)==0 && input(pin_b2)==0 && input(pin_b3)==0 &&input(pin_b4)==0) //5.sensör çizgiyi algılayınca
{
set_pwm1_duty(255); //1.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
set_pwm2_duty(64); //2.motora 255 çevrim süresinden 64 verip yaklaşık %25 güç veriyoruz
}
}
}
arkadaşlar proje ödevim için yaptığım çizgi izleyen robot enerji verilince 2 motorda sürekli çalışıyor.sensör devresi düzdün çalışıyor pic e okuduğu sensörden 5V gönderiyor fatar motorlar buna göre çalışmıyor.proğramında bir eksik mi var acaba.şimdiden teşekkürler.
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NOCPD,NOLVP
#use delay(clock=4000000) //osilatör frekansını tanıtıyoruz
#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(c) //Port yönlendirme komutları C portu için geçerli
#use fast_io(d) //Port yönlendirme komutları D portu için geçerli
#byte portD=8 // Bu komutla portd kelimesi denetleyicinin D portu kaydedicisi adresiyle eşleştirilmiştir
int giris; // 8 bitlik tamsayı tipinde değişkenler tanımlanıyor void main()
void main()
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_adc(ADC_OFF); // ADC birimi devre dışı
set_tris_b(0xff);
set_tris_c(0x00);
set_tris_d(0x00);
output_c(0x00); //C portunun tüm pinlerini sıfırladık
output_d(0x00); //D portunun tüm pinlerini sıfırladık
setup_ccp1(CCP_PWM); //CCP1 modülünden PWM'i seçiyoruz
setup_ccp2(CCP_PWM); //CCP2 modülünden PWM'i seçiyoruz
setup_timer_2(T2_DIV_BY_16,255,1); //PWM frekansını ve çevrim süresini ayarlıyoruz
while(true) //sonsuz döngü oluşturuyoruz
{
giris=input_b(); //LED'lere CNY70'in bilgisi vermek için B portundaki bilgiyi D portuna veriyoruz
giris=giris&0b00011111;
portd=giris;
if (input(pin_b0)==0 && input(pin_b1)==0 && input(pin_b2)==0 && input(pin_b3)==0 && input(pin_b4)==1) //1.sensör çizgiyi algılayınca
{
set_pwm1_duty(64); //1.motora 255 çevrim süresinden 64 verip yaklaşık %25 güç veriyoruz
set_pwm2_duty(255); //2.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
}
if (input(pin_b0)==0 && input(pin_b1)==0 && input(pin_b2)==0 && input(pin_b3)==1 && input(pin_b4)==0) //2.sensör çizgiyi algılayınca
{
set_pwm1_duty(128); //l.motora 255 çevrim süresinden 128 verip yaklaşık %50 güç veriyoruz
set_pwm2_duty(255); //2.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
}
if (input(pin_b0)==0 && input(pin_b1)==0 && input(pin_b2)==1 && input(pin_b3)==0 && input(pin_b4)==0) //3.sensör çizgiyi algılayınca
{
set_pwm1_duty(255); //1.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
set_pwm2_duty(255); //2.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
}
if (input(pin_b0)==0 && input(pin_b1)==1 && input(pin_b2)==0 && input(pin_b3)==0 &&input(pin_b4)==0) //4.sensör çizgiyi algılayınca
{
set_pwm1_duty(255); //1.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
set_pwm2_duty(128); //2.motora 255 çevrim süresinden 128 verip yaklaşık %50 güç veriyoruz
}
if (input(pin_b0)==1 && input(pin_b1)==0 && input(pin_b2)==0 && input(pin_b3)==0 &&input(pin_b4)==0) //5.sensör çizgiyi algılayınca
{
set_pwm1_duty(255); //1.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
set_pwm2_duty(64); //2.motora 255 çevrim süresinden 64 verip yaklaşık %25 güç veriyoruz
}
}
}
arkadaşlar proje ödevim için yaptığım çizgi izleyen robot enerji verilince 2 motorda sürekli çalışıyor.sensör devresi düzdün çalışıyor pic e okuduğu sensörden 5V gönderiyor fatar motorlar buna göre çalışmıyor.proğramında bir eksik mi var acaba.şimdiden teşekkürler.