Anda di halaman 1dari 8

#include <mega8535.h> #include <delay.h> #include <alcd.h> #include <stdio.

h>

unsigned unsignedint int ldr_kanan,ldr_depan,ldr_kiri,ldr_blkng,count,speed_blkng_kiri,speed_blkng_kanan,speed_de ldr_kanan,ldr_depan,ldr_kiri,ldr_blkng,count,speed_blkng_kiri,speed_blkng_kanan,s pan_kiri,speed_depan_kanan,kiri=0,kanan=0 peed_depan_kiri,speed_depan_kanan,kiri=0,kanan=0 eeprom eepromint intbatas=500 batas=500 char charbu!!"33# bu!!"33# inisialisasi /ariabel a-a, dengan tipe unsigned int 0*+bit1 dan char 08bit1, arti unsigned berarti nilai nya positi! semua #de!ine blkng_kiri_mundur $%&'(.)=0 $%&'(.5=* #de!ine $%&'(.)=0$%&'(.5=0 $%&'(.5=* #de!ineblkng_kiri_mundur blkng_kiri_stop $%&'(.)=0 #de!ine blkng_kiri_stop $%&'(.)=0 $%&'(.5=0 #de!ine blkng_kanan_mundur $%&'(.+=* $%&'(.,=0 #de!ine $%&'(.+=*$%&'(.,=0 $%&'(.,=0 #de!ineblkng_kanan_mundur blkng_kanan_stop $%&'(.+=0 #de!ine blkng_kanan_stop #de!ine depan_kanan_ma-u #de!ine depan_kanan_stop #de!ine depan_kiri_ma-u #de!ine #de!inedepan_kiri_ma-u depan_kiri_stop #de!ine depan_kiri_stop $%&'(.+=0 $%&'(.,=0 $%&'(.0=* $%&'(.*=0 $%&'(.0=0 $%&'(.*=0 $%&'(..=0 $%&'(.3=* $%&'(..=0 $%&'(..=0 $%&'(.3=* $%&'(.3=0 $%&'(..=0 $%&'(.3=0

#de!ine #de!inedepan_kanan_ma-u depan_kanan_stop $%&'(.0=* $%&'(.0=0 $%&'(.*=0 $%&'(.*=0

de!ine itu !ungsi ganti nama a-a. #de!ine0spasi1nama_ganti0spasi1nama_asli . -adi misal $%&'(.5=* dan $%&'(.)=0 itu bisa dipanggil dengan blkng_kiri_mundur a-a. 'u-uan nya untuk mempermudah saat membaca 2 membuat program

.0

.*

interrupt "'340_%56# /oid timer0_o/!_isr0/oid1 7 isi !ungsi timer , -enis o/er!lo8 interupt , ini cara ker-a nya kan ud di-elasin. 3ntinya ini kaya subprogram diluar program utama, yang nantinya pointer program akan akses bolak9 balik program utama : interupt ini. ;aya pipelining sebutannya. count<< setiap masuk sini count increment. i!0count==*0017count=0 = ini ngebuat count (uma bernilai 09*00 nilai count 0 > *00 ini untuk buat pulsa 09*00? si motor . i!0count>=speed_blkng_kiri1 ambil contoh spped_blkng_kiri 50. @i i! ini bilang -ika count > spped maka blkng_kiri_stop. (ount 09*00. Aerarti ketika 0950 dy gak masuk i! ini melainkan i! yang dibagian ba8ah yang count<speed_blkg_kiri untuk motor -alan. Bah -ika count 509*00 maka stop. C8d brati 0950 = %B, 509*00 = %66. Dadi kecepatan nya motor 50? 7blkng_kiri_stop = i!0count>=speed_blkng_kanan1 7blkng_kanan_stop = i!0count>=speed_depan_kiri1 7depan_kiri_stop = i!0count>=speed_depan_kanan1 7depan_kanan_stop = i!0count<speed_blkng_kiri1 7blkng_kiri_mundur = i!0count<speed_blkng_kanan1

..

#de!ine E@(_5&F6_'C$F 0G)0 unsigned int read_adc0unsigned char adc_input1 7 E@4HI=adc_input J 0E@(_5&F6_'C$F : 0G!!1 22 @elay needed !or the stabiliKation o! the E@( input /oltage delay_us0*01 22 Ltart the E@ con/ersion E@(L&EJ=0G)0 22 Mait !or the E@ con/ersion to complete 8hile 00E@(L&E : 0G*01==01 E@(L&EJ=0G*0 return E@(M = 3ni subprogram ketika kita akti!in E@( dengan 5re! nya E5(( saat code8iKard. 4aka ini otomatis ada.

.3

/oid baca_ldr0/oid1 /oid itu subprogram yang bisa dipanggil, tu-uan nya e!isiensi program, -adi isi dari /oid ini bisa dipanggil hanya dengan = baca_ldr01. 7 ldr_kanan=read_adc001 ldr_depan=read_adc0*1 ldr_kiri=read_adc0.1 ldr_blkng=read_adc031 lcd_gotoGy00,*1 menentukan kordinat pointer lcd lcd_puts!0N N1 nulis spasi 0kosong1 pasti ada tu-uan nya, mungkin hapus lcd atau men-aga tetap clear. ;arena lcd -ika ad gangguan bisa salah pointer dan nulis disembarang kordinat lcd_gotoGy0O,*1 lcd_puts!0N N1 sprint!0bu!!,N?d N,ldr_blkng1 kon/ersi dari sumber integer ke string, karena lcd tdk bisa nilai bulat integer harus di string2array kan sprint!0string,!ormat desimal,sumber1 lcd_gotoGy0+,*1 lcd_puts0bu!!1 pasangan sprint! = puts 0bukan puts!1puts untuk nilai /ariabel, karena td nilai sudah di array nya brati dikirim array nya sprint!0bu!!,N?d N,ldr_kanan1 lcd_gotoGy0*.,01 lcd_puts0bu!!1 sprint!0bu!!,N?d N,ldr_depan1 lcd_gotoGy0+,01 lcd_puts0bu!!1 baca adc di pinE.0 taro nilai di /ariabel ldr_kanan pinE.* dst

.)

/oid set_batas0/oid1 7 3ni kan isi nya buat setting sensiti!itas cahaya sensor robot nya. i!0$3B@.3==01 -ika tombol $@3 ditekan maka batas di increment *00 7batas=batas<*00 i!0batas>*.0017batas=*.00 =kalo ud *.00 tetap *.00, supaya gk terlalu tinggi 8hile0$3B@.3==017= selama $@3 ditekan masi ditahan disini = i!0$3B@..==01-ika $@. ditekan 7batas=batas9*00 decrement batas *00 i!0batas<017batas=0 = klo nilai ud 0 ya tetap 0 -gn ada minus 8hile0$3B@..==017= selama $@. ditekan masi ditahan disini = sprint!0bu!!,N?d N,batas1 lcd_gotoGy0*.,*1 lcd_puts0bu!!1 = /oid init0/oid1 7 $%&'(=0G00 nilai a8al portc =0 @@&(=0G!! portc seluruhny -adi output $%&'@=0G66 nilai a8al portd = *, karena input tombol nanti masukan nya 0 @@&@=0G00 seluruh portd -adi input @@&I> inisialisasi suatu port input2output *=%H'$H' . 0=3B$H' $%&'I = nilai a8al suatu input.ouput

.5

22 'imer2(ounter 0 initialiKation 22 (lock sourceP Lystem (lock 22 (lock /alueP **05O..00 kQK 22 4odeP Bormal top=0G66 22 %(0 outputP @isconnected '((&0=0G0* '(B'0=0G00 %(&0=0G00 3ni semua register yg langsung muncul pas kita setting code8iKard itu ad keterangan nya semua tiap. registernya 22 'imer0s12(ounter0s1 3nterrupt0s1 initialiKation '34L;=0G05 22 E@( initialiKation 22 E@( (lock !reRuencyP +O*..00 kQK 22 E@( 5oltage &e!erenceP E5(( pin 22 E@( Qigh Lpeed 4odeP %!! 22 E@( Euto 'rigger LourceP E@( Ltopped E@4HI=E@(_5&F6_'C$F : 0G!! E@(L&E=0G8) 22 Elphanumeric S(@ initialiKation 22 (onnections are speci!ied in the 22 $ro-ectJ(on!igureJ( (ompilerJSibrariesJElphanumeric S(@ menuP 22 &L 9 $%&'A Ait 0 22 &@ 9 $%&'A Ait * 22 FB 9 $%&'A Ait . 22 @) 9 $%&'A Ait ) 22 @5 9 $%&'A Ait 5 22 @+ 9 $%&'A Ait + 22 @, 9 $%&'A Ait , 22 (haracters2lineP *+ lcd_init0*+1 3ni semua register yg langsung muncul pas kita setting code8iKard 22 Tlobal enable interrupts

.+ /oid main0/oid1 /oid utama 7 init01 panggsil sub init speed_blkng_kiri=0 speed_blkng_kanan=0 speed_depan_kiri=0 speed_depan_kanan=0 reset semua nilai a8al speed 8hile 0*1loop program utama 7 baca_ldr01 panggil sub program sesuai nama label ny set_batas01

i!0ldr_kiri>batas :: ldr_kiri>ldr_depan :: ldr_kiri>ldr_kanan :: ldr_kiri>ldr_blkng1 i! ini kan (uma logika a-a, dengan syarat. yg di i! nya. Ca dy bakal masuk i! -ika semua syarat disitu sesuai 7kiri=* speed_depan_kiri=0 speed_depan_kanan=+0 speed_blkng_kiri=0 speed_blkng_kanan=)0 delay_ms0501 ini kan cumaproses motor beker-a a-a. (oba a- di simulasiin pergerakan ban sesuai angka. itu. ;an angka itu artinya speed motor nya speed_depan_kiri=+5 speed_depan_kanan=50 speed_blkng_kiri=0 speed_blkng_kanan=0 delay_ms0.001 = C8d semua i! dan isi nya sama semua maksudnya. Qarus dingertiin sesuai tanda a-a itu kan dan pergerakan motor nya coba dibayangin a-a. i!0ldr_kanan>batas :: ldr_kanan>ldr_depan :: ldr_kanan>ldr_kiri :: ldr_kanan>ldr_blkng1 7kanan=* speed_depan_kiri=+0 speed_depan_kanan=0 speed_blkng_kiri=)0 speed_blkng_kanan=0

., i!0ldr_depan>batas ldr_depan>ldr_blkng1 7 i!0kiri==0 :: kanan==017 speed_depan_kiri=+0 speed_depan_kanan=+0 speed_blkng_kiri=0 speed_blkng_kanan=0 = i!0kiri==*1 7kiri=0 speed_depan_kiri=+0 speed_depan_kanan=0 delay_ms0501 speed_depan_kiri=0 speed_depan_kanan=0 = i!0kanan==*1 7kanan=0 speed_depan_kiri=0 speed_depan_kanan=+0 delay_ms0501 speed_depan_kiri=0 speed_depan_kanan=0 = = i!0ldr_blkng>batas :: ldr_blkng>ldr_depan :: ldr_blkng>ldr_kanan :: ldr_blkng>ldr_kiri1 7 i!0kiri==0 :: kanan==017 speed_depan_kiri=0 speed_depan_kanan=0 speed_blkng_kiri=80 speed_blkng_kanan=80 :: ldr_depan>ldr_kiri :: ldr_depan>ldr_kanan ::