
Merhaba arkadaşlar,
Bu yazımızda, MekatronikLAB firmasının üretmiş olduğu PIC mikrodenetleyiciler ile proje geliştirme kiti PIC|ULAK ile ultrasonik sensör ile araç park sensörü uygulamasını gerçekleştirdik.
Yazdığımız kodu CCS C programında derledikten sonra hex dosyasını oluşturuyoruz.PİCkit2 programı ile derlediğimiz hex dosyasını pic|ulak kartımıza yükledikten sonra uygulamamızı çalıştırabiliyoruz 🙂
Uygulamamızda ölçülen mesafe aralığını 4*20 lcd ekrana yazdırılmakta. Belirli mesafe aralıklarında devrede bulunan buzzer ile yakınlık arttıkça ses uyarıları ile bildirim alıyoruz. Kullanılan mesafe sensörünün nasıl çalıştığını ve mesafeyi hesaplarken ne gibi formüllerin kullanıdığına aşağıda paylaşacağımız kod kısmından veya google dan kısa bi araştırma sonucunda ulaşabilirsiniz 🙂
iyi çalışmalar…
Malzemeler
- pic|ulak
- ultrasonic sensör
- potansiyometre
- 4*20 LCD ekran
- buzzer
- bağlantı kabloları
Bağlantı şeması
CCS C kodları
[php]
#include <main.h>
#use delay (clock= 20M)
#include <LCD420.c> //4*20 lcd tanıtılıyor.
#define use_lcd_TRUE // lcd i B portuna bağlı.
#define trig pin_a0 // A0 pini trig olarak tanımlanıyor.
#define echo pin_a1 // A1 pini echo olarak tanımlanıyor.
float uzaklik, zaman;
void main()
{
lcd_init();
printf(lcd_putc,"\f PIC|ULAK ");
printf(lcd_putc,"\n ROBOTURKAA "); // LCD çalışmaya başladığında giriş ekranının durumu
printf(lcd_putc,"\n ARAC PARK SENSORU ");
printf(lcd_putc,"\n SINAN SOZUGUZEL ");
delay_ms(1500); // 1500 ms gecikme veriliyor.
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); //t1 kesmesi ayarları yapılıyor.
while(1)
{
output_high(trig);
delay_us(20);
output_low(trig);
while(!input(echo))
{}
set_timer1(0);
while(input(echo))
{}
zaman=get_timer1(); // timer1 kesmesi zaman değişkenine aktarılıyor.
uzaklik=zaman*0.0368; // gerekli hesaplamalar yapılıyor.
uzaklik= uzaklik/1.3; // gerekli hesaplamalar yapılıyor.
/* Mesafe Bildirimleri */
if(uzaklik<10)
{
output_high(pin_c2);
delay_ms(20);
output_low(pin_c2);
delay_ms(20);
}
if((uzaklik<15)&&(uzaklik>10))
{
output_high(pin_c2);
delay_ms(50);
output_low(pin_c2);
delay_ms(50);
}
if((uzaklik<20)&&(uzaklik>10))
{
output_high(pin_c2);
delay_ms(100);
output_low(pin_c2);
delay_ms(100);
}
/* hesaplanan mesafe lcd de gösteriliyor. */
lcd_gotoxy(1,1);
lcd_putc("\fMesafe:");
lcd_gotoxy(8,1);
printf(lcd_putc,"%.2fcm",uzaklik);
delay_ms(100);
}
}
[/php]
Devrenin çalışma videosu