mikroC ile PIC Programlama #10 : HC-SR04 Park Sensörü
Merhaba, mikroC ile PIC programlama eğitimlerimizin bu adımında HC-SR04 ultrasonic ses sensörünü kullanarak park sensörü uygulaması yapacağız.
Bölümler
00:00 Proje Dosyalarının Oluşturulması
00:44 Pin Tanımlamaları
02:37 Mesafeye Göre LED Kontrol Uygulaması
05:31 Uygulamanın Test Edilmesi
Şematik Tasarım
Uygulama Kodları
// Connections
sbit LED at LATA4_bit;
sbit TRIG at LATB0_bit;
sbit ECHO at RB1_bit;
sbit LEDR at LATD0_bit;
sbit LEDY at LATD1_bit;
sbit LEDG at LATD2_bit;
sbit BUZZER at LATD3_bit;
// Global Variables
unsigned int TMR_VAL;
unsigned int distance;
char txt[7];
// Functions
void wait(unsigned int time){
while(time--)
delay_ms(1);
}
unsigned int getDistance(){
unsigned int temp;
// Timer Init
T0CON=0b01000111; // [TMR0ON][T08BIT][T0CS][T0SE][PSA][T0PS2][T0PS1][T0PS0]
TMR0H=0;
TMR0L=0;
// Send Signal
TRIG=1;
delay_us(10);
TRIG=0;
// Wait Signal
while(!ECHO);
TMR0ON_bit=1;
while(ECHO && TMR0L<83);
TMR0ON_bit=0;
// Calculate
temp = TMR0L*3.65867;
if(temp>300) temp=0xFFFF;
return temp;
}
void main() {
TRISA=0b00000000;// [][][][LED][][][][]
TRISB=0b00000010;// [][][][][][][ECHO][TRIG]
TRISD=0b00000000;// [][][][][BUZZER][LEDG][LEDY][LEDR]
LATA=0x00;
LATB=0x00;
LATD=0x00;
ADCON1 |= 0x0F;
while(1){
distance=getDistance();
if(distance==0xFFFF){
LEDR=0; LEDY=0; LEDG=!LEDG; BUZZER=0;
wait(500);
}
else{
if(distance>200){
LEDR=0; LEDY=0; LEDG=!LEDG;
}
else if(distance>100){
LEDR=0; LEDY=!LEDY; LEDG=1;
}
else{
LEDR=!LEDR; LEDY=1; LEDG=1;
}
if(distance<50){
BUZZER=1;
}
else{
BUZZER=!BUZZER;
wait(distance);
}
}
}
}
Uygulama kodlarını GitHub üzerinden incelemek ve indirmek için tıklayın. Merak ettiğiniz ve aklınıza takılan soruları aşağıda 👇 yorum olarak bize iletebilirsiniz. Yeni uygulamalar gerçekleştirirken YouTube kanalımızdaki videolarımızdan yararlanmayı unutmayın. İyi çalışmalar. 🙂 #geliştirmeyebaşla