You are on page 1of 5

Mengukur 4 Jarak dengan sensor ultrasonic

Pada palikasi robotika, ketika membutuhkan informasi jarak maka kita langsung berpikir sensor
jarak. Yang paling terkenal adalah sensor ultrasonic. Nah apabila robot yang kita buat
membutuhkan informasi 4 jarak, jarak didepan, di samping kanan, samping kiri dan belakang maka
solusinya kita bisa memakai 4 sensor ultrasonic.

Saya memakai sensor ultrasonic SRF-05. Empat buah sensor SRF05 dihubungkan dengan
mikrokontroler ke PORTB. ATmega8535 dengan Kristal 16 MHz. satu sensor SRF05 memerlukan
2 port, satu untuk Trigger dan satunya untuk Echo. Mengenai prinsip kerja sensor SRF05 telah kita
bahas pada atrikel sebelumnya Ultrasonic Range Meter dengan SRF05, silahkan baca dulu bagi
yang belum tahu.
Total 8 Pin (42), sehingga PORTB sudah cukup kita gunakan. Rangkaian mikrokontroler dengan
sensor SRF05 tampak pada gambar berikut :

Nah, software dibuat dengan BASCOM-AVR :

******************************************
$regfile = m8535.dat
$crystal = 16000000
Dim Flag As Bit , I As Byte
Dim Jarak As Word
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Cursor Off
Cls
Lcd 4 Sensor Jarak
Lowerline
Lcd SRF05

Wait 2
Cls
Lcd S1= S2=
Lowerline
Lcd S3= S4=
Ddrb = &B01010101
Config Timer1 = Timer , Prescale = 8
On Timer1 Jarak_over
Enable Interrupts

Do
Gosub Ukur_s1
Locate 1 , 4
Lcd Jarak ;
Gosub Ukur_s2
Locate 1 , 12
Lcd Jarak ;
Gosub Ukur_s3
Locate 2 , 4
Lcd Jarak ;
Gosub Ukur_s4
Locate 2 , 12
Lcd Jarak ;
Waitms 800
Loop
End

Ukur_s1:
Flag = 1
Waitus 100
Portb.0 = 1
Waitus 15
Portb.0 = 0
Waitus 100
Enable Timer1
Timer1 = 0
Bitwait Pinb.1 , Set
Start Timer1
While Flag = 1
If Pinb.1 = 0 Then

cm

Stop Timer1
Jarak = Timer1
Flag = 0
End If
Wend
Jarak = Jarak / 116
Return

Ukur_s2:
Flag = 1
Waitus 100
Portb.2 = 1
Waitus 15
Portb.2 = 0
Waitus 100
Enable Timer1
Timer1 = 0
Bitwait Pinb.3 , Set
Start Timer1
While Flag = 1
If Pinb.3 = 0 Then
Stop Timer1
Jarak = Timer1
Flag = 0
End If
Wend

Jarak = Jarak / 116


Return

Ukur_s3:
Flag = 1
Waitus 100
Portb.4 = 1
Waitus 15
Portb.4 = 0
Waitus 100
Enable Timer1
Timer1 = 0
Bitwait Pinb.5 , Set
Start Timer1

While Flag = 1
If Pinb.5 = 0 Then
Stop Timer1
Jarak = Timer1
Flag = 0
End If
Wend
Jarak = Jarak / 116
Return

Ukur_s4:
Flag = 1

Waitus 100
Portb.6 = 1
Waitus 15
Portb.6 = 0
Waitus 100
Enable Timer1
Timer1 = 0
Bitwait Pinb.7 , Set
Start Timer1
While Flag = 1
If Pinb.7 = 0 Then
Stop Timer1
Jarak = Timer1
Flag = 0
End If
Wend
Jarak = Jarak / 116
Return

Jarak_over:
Flag = 0
Stop Timer1
Timer1 = 0
Jarak = 0
Return

You might also like