///////// GÖRME ENGELLİLER İÇİN //////////// ///////// ULTRASONİK REHBER //////////// #include <18f2520.h> #device adc=8 // ADC 8 bit. #FUSES XT, NOWDT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG #use delay(clock=4000000) #byte PORTB = 0xF81 #byte PORTC = 0xF82 #define LCD_TYPE 2 #include // LCD dosyası tanımlanıyor. int16 disr, disl, timesag, timesol, nsag, nsol, PR2, t, i; // Değişkenler tanımlanıyor. #define trigsag pin_C0 // Ultrasonik sensörler için pinler tanımlanıyor. #define echosag pin_C3 #define trigsol pin_C4 #define echosol pin_C5 void main() // Program başlatılıyor. { lcd_init(); // LCD ön ayarları yapılıyor. 29 printf(LCD_PUTC, "\f DIKKAT \n GORME ENGELLI "); setup_CCP1(CCP_PWM); // CCP1 birimi devrede. setup_CCP2(CCP_PWM); // CCP2 birimi devrede. set_tris_b(0x00); // B portu lcd için çıkış olarak ayarlanıyor. set_tris_c(0x28); PORTB = 0; PORTC = 0; while(1) { ///////////////******* SAG SENSOR SURULUYOR ***********/////////////// setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); // Zamanlayıcı ayarlanıyor. output_high(trigsag); // Ultrasonik sensör tetikleniyor. delay_us(15); // 15 uS'lik darbe yollanıyor. output_low(trigsag); while(!input(echosag)) // ECHO pininin +5V olması bekleniyor. {} set_timer1(0); // Zamanlayıcı sıfırlanıyor. 30 while(input(echosag)) // ECHO pininin 0V olması bekleniyor {} timesag=get_timer1(); // Zaman bilgisi alınıyor. setup_timer_1(T1_DISABLED); disr = ((timesag*0.135) + 1.77) ; // Mesafe hesaplanıyor. if(disr>270) { disr = 300; } nsag = (5 - (disr*0.0166)); // Sesin genliği hesaplanıyor. if(nsag<0.3) { nsag=0; } ////////////****** SOL SENSOR SURULUYOR ********//////////// setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); output_high(trigsol); delay_us(15); output_low(trigsol); 31 while(!input(echosol)) {} set_timer1(0); while(input(echosol)) {} timesol=get_timer1(); setup_timer_1(T1_DISABLED); disl = ((timesol*0.135) + 1.77) ; // Mesafe hesaplanıyor. if(disl>270) { disl = 300; } nsol = (5 - (disl*0.0166)); // Sesin genliği hesaplanıyor. if(nsol<0.3) { nsol=0; } if(disr