2.Implementasi Pemrograman IMPLEMENTASI PERANGKAT LUNAK

BAB IV IMPLEMENTASI PERANGKAT LUNAK

Ada beberapa hal yang harus diperhatikan sebelum program mobil automatis dibuat dan pada akhirnya dapat dijalankan dengan baik, cara membuat program dan cara mengimplementasikan program yang sudah dibuat. 4. 1. Kebutuhan Perangkat Sistem Perangkat yang dibutuhkan dalam pembuatan simulasi mobil menggunakan ATMega8535 ini meliputi perangkat keras hardware dan perangkat lunak software Adapun perangkat keras yang dibutuhkan adalah sebagai berikut : a. PC diatas pentium 3, yang memiliki serial port COM1COM2. b. Hard Disk dengan kapasitas minimum 500 Kb c. Downloader serial untuk AVR. Sedangkan perangkat lunak yang dibutuhkan adalah sebagai berikut : a. Windows XP SP2 sebagai sistem operasi b. CodeVision AVR sebagai program compiler

4. 2.Implementasi Pemrograman

Untuk memulai pemrograman jalankan CodeVision AVR yang terdapat di C:cvavrbincvavr.exe Gambar 4.1 Folder Tempat Program CodeVision AVR 50 Kemudian klik menu File-New. Pilih Project, kemudian klik OK Gambar 4.2 Tahap awal pembuatan program Pilih wizard avr, kemudian pilih chip yang akan digunakan, yaitu ATMega8535 dengan clock 11.0592. Gambar 4.3 Pemilihan Chip dan Clock yang akan digunakan Setelah memilihi chip yang digunakan, selanjutnya konfigurasikan masing-masing port yang akan digunakan, port yang akan digunakan adalah port A sebagai port untuk sensor warna, konfigurasi port a dapat dilihat pada gambar 4.4a, port B untuk LCD konfigurasi port B dapat dilihat pada gambar 4.4b, port C untuk driver motor konfigurasi port C dapat dilihat pada gambar 4.4c, port D untuk sensor garis konfigurasi port D dapat dilihat pada gambar 4.4d. a b ..... c d Gambar 4.4 konfigurasi port yang akan digunakan Karena sensor warna menggunakan Pin ADC maka kita perlu mengatur konfigurasi ADCnya juga, dapat dilihat pada gambar 4.5a. Dan untuk penggunaan delay maka konfigurasi timer juga diperlukan, konfigurasi timer dapat dilihat pada gambar 4.5b, berikut ini konfigurasi ADC dan timer : a b Gambar 4.5 Konfigurasi timer dan ADC. Setelah selesai, klik menu File-Generate, Save and Exit. Lalu akan muncul halaman untuk memasukkan code program. Berikut ini potongan program simulasi mobil automatis : void scan { sensor=PIND; sensor=0b00111111; switch sensor { case 0b00000001: maju70,0 ; x=1; z=4; break ; case 0b00000011: maju90,30; x=1; z=4; break ; case 0b00000010: maju100,50; x=1; z=4; break ; case 0b00000110: maju100,60; x=1; z=4; break ; case 0b00000100: maju100,80; x=1; z=4; break ; case 0b00001100: maju100,100; z=4; break ; case 0b00001000: maju80,100; x=0; z=4; break ; case 0b00011000: maju60,100; x=0; z=4; break ; case 0b00010000: maju50,100; x=0; z=4; break ; case 0b00110000: maju30,90; x=0; z=4; break ; case 0b00100000: maju0,70; x=0; z=4; break ; case 0b00111111: belka90,50; x=0; z=4; break ; case 0b00000000: if x==1 belka 90,50; else belki 50,90; break ; } } Code di atas adalah code untuk scan garis hitam, fungsi ini digunakan agar mobil tetap berada di jalur yang ditentukan, yaitu tetap mengikuti garis hitam. Jika sensor berada di atas garis hitam maka sensor akan bernilai 1, dan jika berada di garis putih maka sensor akan bernilai 0. Setelah mengecek garis lintasan mobil digerakkan sesuai posisinya dengan menggunakan fungsi maju a,b. posisi x merupakan indicator tempat terakhir mobil berada, jadi jika mobil keluar garis lintasan maka mobil akan bisa kembali dengan segera. Contoh: case 0b00000100: maju100,80; x=1; z=4; break ; 1 case 0b00001000: maju80,100; x=0; z=4; break ; 2 Jalan dari code 1 adalah jika sensor KI terkena garis hitam sedang yang lain membaca background putih, kemudian mobil akan berbelok ringan motor kiri maju cepat, motor kanan maju ringan dan x diset 1, 1 berarti kondisi ketika mobil berada di sebelah kiri garis hitam, sedangkan code 2 adalah jika sensor KA terkena garis hitam sedang yang lain terkena background putih, dan x diset=0, berarti posisi mobil berada di sebelah kanan garis hitam. Dengan mengingat keberadaan mobil maka ketika mobil keluar jalur, maka mobil akan berbelok sesuai dengan kondisi keberadaan mobil yang terakhir diingat. case 0b00000000: if x==1 belka 90,50; else belki 50,90; break ; Jika x=1, kondisi mobil terkahir berada di sebelah kiri lintasan maka secara otomatis mobil akan langsung berbelok kanan sampai menemukan garis lintasan yang tepat, jika x=0, kondisi mobil terkahir di sebelah kanan lintasan maka secara otomatis mobil akan langsung berbelok kiri sampai menemukan garis lintasan yang tepat. Selain melaju di garis luru mobil juga akan dihadapi dengan lintasan yang memiliki perempatan, dan jika menghadapi perempatan mobil akan langsung berbelok kanan, fungsi ini dapat dilihat di code berikut ini: case 0b00111111: belka90,50; x=0; z=4; break ; code ini berarti mobil sedang berada di atas perempatan, perempatan dikenali dengan semua sensor sedang membaca garis hitam, jika kondisi perempatan terpenuhi maka mobil akan langsung berbelok kanan dengan fungsi belkaa,b. void maju unsigned char mki, unsigned char mka { pwmki=mki; pwmka=mka; dirki=0; dirka=0; remki=1; remka=1; } Fungsi majua,b adalah fungsi untuk maju, nilai a adalah pwm untuk motor kiri, b adalah nilai pwm untuk motor kanan. dirki=0 berarti direction motot kiri di aktifkan, begitu juga dengan dirka. Sedangkan remki merupakan nilai untuk rem motor baik motor kiri maupun kanan. Remka dan remki harus dipastikan tidak aktif, karena jika remka atau remki diaktifkan berapapun besarnya pwm dan direksi yang diberikan maka motor tidak akan dapat bergerak sama sekali. void belka unsigned char mki, unsigned char mka { pwmki=mki; pwmka=mka; dirki=0; dirka=1; remki=1; remka=1; } Fungsi belkaa,b adalah fungsi untuk belok kanan, untuk dapat belok kanan maka direction kanan harus berhenti dan direction kiri berjalan. void belki unsigned char mki, unsigned char mka { pwmki=mki; pwmka=mka; dirki=1; dirka=0; remki=1; remka=1; } Fungsi belkia,b adalah fungsi untuk belok kiri, untuk dapat belok kiri maka direction kiri harus berhenti dan direction kanan berjalan. void stop {pwmki=0; pwmka=0; remki=0; remka=0;} fungsi ini digunakan untuk menghentikan mobil. warna=read_adc0; l_tm=255-m2-10; mencari nilai low merah h_tk=255-k2+10; mencari nilai high kuning th=255-warna2; mencari nilai tengah-tengah ifth=h_tk z=1; kuning else ifthl_tmz=2; merah else z=3; fungsi ini digunakan untuk mengecek warna merah, hijau dan kuning. warna=read_adc0 berfungsi untuk mengambil nilai warna yang dilihat saat ini, l_tm digunakan untuk mencari nilai low tegangan merah, h_tk=digunakan untuk mencari nilai max tegangan kuning, th digunakan untuk mencari nilai rata-rata tegangan saat ini. Jika nilai tegangan rata-rata saat ini kurang dari h_tk maka warna yang dilihat adalah warna kuning, jika nilai tegangan rata-rata saat ini lebih dari nilai l_tm maka warna yang dilihat adalah warna merah. Untuk memberikan aksi kepada motor sesuai dengan warna yang dilihat maka digunakan potongan program di bawah ini : warna=read_adc0; l_th=255-h2-10; h_th=255-h2+5; th=255-warna2; ifz==1 { lcd_gotoxy0,0;lcd_putsf kuning ; ifx==1 maju50,40; else ifx==0 maju40,50; else maju50,50; } else ifz==2 { lcd_gotoxy0,0;lcd_putsf merah ;stop;waktu7; maju80,80; } else ifthh_th thl_th { lcd_gotoxy0,0;lcd_putsf ijo bro ; ifx==1 maju70,50; else ifx==0 maju50,70; else maju100,100; } else {lcd_gotoxy0,0;lcd_putsf item ;} Program ini berfungsi. Jika z==1, maka pwm ke motor akan dikurangi, dan direksi yang diberikan ke motor sesuai dengan posisi terakhir saat pendeteksian garis. Jika z==2, maka mobil akan berhenti selama 7 detik kemudian langsung maju, jika nilai thh_th dan hl_th maka mobil akan melaju seperti normal, jika semua tidak terpenuhi berarti sensor warna sedang membaca warna hitam sehingga tidak ada aksi yang diberikan kepada driver motor 4. 3. Prosedur Pemasangan Program Pada ATMega8535 Agar listing program yang dibuat dapat dibaca oleh microcontroller, maka listig program yang awalnya berekstensi .c harus diconvert menjadi .hex. Berikut ini alur proses pemasangan program pada ATMega8535 menggunakan program compiler CodeVision AVR. Gambar 4.6 Alur Pemasangan Program Pada Microcontroller Listing Code berekstensi .c Compile Code Erro r? Perbaiki Make Program Convert listing code berkestensi .c menjadi .hex Proses Pengisian Program 1. Flash erasure Checking 2. Flash Programming 3. EEPROM Programming Untuk memasang program pada chip ATMega8535 pertama-tama program yang sudah dibuat sebelumnya harus dicompile terlebih dahulu, untuk memastikan tidak ada yang error, karena jika ada yang error maka program tidak akan bisa dibuat, hasil compile dari program yang sudah tidak memiliki error adalah seperti gambar di bawah ini: Gambar 4.7 Hasil compilasi program Setelah tidak ada kesalahan selanjutnya make program, hasilnya dapat dilihat pada gambar 4.8, setelah make program selesai listing code yang awalnya berekstensi .c akan diconvert menjadi .hex, untuk mengetahuinya dapat dilihat di folder tempat penyimpanan file project yang sedang dibuat, seperti yang ditunjukkan pada gambar 4.9 . Gambar 4.8 Tampilan Saat Make Program Gambar 4.9 Hasil Convert File t5.c Setelah itu klik button “Program the chip”. Maka proses selanjutnya adalah proses pengisian program, ada juga yang menamakan penanaman program pada chip ATMega8535. Pengisian program ini dilakukan secara bertahap : 1. Proses pertama pengecekan kondisi memori flash chip 2. Jika chip belum terpasang dengan benar maka aka nada peringatan error. 3. Jika chip sudah terpasang dengan benar maka memori flash yang ada sebelumnya dihapus 4. Proses selanjutunya adalah proses pengisian memori flash. 5. Setelah proses pengisian memori flash selesai, selanjutnya proses pengisian memori EEPROM. Proses ini dilakukan hanya jika listing code yang dibuat menggunakan fasilitas EEPROM, jika tidak maka proses ini akan dilewati. Berikut ini hasil dari pengisian program pada chip ATMega8535 ………. a b Gambar 4.10 Proses Pengisian Program

BAB V ANALISIS DAN UJI COBA