KESIMPULAN DAN SARAN
5.1 Kesimpulan
1. Jika sensor mendekati objek sesuai dengan jarak yang dikondisikan (5 cm s/d 155 cm) maka gelombang ultrasonik yang bersumber dari sensor ultrasonik dipancarkan ke objek dan objek memantulkan gelombang ultrasonik ke sensor ultrasonik, sehingga buzzer akan berbunyi, dan vibrator akan bergetar untuk memperingatkan pengguna tongkat.
2. Panjang jarak maksimum yang dapat diukur oleh alat ini adalah 155 cm. Sedangkan batas minimal baca sensor adalah 3 cm dan apabila pengukuran di bawah 2 cm maka tidak terdefenisi karena jarak dari sensor ke benda terlalu dekat dan tidak menghasilkan data.
5.2 Saran
1. Sebaiknya desain peralatan ini perlu dikembangkan agar informasi jarak dapat diketahui pengguna
tongkat.
2. Sebaiknya peralatan ini perlu ditambahkan LED pada rangkaian sebagai indicator on/off untuk
mempermudah pengujian.
DAFTAR PUSTAKA
Sasongko, Bagus Hari. 2012. Pemrograman Mikrokontroler dengan Bahasa C. ANDI; Yogyakarta.
Vierck, Robert K. 1995. Analisis Getaran. PT. Eresco: Bandung.
http://repository.usu.ac.id/bitstream/123456789/30069/3/Chapter%20II.pdf DX deal extreme. 2009. WTV 020-SD Module.
http://www.dx.com/p/wtv020-sd-micro-sd-card-mp3-game-player-voice module-
blue-black231512#.U4_XpJG9Tz8. Diakses tanggal: 5 Juli 2014
Elib. 2007. Unikom. http://elib.unikom.ac.id/download.php?id=22777
Diakses tanggal: 5 Juli 2014
Splashtronic. 2012. Range Sensor. http://splashtronic.wordpress.com/tag/hc-sr04/ Diakses Tanggal: 8 Juli 2014.
PC control. 2001. Dasar Komputer Buat Pemula.
http://pccontrol.wordpress.com/2011/06/27/pengetahuan-dasar pemrograman-rtc- ds1307-dengan-bahasa-c-codevision-untuk-avr/
Diakses tanggal 8 Juli 2014.
Perancangan Listing Program
Berikut adalah rancangan program yang diprogram dengan bahasa C pada tongkat tuna netra dengan CodeWizardAVR V2.05.3 Standard
/***************************************************** This program was produced by the
CodeWizardAVR V2.05.3 Standard Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 1/05/2014 Author : user Company : free Comments:
Chip type : ATmega8535 Program type : Application
AVR Core Clock frequency: 8,000000 MHz Memory model : Small
External RAM size : 0 Data Stack size : 128
*****************************************************/
#include <delay.h> : untuk memasukkan header / fungsi delay #include <stdio.h> : untuk memasukkan beberapa perintah #include <i2c.h> : untuk memasukkan header (pengenal)
#include <ds1307.h> : untuk memberi perintah pengambilan data dari RTC ds1307
#include <math.h> : untuk melakukan perhitungan matematika. Merupakan perintah untuk menunjukkan library
#define triger PORTB.0 : mendefenisikan nama (trigger) dari PORTB.0 #define echo PINB.1 : mendefenisikan nama (echo) didalam PINB.1 Merupakan perintah untuk memunjukkan pin sensor ultrasonik
#define clock PORTA.6 : mendefenisikan nama (clock) dari pin modul suara PORTA.6
#define data PORTA.5 : mendefeniskan nama (data) dari pin modul suara
PORTA.5
#define busy PINA.4 : mendefeniskan nama (busy) dari pin modul suara PINA.4
Merupakan perintah untuk menunjukkan pin modul suara // Declare your global variables here
unsigned int mask; : tidak bertanda untuk type data unsigned char s; : tidak bertanda untuk karakter detik unsigned char m; : tidak bertanda untuk karakter menit unsigned char h; : tidak bertanda untuk karakter jam
unsigned char buf[33]; : tidak bertanda untuk karakter bernilai 33
unsigned int counter,jarak,jam,menit; : untuk menunjukkan type data jarak , jam, menit
unsigned int jm=60,lewat=61,mnt=62; : untuk menunjukkan type data 60,61 ,62
Merupakan perintah untuk menunjukkan variable
void play_voice(unsigned int command) : untuk memberikan perintah memainkan suara
{
clock=0; : dengan logika 0
delay_ms(2); : dengan waktu tunda (2) for (mask=0x8000;mask>0;mask>>=1) : jika mask 0x8000 lebih besar dari 0
maka digeser sampai nilai 0 dan mengerjakan program
{
clock=0; : logika PORTA.0 = 0 delay_us(50); : saat program atau baris delay
diberikan, mikro akan mengerjakan perintah looping sampai nilai yang ditentukan
if (command & mask)
{data=1;} : perintah untuk memanggil modul suara
else
{data=0;} : perintah untuk memanggil modul suara
delay_us(50); : saat program atau baris delay diberikan, mikro akan mengerjakan perintah looping sampai nilai yang ditentukan
clock=1; : perintah untuk memanggil modul suara
delay_us(100); : perintah untuk memanggil modul suara
if (mask>0x0001) : perintah untuk memanggil modul suara
{
delay_ms(2); : perintah untuk memanggil modul suara
} }
delay_ms(100); : perintah untuk memanggil modul suara
while (busy==1){} : perintah untuk memanggil modul suara
delay_ms(50); : perintah untuk memanggil modul suara
}
Merupakan perintah untuk memanggil modul suara.
interrupt [EXT_INT2] void ext_int2_isr(void) : interupsi suatu permintaan {
// Place your code here
jam=h; : kode untuk jam menit=m; : kode untuk menit
play_voice(jm); : perintah mainkan suara untuk kode jam dan menit play_voice(jam); : perintah mainkan suara untuk jam
play_voice(lewat); : perintah mainkan suara untuk lewat play_voice(menit); : perintah mainkan suara untuk menit play_voice(mnt); : perintah mainkan suara untuk kode menit }
Merupakan perintah untuk memainkan suara dengan dengan menyebutkan jam setelah tombol ditekan.
void main(void) : menjalankan eksekusi utama yang dibutuhkan {
// Declare your local variables here
// Input/Output Ports initialization // Port A initialization
// Func7=In Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=0 State5=0 State4=T State3=T State2=T State1=T State0=T
PORTA=0x00; : dengan logika 0 DDRA=0x60; : keluaran (output)
// 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=P State1=T State0=T
PORTB=0x04; DDRB=0x01;
// 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=0x00;
DDRC=0x00;
// 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=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00;
TCNT0=0x00; OCR0=0x00;
// Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off
// Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped
// Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00;
TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: Off
// INT1: Off // INT2: On
// INT2 Mode: Falling Edge
GICR|=0x20; : fungsi untuk mengaktifkan interupt MCUCR=0x00;
MCUCSR=0x00; GIFR=0x20;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
// USART initialization : mengirim nilai serial ke komputer dari code vision wizard
// USART disabled UCSRB=0x00;
// Analog Comparator initialization // Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; i2c_init();
Merupakan perintah inisialisasi program utama // DS1307 Real Time Clock initialization // Square wave output on pin SQW/OUT: Off // SQW/OUT pin state: 0
rtc_init(0,0,0);
//rtc_set_time(12,30,00); //rtc_set_date(27,27,05,14);
DDRB.3=1; DDRB.4=1;PORTB.4=1; lcd_init(16); #asm("sei") while (1) {
Merupakan perintah untuk program utama /*fungsi memanggil RTC*/ rtc_get_time(&h,&m,&s); //fungsi hcsr-04 #asm("cli") triger=1; delay_us(10); triger=0; #asm("sei") while (echo==0) {counter=0; jarak=0; } while (echo==1) counter++; jarak=counter/20;
if(jarak>=100 & jarak<=150) {PORTB.4=0;
delay_ms(500); PORTB.3=0 ; delay_ms(500); PORTB.4=1; }
Merupakan fungsi untuk memanggil dan menampilkan sensor ultrasonik If (jarak>=50 & jarak<100)
{PORTB.4=0; PORTB.3=1 ; delay_ms(350); PORTB.3=0 ; delay_ms(350); PORTB.4=1; } if(jarak<50) { PORTB.4=0; PORTB.3=1 ; delay_ms(50); PORTB.3=0 ; delay_ms(50); PORTB.4=1; } } }