Sensor jarak dapat menggunakan sensor ultasonic,
sensor ultrasonic cara kerjanya sama seperti kelalawar saat mengetahui halangan
di depannya. Sensor ultrasonic bekerja dengan memancarkan gelombang ultrasonic
berupa pulse melalui TX(transifer) dari sensor dan akan terpantul kembali
gelomnbang ultrasonic dan di tangkap oleh RX(resiver) sensordari sensor. Sensor
ultrasonic mempunyai jara 2cm hingga 300cm.
/*****************************************************
Project :
Version :
Date :
4/2/2008
Chip
type : ATmega8535
Program
type : Application
Clock
frequency : 4.000000 MHz
Memory
model : Small
External SRAM size : 0
Data Stack
size : 128
*****************************************************/
#include <mega8535.h>
// Alphanumeric LCD Module
functions
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
//deklarasi PIN I/O PING
#define PULSE PORTB.0
#define ECHO PINB.0
#define ARAH DDRB.0
#define OUT 1
#define INP 0
unsigned int ultrasonic()
{
unsigned int
count=0;
//deklarasi variabel local count: penghitung lebar ECHO
unsigned int
jarak;
//dekarasi jarak: hasil pembagian lebar ECHO dengan suatu konstanta
ARAH=OUT;
//mengatur PIN I/O sebagai output
PULSE=1;
//memberikan tanda ke PING untuk memancarkan ultrasonic burst
delay_us(5);
//waktu tunggu sebelum pengukuran min. 2us biasanya 5us
PULSE=0;
//menberikan sinyal low ke PING
ARAH=INP;
//arah PIN I/O diatur sebagai input
PULSE=1;
//mengatur PIN I/O sebagai pill-up
while (ECHO==0)
{};
//menunggu sinyal ECHO high
while (ECHO==1)
{
count++;
//menghitung lebar sinyal ECHO high
}
jarak=(unsigned
int)(((float)count)/25); // nilai pembagi dikalibrasi sampai sesuai dengan
satuan yang diinginkan
return(jarak);
//mengembalikan jarak ke fungsi ultrasonic dengan tipe data unsigned int
}
// Declare your global
variables here
void main(void)
{
// Declare your local variables
here
unsigned char
kata[16];//variabel lokal untuk menyusun karakter dengan lebar array 16 dan
mengirim ke LCD
// Input/Output Ports
initialization
// Port A initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=T State1=T State0=T
PORTA=0×00;
DDRA=0×00;
// Port B initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=T State1=T State0=T
PORTB=0×00;
DDRB=0×00;
// Port C initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=T State1=T State0=T
PORTC=0×00;
DDRC=0×00;
// Port D initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=T State1=T State0=T
PORTD=0×00;
DDRD=0×00;
// Timer/Counter 0
initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0×00;
TCNT0=0×00;
OCR0=0×00;
// Timer/Counter 1
initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling
Edge
// Timer 1 Overflow Interrupt:
Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt:
Off
// Compare B Match Interrupt:
Off
TCCR1A=0×00;
TCCR1B=0×00;
TCNT1H=0×00;
TCNT1L=0×00;
ICR1H=0×00;
ICR1L=0×00;
OCR1AH=0×00;
OCR1AL=0×00;
OCR1BH=0×00;
OCR1BL=0×00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0×00;
TCCR2=0×00;
TCNT2=0×00;
OCR2=0×00;
// External Interrupt(s)
initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0×00;
MCUCSR=0×00;
// Timer(s)/Counter(s)
Interrupt(s) initialization
TIMSK=0×00;
// Analog Comparator
initialization
// Analog Comparator: Off
// Analog Comparator Input
Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;
// LCD module initialization
lcd_init(16);
while (1)
{
sprintf(kata, “J=%3d cm”,
ultrasonic()); //menyusun karakter ke dalam satu baris dengan menggunakan
fungsi sprintf
lcd_clear();
//membersihkan layar LCD
lcd_gotoxy(0,0);
//menempatkan kursor pada koordinat 0,0 LCD
lcd_puts(kata);
//mengirim data ke LCD
delay_ms(300);
//delay memberi waktu sebelum lcd_clear();
}
}
http://wangready.wordpress.com/2011/04/04/ping-sensor-jarak-ultrasonik/
No comments:
Post a Comment