Pengujian Program Keseluruhan Rancangan Sistem Penerangan dan Pengamanan Pintu Rumah Menggunakan Gsm Berbasis Atmega 8535

7. Uji juga perintah untuk mengunci locker, menutup lampu dan sebagainya. Setelah pengujian dilakukan ,hasil menunjukkan bahwa sistem telah bekerja dgn baik walau kadang-kadang terjadi kesalahan akibat jaringan komunikasi kurang baik atau kesalahan verifikasi kode perintah sehingga harus dilakukan sms ulang. Jika jaringan gsm kurang baik sms akan tertunda hingga beberapa jam.

4.8 Pengujian Program Keseluruhan

include mega8535.h include delay.h include stdio.h define ADC_VREF_TYPE 0x00 Read the AD conversion result unsigned int read_adcunsigned char adc_input { ADMUX=adc_input | ADC_VREF_TYPE 0xff; Delay needed for the stabilization of the ADC input voltage delay_us10; Start the AD conversion ADCSRA|=0x40; Wait for the AD conversion to complete while ADCSRA 0x10==0; Universitas Sumatera Utara ADCSRA|=0x10; return ADCW; } Program di atas merupakan perintah untuk membaca input analog dan mengkonversikannya ke data digital. unsigned int c,x,t,LDR1,LDR2,LDR3; unsigned char Data,A; Merupakan perintah untuk mendeklarasikan variabel yang digunakan. void reply_message { printfAT+CMGS=085765862168; delay_ms1000; Merupakan perintah mengirim kode AT Command yaitu AT + CMGS = 085765862168 ke modem GSM untuk proses mengirim sms. printfc,0x0D; delay_ms2000; if A== 1 {LDR1 = read_adc0; Universitas Sumatera Utara if LDR1 100{printfLampu Ruang tamu telah Aktif;} else {printfLampu Ruang tamu tidak Aktif;} goto LD; } Merupakan perintah untuk membaca sensor ldr dan di bandingkan dengan kode 1 untuk lampu 1. Jika LDR bernilai data lebih kecil dari 400 maka program akan mengirim pesan lampu ruang tamu telah aktif, sedangkan jika tidak maka pesan yang dikirim adalah lampu ruang tamu tidak aktif. if A== 2 {LDR2 = read_adc1; if LDR2 100{printfLampu Kamar telah Aktif;} else {printfLampu Kamar tidak Aktif;} goto LD; } Merupakan perintah untuk membaca sensor ldr dan di bandingkan dengan kode 2 untuk lampu 2. Jika LDR bernilai data lebih kecil dari 400 maka program akan mengirim pesan lampu kamar telah aktif, jika tidak maka pesan yang dikirim adalah lampu ruang tamu tidak aktif. Universitas Sumatera Utara if A== 4 {LDR1 = read_adc0; if LDR1 100{printfLampu Ruang tamu belum padam;} else {printfLampu Ruang tamu telah dipadamkan;} goto LD; } if A== 5 {LDR2 = read_adc1; if LDR2 100{printfLampu Kamar belum padam;} else {printfLampu Kamar telah dipadamkan;} goto LD; } if A== O { if PIND.7 == 1{printfLocker telah dibuka;} else {printfLocker belum terbuka;} goto LD; } Merupakan perintah untuk mendeteksi apakah pintu telah dibuka atau tidak. Jika pada PIND.7 = 1 berarti locker telah dibuka sedangkan jika berlogika 0 locker belum terbuka. Universitas Sumatera Utara if A== C { if PIND.7 == 1{printfLocker belum terkunci;} else {printfLocker telah terkunci;} goto LD; Perintah mendeteksi apakah pintu telah terkunci atau tidak yaitu jika PIND.7 =0 artinya locker tidak terkuncisedangkan jika PIND.7 berlogika 1 berarti locker telah terkunci. printfMaaf, kode perintah anda salah. Silahkan ulangi; LD: delay_ms1000; printfc,0x1A; delay_ms1000; } void DeleteMessagevoid { printfAT+CMGD=1,3; putchar0x0D; Universitas Sumatera Utara whilegetchar=0x0A{} whilegetchar=0x0A{}; printfATD0811653010;; delay_ms1000; printfc,0x0D; delay_ms2000; } Merupakan perintah untuk menghapus sms pada kotak masuk void ReadMessagevoid { printfAT+CMGR=1; delay_ms1000; printfc,0x0D; whilegetchar=0x0A{} whilegetchar=0x0A{} forc=0;c10;c++{Data = getchar; if Data == {goto keluar;}} keluar: Data = getchar; Universitas Sumatera Utara forx=0;x3;x++ {PORTC.3 = 1; delay_ms500;PORTC.3 = 0;delay_ms500;} printfAT+CMGD=1,3; putchar0x0D; whilegetchar=0x0A{} whilegetchar=0x0A{}; } Merupakan perintah untuk membaca sms masuk, setelah dibaca, sms tersebut dihapus, untuk mengalokasikan sms baru. void Step_Closevoid{ x = 0; while x20 { x++; PORTB.3 = 1 ;delay_mst; PORTB.2 = 1 ;delay_mst;PORTB.3 = 0 ; PORTB.2 = 1 ;delay_mst; PORTB.1 = 1 ;delay_mst;PORTB.2 = 0 ; PORTB.1 = 1 ;delay_mst; PORTB.0 = 1 ;delay_mst;PORTB.1 = 0 ; PORTB.0 = 1 ;delay_mst; PORTB.3 = 1 ;delay_mst;PORTB.0 = 0 ; } Universitas Sumatera Utara Merupakan perintah untuk mrnjalankan motor stepper untuk mengunci locker. } void Step_Openvoid{ x = 0; while x20 { x++; PORTB.0 = 1 ; delay_mst; PORTB.1 = 1 ; delay_mst;PORTB.0 = 0 ; PORTB.1 = 1 ; delay_mst; PORTB.2 = 1 ; delay_mst;PORTB.1 = 0 ; PORTB.2 = 1 ; delay_mst; PORTB.3 = 1 ; delay_mst;PORTB.2 = 0 ; PORTB.3 = 1 ; delay_mst; PORTB.0 = 1 ; delay_mst;PORTB.3 = 0 ;PORTB.0 = 0 ; } Perintah untuk membuka locker dengan menjalankan motor stepper. } void mainvoid { InputOutput Ports initialization Port A initialization PORTA=0x0F; Perintah mengeluarkan output pada Port A dengan data 0F Universitas Sumatera Utara DDRA=0x00; Perintah untuk menginisialisasi Port A, dalam hal ini 00 adalah sebagai input. Port B initialization PORTB=0x00; DDRB=0x0F; Port C initialization PORTC=0x00; DDRC=0xFF; Port D initialization PORTD=0xF0; DDRD=0x00; USART initialization UCSRA=0x02; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x0C; Perintah di atas merupakan perintah untuk menginisialisasi port serial yaitu menentukan baud rate 19200 Bps 8 bit data dan 1 bit stop. ADC initialization ADMUX=ADC_VREF_TYPE 0xff; ADCSRA=0x84; Universitas Sumatera Utara SFIOR=0xEF; Perintah di atas untuk menginisialisai ADC yaitu tipe tegangan referensi adalah 5 v dan adc yang digunakan adalah 10 bit t = 2; A = 1; Perintah mengisi nilai awal dari t dan A reply_message; PORTC.3 = 1; delay_ms1000; Perintah untuk menunda waktu selama 1 detik . PORTC.3 = 0; while 1 { ifData==1{PORTC.0=1;A=1;delay_ms2000;reply_message;A=0;Data= 0;} Perintah verifikasi data pada variabel data apakah sama dengan 1, jika sama dengan 1 maka 1 lampu akan di hidupkan kemudian menunda waktu selama 2 detik dan dilanjutkan dengan mengirim sms sebagai feedback bahwa lampu tersebut telah dihidupkan atau belum. ifData==2{PORTC.1=1;A=2;delay_ms2000;reply_message;A=0;Data = 0;} if Data == 4{PORTC.0 = 0;A = 4; delay_ms2000;reply_message;A=0;Data = 0;} Universitas Sumatera Utara if Data == 5{PORTC.1 = 0;A = 5; delay_ms2000;reply_message;A=0;Data = 0;} if Data == O{Step_Open;A = O; delay_ms2000;reply_message;A=0;Data = 0;} if Data == C{Step_Close;A = C; delay_ms2000;reply_message;A=0;Data = 0;} if PIND.7 == 0{PORTC=0x07;delay_ms1000;DeleteMessage;PORTC=0x00;} if PIND.6 == 0{PORTC.3 = 1;delay_ms1000;ReadMessage;} Merupakan perintah untuk menghapus sms secara manual dengan mendeteksi tombol. delay_ms1000; PORTC.3 = 0; Perintah untuk menghidupkan lampu indikator } } Universitas Sumatera Utara BAB V KESIMPULAN DAN SARAN

5.1 Kesimpulan