2012 WORKSHOP ROBOTIKA DASAR I

Mada Sanjaya WS, Ph.D
1

PENGENALAN ROBOT

Rekan-rekan pasti telah mengenal istilah robot??
Robot sering sekali di jadikan tema
utama dalam film-film Hollywood,
Semua mungkin tahu robot
transformer, RoboCOP, wall-E,
DoraEMON, ataupun astroBOY.
Robot menjadi trend, kemungkinan
karena robot adalah perwujudan
dari teknologi futuristic yang
paling canggih.

Gambar 1. Wall-E robot yang bisa jatuh cinta

Robot menurut kamus bahasa, berasal dari kata robota yang artinya
pekerja. Sehingga robot dapat didefinisikan sebagai sebuah alat mekanik
yang dapat bekerja secara terus menerus untuk membantu pekerjaan
manusia, yang dalam menjalankan tugasnya dapat dikontrol langsung oleh
manusia ataupun bekerja secara otomatis sesuai program yang telah
ditanamkan pada chip kontroler robot.

Perkembangan Dunia Robot

Trend perkembangan dunia robot, tidak hanya ada pada angan-angan
pembuat film Hollywood, Tetapi merupakan hasil nyata dari kerja
panjang para peneliti dan teknokrat yang bergelut di bidang otomasi dan
kecerdasan buatan. Perkembangan dunia robot salah satunya dapat
2

terlihat dari perkembangan robot ASIMO milik Honda yang telah
menghabiskan waktu riset selama 20 tahun.

Gambar 2. Perkembangan ASIMO

Kecerdasan Buatan

Mungkinkah robot akan dapat berfikir dan dapat berinteraksi dengan
manusia. Wahhh,,,itu sudah terjadi, meski masih sangat sederhana.
KISMET adalah robot social pertama yang dapat berinteraksi dengan
manusia. KISMET adalah robot buatan Dr. Cynthia Breazeal yang
merupakan salah satu ilmuwan robot wanita di Dunia. Beliau bekerja di
lab kecerdasan buatan MIT (ITB-nya Amrik).

3

Gambar 3. Interaksi KISMET dan Dr. Cynthia Breazeal

Saat ini, dunia robotika terus berkembang, bukan hanya robot
humanoid, robot berkembang dalam berbagai kondisi dan kebutuhan
manusia, seperti terlihat pada ilustrasi berikut.

Gambar 4. Bidang-bidang robotika

Secara umum robot terdiri dari tiga bagian utama yaitu mekanik,
elektronik, dan pemrograman/kontrol.

4

Mobil tersebut dapat dikendalikan maju. belok kiri. mundur. (Untuk simulasinya dapat di lihat pada CD lampiran) 5 . ROBOT MOBIL KONTROL ANALOG (Remote Control Analog Mobile Robot) Tentu rekan-rekan sudah tidak asing lagi dengan mobil atau pesawat remot kontrol. kita akan membuat sebuah robot remot kontrol sederhana yang sangat mudah untuk dibuat. mobil remot kontrol merupakan salah satu jenis robot teleoperated. Gambar 1. Satu set mobil remot kontrol Pada pembahasan kali ini. Yang dapat di kendalikan arah geraknya. Simulasi Proteus Berikut adalah sebuah desain sederhana dari robot kontrol analog. ataupun belok kanan.

Gambar 2. Desain dan simulasi robot kontrol analog sederhana Desain Aktual Untuk membuat desain actual robot. 6 . dalam buku ini dibuat menggunakan software Fritzing.

(a) (b) 7 . walking robot kontrol dan lainnya. Gambar 3. misalnya robot soccer. Berikut adalah robot beetlebot yang siap untuk di uji coba. Desain aktual robot kontrol analog sederhana Robot kontrol analog ini dapat dibuat modifikasi dengan berbagai bentuk dan fungsi.

Robot mobil kontrol analog Walking Robot Kontrol Analog 4 Kaki Dengan sedikit memodifikasi roda menjadi bentuk kaki. Robot berkaki empat dengan kontrol analog Ayo tunjukkan kreativitasmu !!! 8 . (c) Gambar 4. maka akan diperoleh walking robot kontrol analog berikut: Gambar 5.

Ilustrasi aplikasi teknologi digital Berbagai jenis aplikasi teknologi yang ada saat ini. PENGENALAN PROGRAM CODE VISION AVR CodeVisionAVR merupakan salah satu software untuk menmprogram mikrokontroler yang berfungsi sebagai text editor dalam menulis baris perintah sekaligus sebagai compiler yang dapat mengubah file sumber 9 . sebagian besar merupakan produk teknologi digital. Begitupula dengan bidang robotika. sebagian besar merupakan pengembangan teknologi digital yang dikombinasikan dengan kecerdasan buatan (soft computing). PENGENALAN ELEKTRONIKA DIGITAL: BERMAIN DENGAN LED Gambar 1.

.hpinfotech. Double klik CodeVisionAVR Evaluation V2.menjadi file hexa. CodeVisionAVR menyediakan berbagai fasilitas yang memudahkan pengguna.05. …… void main(void) { //deklarasi variabel local dapat dituliskan disini.ro/html/cvavr.0 untuk memulai program 10 . …… } } PROYEK DIGITAL 1. Salah satunya adalah CodeWizardAVR yang memberikan kemudahan dalam melakukan konfigurasi fungsi-fungsi pin dan fitur yang yang ingin digunakan. MEMBUAT BLINKING LED Memulai Program 1. while (1) { //program utama dapat dituliskan disini. Selain itu juga CodeVisionAVR menyediakan toolbar yang memudahkan pengguna untuk melakukan berbagai interaksi yang diinginkan. Software CodeVision AVR versi demo dapat di unduh dari http://www. …… // kode-kode yang dihasilkan CodeWizard …….h> //deklarasi variabel global dapat dituliskan disini. Berikut adalah metode penulisan program pada CV AVR: #include <mega16.htm.

Kemudian muncul pula dialog confirm. klik OK. setelah itu buka chip. klik OK. pilih AT90.cwp . kemudian isikan dengan jenis mikrokontroler yang digunakan. 4. ATmega. 5.2. klik Yes. FPSLIC. Membuat new file 3. ATtiny. Kemudian akan muncul dialog. pilih project. Maka akan muncul file CodeWizard-untitled. 6. 11 . Setelah itu akan muncul dialog CodeWizardAVR.

pilih program. Untuk menyimpan file. pilih Generate. isikan nama file yang ingin digunakan dengan mengisi kotak dialog berikut 12 . Save and Exit seperti berikut 8. 7. dalam eksperimen ini kita gunakan ATmega16 dengan Clock dari crystal sebesar 12 MHz. Setelah itu.

05. Kemudian lengkapi program sesuai project yang dibuat. Version. Comment sesuai kebutuhan. 10.prj yang merupakan file program project yang siap untuk diisi logika program. serta program utama dalam while(1). dalam eksperimen membuat rangkaian blinking LED kita dapat menambahkan kode program pada Preprocessor (#). Berikut adalah contoh tambahan kode program untuk membuat rangkaian blinking LED.0 Professional Automatic Program Generator 13 . inisialisasi pada bagian void main(void). /***************************************************** This program was produced by the CodeWizardAVR V2. Setelah itu akan tampil running_led. Author. dan klik save. Company. Kemudian isikan Keterangan Project. File yang tersimpan terdiri dari tiga file. 9. dengan masing-masing nama ditulis sama.

HP InfoTech s. // LED menyala selama satu detik PORTD=0xFF.com Project : Blinking LED Version : I Date : 11/17/2012 Author : Mada Sanjaya WS.l. Tekan tombol F9 untuk compile. http://www.h> #include <delay.D Company : Bolabot Techno Robotic School Comments: "SEMANGAT!!!" Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 12.hpinfotech.h> void main(void) { //mendefinisikan output berupa LED DDRD=0xFF. Jika sudah tidak ada error klik OK. // LED mati delay_ms(1000).000000 MHz Memory model : Small External RAM size :0 Data Stack size : 256 *****************************************************/ #include <mega16. maka akan muncul kotak informasi ada tidaknya error. 14 . // LED mati selama satu detik } } 11. Setelah semua kode program ditulis dengan benar.© Copyright 1998-2010 Pavel Haiduc. // LED menyala delay_ms(1000). while (1) { PORTD=0x00. Ph.r.

12. Simulasi proteus rangkaian blinking led 15 . Simulasi Proteus Program Blinking LED Gambar 2. Program siap di upload pada hardware mikrokontroler untuk menghidupkan sistem yang telah dibuat.

file bernama running_led. pada bagian mikrokontroler. Klik kanan. 16 . Kemudian klik Play untuk memulai simulasi.hex. Kemudian klik OK. kemudian pilih edit properties 2. dari program yang telah dibuat. Cari program file. dalam proyek ini.Cara mengcompile program CV AVR ke Proteus 1. 3. dan Stop untuk menghentikan simulasi Proteus. berupa file Exe.

0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc. tombol_led.05. 10.cwp. tombol_led.c. MENYALAKAN LED DENGAN TOMBOL Simulasi Proteus Menghidupkan LED dengan Tombol Gambar 3. HP InfoTech s. http://www.r. 9. Isikan program berikut: /***************************************************** This program was produced by the CodeWizardAVR V2.prj.hpinfotech. Isikan nama tiga file: tombol_led. prosedurnya sama dengan proyek digital 1.PROYEK DIGITAL 2.l. Simulasi Proteus menghidupkan LED dengan tombol Membuat Program Untuk langkah 1-8.com Project : Menghidupkan LED dengan tombol Version : I 17 .

PORTD.4=1.h> void main(void) { // Mendefinisikan input tombol DDRB.1=0.2=1.D Company : Bolabot Techno Robotic School Comments: "SEMANGAT!!!" Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 12. //led kuning mati } else if (PINB. DDRD.2=0.1=0.3=1.3=0.0==0) { PORTD.2=1.3=1. //led kuning mati PORTD. DDRD. //led kuning nyala } else { 18 . //kondisi awal PORT PORTD.000000 MHz Memory model : Small External RAM size :0 Data Stack size : 256 *****************************************************/ #include <mega16. //led biru nyala PORTD.3=1.1=1.4=1. //Mendefinisikan output LED DDRD.1==0) { PORTD. //semua led mati PORTD. Ph. //led biru mati PORTD. //led biru nyala PORTD. DDRB. //led kuning nyala PORTD.4=1.0=0. DDRD.1=1.4=0. PORTD.2=1. //led biru mati PORTD.1=1. while (1) { if (PINB.Date : 11/17/2012 Author : Mada Sanjaya WS.

1=1. PORTD.4=1. } } } SELAMAT MENCOBA !!! (^v^) 19 .PORTD. PORTD.3=1. //semua led mati PORTD.2=1.

robot tersebut bekerja berdasarkan program yang ditanamkan seperti robot line follower. Gambar disamping menampilkan impian robot masa depan yang dapat dikontrol langsung mengikuti gerak manusia yang menjadi pengontrolnya. dan sebagainya. lampu lalu lintas. komputer dan lainnya. Ilustrasi robot kontrol Secara umum robot tergolong menjadi dua bagian yaitu robot otomatis dan robot teleoperated. robot humanoid. televisi. Robot otomatis dapat bekerja tanpa kontrol langsung oleh manusia. 20 . Sedangkan robot teleoperated harus dikontrol langsung oleh manusia. pintu otomatis. Gambar 1. seperti robot kontrol. ROBOT KONTROL DIGITAL REMOTE KABEL Film Real steel !!?. robot avoider obstacle.

mundur. Bentuk Fisik Push Button 4 pin 21 . dibidang otomotif dengan panel-panel kontrolnya. Di bidang komputer dengan keyboard dan mouse. Untuk robot kontrol dalam eksperimen didalam bab ini masih menggunakan kontrol berbasis kabel. belok kiri. Tombol Push Button Push button merupakan sebuah device untuk menghubungkan dan memutuskan rangkaian listrik antara 2 titik. serta berputar. Gambar 2. Aktif high pushbutton Aktif high pushbutton merupakan push button yang memiliki karakteristik saat tidak ada penekanan maka dalam keadaan terputus (off) sedangkan saat ditekan akan tersambung (on). Penggunaan push button dikehidupan sehari-hari hampir menyentuh semua bidang. belok kanan. bahkan diperalatan rumah tangga sekalipun seperti kontrol peralatan listrik juga menggunakan push button. kita akan membuat robot digital teleoperated sederhana yang dapat dikontrol untuk bergerak maju.Pada eksperimen dalam bab ini.

7 dan PORTB. sedangkan motor kanan diatur oleh PORTD. serta gerak mundur dihubungkan dengan PIN D. tombol gerak kanan dihubungkan dengan PIN D. Skema proteus robot kontrol digital Sesuai desain pada tombol gerak kiri dihubungkan dengan PIN D.2.5 dan PORTD. Motor kiri diatur oleh PORTD.1.3.0. Desain Lengkap Robot Kontrol Digital Gambar 3. Logika yang dibuat 22 .Aktif low pushbutton Aktif low push button merupakan push button yang memiliki karakteristik saat tidak ada penekanan maka dalam keadaan tersambung (on) sedangkan saat ditekan akan terputus (off). tombol gerak maju dihubungkan dengan PIN D.0.6.

3 = 0 0 1 0 1 Ingat motor hanya akan bergerak jika diberi beda polaritas antara dua pin motor! Membuat Program Robot Kontrol Digital dengan CV AVR /***************************************************** This program was produced by the CodeWizardAVR V2.D Company : Bolabot Techno Robotic School 23 .untuk membuat sebuah robot kontrol dapat diringkas dalam tabel berikut Tabel 1.7 B.com Project : Robot Kontrol Digital Version : I Date : 11/20/2012 Author : Mada Sanjaya WS.5 D.05. HP InfoTech s.hpinfotech.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc.l. http://www.0 Push-Button Maju D. Kondisi Gerak Motor dan Kondisi Logika Tiap Pin Motor Kondisi Tombol D. Ph.r.2 = 0 1 0 1 0 Belok Kiri D.1 = 0 0 0 1 0 Mundur D.0 = 0 1 0 0 0 Belok Kanan D.6 D.

// Port C initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=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.000000 MHz Memory model : Small External RAM size :0 Data Stack size : 256 *****************************************************/ #include <mega8. DDRB=0x06.h> // Declare your global variables here void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=In // State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=T PORTB=0x00.h> #include <delay.Comments: Bekerja untuk Kebangkitan Teknologi Indonesia Chip type : ATmega8 Program type : Application AVR Core Clock frequency: 12. DDRC=0x00. 24 .

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 11. // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped TCCR0=0x00. OCR1AH=0x00. OCR1BL=0x00. // OC1B output: Non-Inv. // 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=0xA1. OCR1BH=0x00. OCR1AL=0x00. TCNT1H=0x00. TCCR1B=0x0D. ICR1L=0x00. // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped 25 .DDRD=0x00. ICR1H=0x00. TCNT0=0x00. TCNT1L=0x00.719 kHz // Mode: Fast PWM top=0x00FF // OC1A output: Non-Inv.

// TWI initialization 26 . TCNT2=0x00. // External Interrupt(s) initialization // INT0: Off // INT1: Off MCUCR=0x00. OCR2=0x00. // USART initialization // USART disabled UCSRB=0x00. SFIOR=0x00. // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80.// Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00. // ADC initialization // ADC disabled ADCSRA=0x00. // SPI initialization // SPI disabled SPCR=0x00. TCCR2=0x00. // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00.

// mendefinisikan sebagai input dari tombol gerak ke kanan DDRD.1=1. PORTD.// TWI disabled TWCR=0x00. PORTD.6=1.0==0) //robot gerak ke kiri { PORTD. PORTB.7=1.0=0.3=0.0=1.5=0. // mendefinisikan sebagai ouput motor kanan DDRB.0=1. PORTD.1==0) //robot gerak ke kanan { PORTD.7=0.6=0. // mendefinisikan sebagai input dari tombol gerak mundur DDRD.0=1. // kondisi awal PORTD. PORTD. // mendefinisikan sebagai ouput motor kiri DDRD. PORTD.6=0. // mendefinisikan sebagai ouput motor kiri DDRD.0=0.3=1. // mendefinisikan sebagai input dari tombol gerak maju DDRD. // mendefinisikan sebagai ouput motor kanan PORTD. // mendefinisikan sebagai input dari tombol gerak ke kiri DDRD. } else if (PIND.2=1. PORTD. // pengatur kecepatan motor menggunakan PWM untuk motor kanan while (1) { if (PIND. PORTD. PORTB.5=1.6=1.1=0.5=1. // pengatur kecepatan motor menggunakan PWM untuk motor kiri OCR1B=200. 27 . PORTD. DDRD.7=1.2=0. OCR1A=200.5=1.

0=1. PORTD.5=0. PORTB.0=0.0=0.0=0. } else //robot diam { PORTD. PORTD.3==0) //robot gerak mundur { PORTD. } else if (PIND.6=0.7=0. } } } 28 .6=1.6=0.7=1. PORTD. PORTD. } else if (PIND. PORTB.7=1.5=0. PORTD.7=0. PORTD.5=1. PORTD. PORTB.2==0) //robot gerak maju { PORTD. PORTB.

misalnya medan magnet. ada juga lintasan dengan warna lain dengan permukaan yang kontras dengan warna garisnya. Ada juga garis yang tak terlihat yang digunakan sebagai lintasan robot. Garis yang dimaksud adalah garis berwarna hitam diatas permukaan berwarna putih atau sebaliknya. Gambar 1. Ilustrasi robot line follower dengan posisi sensor di atas permukaan putih Seperti layaknya manusia. tentunya karena manusia memiliki “mata” sebagai penginderanya. Line Tracer Robot dan sebagainya. ROBOT LINE FOLLOWER DIGITAL DENGAN IC KOMPARATOR Line follower Robot (Robot Pengikut Garis) adalah robot yang dapat berjalan mengikuti sebuah lintasan. bagaimana manusia dapat berjalan mengikuti jalan yang ada tanpa menabrak dan sebagainya. ada yang menyebutnya dengan Line Tracker. Begitu juga robot line follower 29 .

dengan demikian akan menjadi mudah mengerjakannya. Diagram blok robot line follower paling tidak tampak seperti gambar berikut. Sensor garis ini mendeteksi adanya garis atau tidak pada permukaan lintasan robot tersebut. dia memiliki sensor garis yang berfungsi seperti “mata” pada manusia. sistem minimum AT Mega 16 dan motor driver. 30 . Untuk merangkai rangkaian elektroniknya kita perlu tahu dulu diagram blok sistem yang akan kita bangun. dan informasi yang diterima sensor garis kemudian diteruskan ke prosesor untuk diolah sedemikian rupa dan akhirnya hasil informasi hasil olahannya akan diteruskan ke penggerak atau motor agar motor dapat menyesuaikan gerak tubuh robot sesuai garis yang dideteksinya. Sistemnya terdiri dari sensor garis. rangkaian komparator. Blok sistem yang akan kita bagun Gambar 2.ini.

Skema Lengkap Line follower Digital IC Komparator Pada skema lengkap robot line follower didesain dengan posisi sensor di atas permukaan putih.1 untuk motor kiri. Sebaliknya. Oleh mikrokontroler data logika pin tersebut kemudian diolah untuk mengerakan motor. sedangkan sistem actuator motor DC dipasang pada Port D. oleh IC LM 393. arus di non-inverting sehingga output menuju pin mikrokontroler menjadi LOW (0). Kondisi tersebut menyebabkan arus output sensor menuju IC komparator LM 393 menjadi minimum. motor akan bergerak jika kedua pin motor tersebut 31 . arus di non-inverting sehingga output menuju pin mikrokontroler menjadi HIGH (1). oleh IC LM 393.0 dan D. Prinsip kerja robot line follower berikut adalah saat sistem sensor berada di atas permukaan putih.0 dan B. tidak akan ada pantulan cahaya dari LED yang akan mengenai sensor cahaya LDR sehingga resistansi sensor LDR sangat besar sehingga arus tidak akan melalui LDR. Kondisi tersebut menyebabkan arus output sensor menuju IC komparator LM 393 menjadi maksimum. D. Dua buah sistem sensor di pasang pada pin B.1.2 dan D.3 untuk motor kanan. saat sistem sensor berada di atas garis hitam. akan ada pantulan cahaya dari LED yang akan mengenai sensor cahaya LDR sehingga resistansi sensor LDR berkurang sehingga arus bergerak melalui LDR.

3 Maju 0 1 0 1 Belok Kiri 0 0 0 1 Belok Kanan 0 1 0 0 Mati 1 1 1 1 32 . Tabel 1.0 = 0 B.memiliki beda polaritas.1 = 0 Maju Belok Kiri B. Kondisi Gerak Motor dan pengaruh Sensor Kondisi B.1 = 1 Belok Kanan Mati Tabel 2.0 =1 B.1 D.2 D.0 D. Selengkapnya mengenai logika gerak robot dapat dilihat pada Tabel 1 dan 2. Kondisi Gerak Motor dan Kondisi Logika Tiap Pin Motor Kondisi D.

Bentuk jadi robot line follower menggunakan AT Mega 16 33 . Gambar 3. Skema lengkap robot line follower menggunakan AT Mega 16 Bentuk Robot Line Follower Gambar 4.

com Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 12.h> //tambahan program untuk membuat waktu tunda // Alphanumeric LCD Module functions #include <alcd. HP InfoTech s.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc.h> # include <delay. Ph. http://www.hpinfotech. bolabot.000000 MHz Memory model : Small External RAM size :0 Data Stack size : 256 *****************************************************/ #include <mega16.l.h> // Declare your global variables here void main(void) 34 .r.D Company : Bolabot Techno Robotic School Comments: www.com Project : Robot Line follower Version : I Date : 11/8/2012 Author : Mada Sanjaya WS.Membuat Program Robot Line Follower dengan CV AVR /***************************************************** This program was produced by the CodeWizardAVR V2.05.

DDRD=0x30. 35 . // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00. // 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. // Port D initialization // Func7=In Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T PORTD=0x00. // 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=T State1=T State0=T PORTB=0x00. DDRB=0x00.{ // Declare your local variables here // Input/Output Ports initialization // Port A 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 PORTA=0x00. DDRC=0x00. DDRA=0x00.

OCR1AL=0x00. ICR1H=0x00. OCR1AH=0x00. TCNT1H=0x00. TCNT1L=0x00. TCCR1B=0x0D. OCR1BL=0x00. OCR0=0x00. OCR1BH=0x00. 36 . TCNT2=0x00. // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 11. // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00.719 kHz // Mode: Fast PWM top=0x00FF // OC1A output: Non-Inv. // OC1B output: Non-Inv.TCNT0=0x00. TCCR2=0x00. ICR1L=0x00. // 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=0xA1.

// External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00. // TWI initialization // TWI disabled TWCR=0x00. // ADC initialization // ADC disabled ADCSRA=0x00. // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80. 37 . SFIOR=0x00. MCUCSR=0x00.OCR2=0x00. // USART initialization // USART disabled UCSRB=0x00. // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00. // SPI initialization // SPI disabled SPCR=0x00.

PORTD.0=0.// Alphanumeric LCD initialization // Connections specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS .PORTC Bit 5 // D6 .0=1.2=1.1=0. DDRB. OCR1B=200. // Tambahan kode mendefinisikan kondisi awal PORTB.PORTC Bit 4 // D5 .PORTC Bit 2 // D4 . DDRD.1=0.PORTC Bit 6 // D7 .1=1. //sensor kanan PORTD. DDRD. kanan putih.2=0. DDRD. // Tambahan kode mendefinisikan kecepatan motor PWM OCR1A=200. //sensor kiri PORTB.PORTC Bit 1 // EN .PORTC Bit 0 // RD .PORTC Bit 7 // Characters/line: 16 lcd_init(16).0==1 & PINB.1=1.1==0) // Tambahan kode sensor kiri hitam. while (1) { if (PINB. maka belok kiri { 38 . // Tambahan kode mendefinisikan input output DDRB. PORTD. PORTD.3=0.0=0.3=1.0=1. DDRD.

lcd_putsf("BELOK KIRI").0=0. PORTD.1=0. PORTD. lcd_putsf("B0=1 B1=0"). PORTD. lcd_clear().1).0==0 & PINB. delay_ms(100). kanan hitam.1==1) // Tambahan kode sensor kiri hitam.0). lcd_gotoxy(0. maka belok kanan { PORTD. lcd_clear (). lcd_gotoxy(0.2=0.1).3=0. PORTD.3=0. lcd_putsf("BELOK KANAN"). maka mati { PORTD. PORTD. 39 .0=0.2=0. PORTD.0). lcd_gotoxy(0. PORTD. lcd_clear ().PORTD. lcd_gotoxy(0. delay_ms(100).3=1. } else if (PINB. lcd_putsf("B0=0 B1=1").0).0==1 & PINB.0=0. } else if (PINB.2=0. PORTD. kanan hitam.1==1) // Tambahan kode sensor kiri putih. lcd_gotoxy(0.1=0.1=1. PORTD. lcd_putsf("B0=1 B1=1").

2=0. delay_ms(100). kanan putih. } else // Tambahan kode sensor kiri putih.0). PORTD. lcd_putsf("MATI"). lcd_gotoxy(0. } } } SELAMAT MENCOBA… MARI BERJUANG BERSAMA BOLABOT “BEKERJA UNTUK KEBANGKITAN TEKNOLOGI INDONESIA” 40 .0=0. lcd_clear().1). lcd_putsf("MAJU").1). maka bergerak maju { PORTD.1=1. lcd_putsf("B0=0 B1=0").lcd_gotoxy(0.3=1. delay_ms(100). PORTD. lcd_gotoxy(0. PORTD.