Pengujian Rangkaian Sensor Optocoupler Pengujian Rangkaian Keypad

pemindahan LED adalah 2 Hz. Setelah didownload ke mikrokontroller, program ini telah berjalan dengan baik dan LED bekerja sesuai dengan perintah.

4.2 Pengujian Rangkaian Sensor Optocoupler

Pengujian dari rangkaian ini dapat dilakukan dengan mengukur tegangan pada output rangkaian sensor. Dari hasil pengujian didapatkan tegangan sebagai berikut : Tabel 4.1 Tegangan Output Sensor Optocoupler Kondisi Tegangan pada Output Sensor Lubang Piringan Terhalangi 0,2 Volt Lubang Piringan Tidak Terhalangi 4,4 Volt

4.3 Pengujian Rangkaian Keypad

Pada bagian ini, pengujian akan dilakukan dengan memberikan program ke mikrokontroller untuk membaca output dari keypad. Dimana output itu adalah hasil dari penekanan tombol pada keypad yang menggunakan saklar push button didalamnya. Tombol ini mempunyai tiga masukan yakni untuk kolom, baris, dan kommon pada perancangan disini kommon dihubungkan ke ground. Dengan disetnya kommon dengan ground, apabila menekan tombol otomatis ketiga masukan terhubung, dengan kata lain kolom dan baris berlogika ‘0’ perubahan logika inilah yang diproses oleh mikrokontroler. Maka untuk mendapatkan hasil sesuai dengan yang diinginkan, mikrokontroller diberi program sebagai berikut : 4x4 Keypad Demo CodeVisionAVR C Compiler Universitas Sumatera Utara Chip: ATMega8535 Use an 2x16 alphanumeric LCD connected to PORTB: asm .equ __lcd_port= 0x15 endasm include lcd.h include stdio.h include delay.h include 90s8515.h quartz crystal frequency [Hz] define F_XTAL 12000000 PIND0..3 will be row inputs define KE YIN PIND PORTD4..7 will be column outputs define KE YOUT PORTD used for TIME R0 count initialization define INIT_TIME R0 TCNT0= 0x100L-F_XTAL64L500L define FIRST_COLUMN 0x80 define LAST_COLUMN 0x10 typedef unsigned char byte; store here every key state as a bit, bit 0 will be KE Y0, bit 1 KEY1,... unsigned keys; LCD display buffer char buf[33]; TIME R 0 interrupt at every 2 ms interrupt [TIM0_OVF] void timer0_intvoid { static byte key_pressed_counter= 20; static byte key_released_counter,column= FIRST_COLUMN; static unsigned row_data,crt_key; reinitialize TIME R0 INIT_TIME R0; row_data = 4; get a group of 4 keys in in row_data row_data|= ~ KE YIN0xf; column = 1; if column= = LAST_COLUMN 1 { column= FIRST_COLUMN; if row_data= = 0 goto new_key; Universitas Sumatera Utara if key_released_counter --key_released_counter; else { if --key_pressed_counter= = 9 crt_key= row_data; else { if row_data= crt_key { new_key: key_pressed_counter= 10; key_released_counter= 0; goto end_key; } ; if key_pressed_counter { keys= row_data; key_released_counter= 20; } ; } ; } ; end_key:; row_data= 0; } ; select next column, inputs will be with pull-up KE YOUT= ~ column; } test if a key was pressed unsigned inkeyvoid { unsigned k; if k= keys keys= 0; return k; } void init_keypadvoid { DDRD= 0xf0; INIT_TIME R0; TCCR0= 3; TIMSK= 2; asmsei } main { unsigned k; init_keypad; lcd_init16; lcd_putsfCVAVR Keypad; read keys and display key code Universitas Sumatera Utara while 1 { lcd_gotoxy0,1; if k= inkey { sprintfbuf,Key code= Xh,k; lcd_putsbuf; } else lcd_putsfNO KE Y ; delay_ms500; } } Program ini akan menampilkan setiap karakter keypad yang ditekan pada sebuah display LCD yang terhubung ke PortB. Program ini telah berjalan dengan baik dan sesuai dengan kebutuhan perancangan alat.

4.4 Pengujian Rangkaian LCD