Pada kesempatan kali ini akan dibahas mengenai bagaimana cara mengakses sensor jarak yang sangat umum sekali di pakai oleh para hobby mikrokontroller terutama untuk robot wall avoider atau wall follower, karena sensor ini sangat murah sekitar 40 ribu dibanding aslinya yang sampai 300 ribu, maka dari itu untuk keperluan mendeteksi jarak pakailah sensor ini lebih baik, range yang akan dibuat pada tutorial kali ini yaitu dengan jarak 1 meter, berikut skema dan programnya.
1. Skematik Minimum System
2. Program Bascom AVR
$regfile = "m16def.dat"
$baud = 9600
$crystal = 12000000
Config Timer0 = Timer , Prescale = 256
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
Config Portd.6 = Output
Config Pind.7 = Input
Declare Sub Cek_jarak
Dim Data_jarak As Word
Dim Data_jarak_olah As Word
Dim Data_jarak_fix As Word
Triger1 Alias Portd.6
Pecho1 Alias Pind.7
Mulai:
Cls
Cursor Off
Do
Call Cek_jarak
Data_jarak = Data_jarak
Data_jarak_olah = Data_jarak * 100
Data_jarak_fix = Data_jarak_olah / 256
Upperline
Lcd "Jarak Benda="
Lowerline
Lcd Data_jarak_fix ; " cm "
Waitms 100
Loop
Sub Cek_jarak:
Reset Triger1
Waitus 10
Set Triger1
Waitus 20
Reset Triger1
Tcnt0 = 0
Bitwait Pecho1 , Set
Start Timer0
Do
If Pecho1 = 0 Then
Data_jarak = Tcnt0
Stop Timer0
Exit Do
End If
If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub
$baud = 9600
$crystal = 12000000
Config Timer0 = Timer , Prescale = 256
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
Config Portd.6 = Output
Config Pind.7 = Input
Declare Sub Cek_jarak
Dim Data_jarak As Word
Dim Data_jarak_olah As Word
Dim Data_jarak_fix As Word
Triger1 Alias Portd.6
Pecho1 Alias Pind.7
Mulai:
Cls
Cursor Off
Do
Call Cek_jarak
Data_jarak = Data_jarak
Data_jarak_olah = Data_jarak * 100
Data_jarak_fix = Data_jarak_olah / 256
Upperline
Lcd "Jarak Benda="
Lowerline
Lcd Data_jarak_fix ; " cm "
Waitms 100
Loop
Sub Cek_jarak:
Reset Triger1
Waitus 10
Set Triger1
Waitus 20
Reset Triger1
Tcnt0 = 0
Bitwait Pecho1 , Set
Start Timer0
Do
If Pecho1 = 0 Then
Data_jarak = Tcnt0
Stop Timer0
Exit Do
End If
If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub
No comments:
Post a Comment