2012
WORKSHOP ROBOTIKA DASAR I
Mada Sanjaya WS, Ph.D 1
PENGENALAN ROBOT
Rekan-rekan pasti telah mengenal istilah robot?? Robot sering sekali di adikan tema utama dalam film-film Hollywood, Semua mungkin tahu r bot transformer, RoboCOP, wall-E, DoraEMON, ataupun a troBOY. Robot menjadi trend, emungkinan karena robot adalah p rwujudan dari teknologi futuristic yang paling canggih. Gambar 1. Wall-E robot yang bis jatuh cinta
Robot menurut kamus bahasa, berasal dari kata robota yang artinya pekerja. Sehingga robot dapat didefinisikan sebagai sebuah alat mekanik yang dapat bekerja se ara terus menerus untuk memba tu pekerjaan manusia, yang dalam m njalankan tugasnya dapat dikontrol langsung oleh manusia ataupun beke rja secara otomatis sesuai progra yang telah ditanamkan pada chip k ntroler robot.
Perkembangan Dunia Robot Trend perkembangan d nia robot, tidak hanya ada pada angan-angan pembuat film Hollywoo d, Tetapi merupakan hasil nyat dari kerja panjang para peneliti da teknokrat yang bergelut di bidang otomasi dan kecerdasan buatan. Pe kembangan dunia robot salah s tunya 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 erus berkembang, bukan hanya robot humanoid, robot berkem bang dalam berbagai kondisi dan ke butuhan manusia, seperti terliha pada ilustrasi berikut.
ambar 4. Bidang-bidang robotika
Secara umum robot ter iri dari tiga bagian utama yaitu me anik, elektronik, dan pemrogr man/kontrol.
4
ROBOT MOBIL KONTROL ANALOG (Remote Control Analog Mobile Robo ) Tentu rekan-rekan suda tidak asing lagi dengan mobil atau pesawat remot kontrol, mobil re ot kontrol merupakan salah satu jenis robot teleoperated. Yang dapat di kendalikan arah geraknya. Mobil tersebut dapat dikendalikan maju, mundur, belok kiri, ataupun belok anan.
Ga bar 1. Satu set mobil remot kontrol
Pada pembahasan kali ini, kita akan membuat sebuah robot emot kontrol sederhana yang angat mudah untuk dibuat.
Simulasi Proteus Berikut adalah sebuah d esain sederhana dari robot kontrol analog. (Untuk simulasinya dapa di lihat pada CD lampiran)
5
Gambar 2. De ain dan simulasi robot kontrol analog sederhana
Desain Aktual Untuk membuat desain actual robot, dalam buku ini ibuat menggunakan softwa e Fritzing.
6
Gambar 3. esain aktual robot kontrol analog sederhana
Robot kontrol analog ini dapat dibuat modifikasi dengan ber bagai bentuk dan fungsi, misalnya robot soccer, walking robot ko trol dan lainnya. Berikut adalah robot beetlebot yang siap untuk di u ji coba.
(a)
(b)
7
(c) Gambar 4. Robot mobil kontrol analog
Walking Robot Kont ol Analog 4 Kaki Dengan sedikit memodifikasi roda menjadi bentuk kaki, ma a akan diperoleh walking robot kontrol analog berikut:
Gambar 5. Robot berkaki empat dengan kontrol analog
Ayo tunjukkan kreativi asmu !!!
8
PENG NALAN ELEKTRONIKA D GITAL: BERMAIN DENGAN LED
Gamb r 1. Ilustrasi aplikasi teknologi digital
Berbagai jenis aplikasi t knologi yang ada saat ini, sebagian besar merupakan produk tekn logi digital. Begitupula dengan bida g robotika, sebagian besar merupak n pengembangan teknologi digital ang dikombinasikan dengan ecerdasan buatan (soft computing )
PENGENALAN PROGR M CODE VISION AVR CodeVisionAVR merupakan salah satu software untuk menmprogram mikrokontroler yang ber fungsi sebagai text editor dalam menulis baris perintah sekaligus seba ai compiler yang dapat mengubah file sumber 9
menjadi file hexa. Software CodeVision AVR versi demo dapat di unduh dari http://www.hpinfotech.r http://www.hpinfotech.ro/html/cvavr.htm. o/html/cvavr.htm. CodeVisionAVR menyediakan berbagai fasilitas yang memudahkan pengguna. Salah satunya adalah CodeWizardAVR yang memberikan kemudahan dalam melakukan konfigurasi fungsi-fungsi pin dan fitur yang yang ingin digunakan. Selain itu juga CodeVisionAVR menyediakan menyediakan toolbar yang memudahkan pengguna untuk melakukan berbagai interaksi yang diinginkan. Berikut adalah metode penulisan program pada CV AVR: #include
//deklarasi variabel global dapat dituliskan disini. ……
void main(void) { //deklarasi variabel local dapat dituliskan disini. …… // kode-kode yang dihasilkan CodeWizard …….. while (1) { //program utama dapat dituliskan disini. …… } }
PROYEK DIGITAL 1. MEMBUAT BLINKING LED Memulai Program 1. Double klik CodeVisionAVR Evaluation V2.05.0 untuk memulai program
10
2. Membuat new file
3. Kemudian akan muncul dialog, pilih project, klik OK.
4. Kemudian muncul pula dialog confirm, klik Yes.
5. Setelah itu akan muncul dialog CodeWizardAVR, pilih AT90, ATtiny, ATmega, FPSLIC, klik OK.
6. Maka akan muncul file CodeWizard-untitled.cwp , setelah itu buka chip, kemudian isikan dengan jenis mikrokontroler yang digunakan, 11
dalam eksperimen ini kita gunakan ATmega16 dengan Clock dari crystal sebesar 12 MHz.
7. Untuk menyimpan file, pilih program, pilih Generate, Save and Exit seperti berikut
8. Setelah itu, isikan nama file yang ingin digunakan dengan mengisi kotak dialog berikut
12
9. File yang tersimpan terdiri dari tiga file, dengan masing-masing nama ditulis sama, dan klik save. Setelah itu akan tampil running_led.prj yang merupakan file program project yang siap untuk diisi logika program. Kemudian isikan Keterangan Project, Version, Author, Company, Comment sesuai kebutuhan.
10. Kemudian lengkapi program sesuai project yang dibuat, dalam eksperimen membuat rangkaian blinking LED kita dapat menambahkan kode program pada Preprocessor (#), inisialisasi pada bagian void main(void), serta program utama dalam while(1). Berikut adalah contoh tambahan kode program untuk membuat rangkaian blinking LED. /************************** /*************************************** ************************** ************** * This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator
13
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Blinking LED Version : I Date : 11/17/2012 Author : Mada Sanjaya Sanjaya WS, WS, Ph.D Company : Bolabot Techno Robotic School Comments: "SEMANGAT!!!" Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 12.000000 MHz Memory model : Small External RAM size :0 Data Stack size : 256 ***************************** ****************************************** ************************ ***********// #include #include void main(void) { //mendefinisikan output berupa LED DDRD=0xFF; while (1) { PORTD=0x00; // LED menyala delay_ms(1000); // LED menyala selama satu detik detik PORTD=0xFF; // LED mati delay_ms(1000); // LED mati selama satu detik detik } }
11. Setelah semua kode program ditulis dengan benar. Tekan tombol F9 untuk compile, maka akan muncul kotak informasi ada tidaknya error. Jika sudah tidak ada error klik OK.
14
12. Program siap di upload pada hardware mikrokontroler untuk menghidupkan sist m yang telah dibuat.
Simulasi Proteus Progr m Blinking LED
Gambar 2. Simulasi proteus rangkaian blinking led
15
Cara mengcompile program CV AVR ke Proteus 1. Klik kanan, pada bagian mikrokontroler, mikrokontroler, kemudian pilih edit properties
2. Cari program file, berupa file Exe, dari program p rogram yang telah dibuat, dalam proyek ini, file bernama running_led.hex. Kemudian klik OK.
3. Kemudian klik Play untuk memulai simulasi, dan Stop untuk menghentikan simulasi Proteus.
16
PROYEK DIGITAL 2.
ENYALAKAN LED DENGAN TO BOL
Simulasi Proteus Menghi dupkan LED dengan Tombol
Gambar 3. Si ulasi Proteus menghidupkan LED dengan tombol
Membuat Program Untuk langkah 1-8, pros edurnya sama dengan proyek digita l 1. 9. Isikan nama tiga file: tombol_led.c, tombol_led.cwp, to bol_led.prj. 10. Isikan program beri ut: /***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Professi nal Automatic Program Generator © Copyright 1998-2010 Pavel Haid uc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Menghidupkan LED deng n tombol Version : I
17
Date : 11/17/2012 Author : Mada Sanjaya Sanjaya WS, WS, Ph.D Company : Bolabot Techno Robotic School Comments: "SEMANGAT!!!" Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 12.000000 MHz Memory model : Small External RAM size :0 Data Stack size : 256 ***************************** ****************************************** ************************ ***********// #include void main(void) { // Mendefinisikan input tombol DDRB.0=0; DDRB.1=0; //Mendefinisikan output LED DDRD.1=1; DDRD.2=1; DDRD.3=1; DDRD.4=1; //kondisi awal PORT PORTD.1=1; //semua led mati PORTD.2=1; PORTD.3=1; PORTD.4=1; while (1) { if (PINB.0==0) { PORTD.1=0; //led biru nyala PORTD.2=0; //led biru nyala PORTD.3=1; //led kuning mati PORTD.4=1; //led kuning mati } else if (PINB.1==0) { PORTD.1=1; //led biru mati mati PORTD.2=1; //led biru mati mati PORTD.3=0; //led kuning kuning nyala nyala PORTD.4=0; //led kuning kuning nyala nyala } else {
18
PORTD.1=1; PORTD.2=1; PORTD.3=1; PORTD.4=1; } } }
//semua led mati
SELAMAT MENCOBA !!! (^v^)
19
ROB T KONTROL DIGITAL REMOTE KABEL
Film Real steel !!?, Ga bar disamping menampilkan impian robot masa depan yan g dapat dikontrol langsung mengikuti gerak manusia yang m njadi pengontrolnya. Gambar 1. Ilustrasi robo kontrol
Secara umum robot tergol ng menjadi dua bagian yaitu robot otoma is dan robot teleoperated. teleoperate d. Robot otomati dapat bekerja tanpa kontrol langsung oleh
anusia, robot
tersebut bekerja berdasarkan program yang ditanamkan seperti robot line follower, robot avoider obstacle, r bot humanoid, lampu lalu lintas, pintu
tomatis, dan
sebagainya. Sedangkan rob t teleoperated harus dikontrol langsung oleh manusia, seperti robot kontrol, televi i, komputer dan lainnya.
20
Pada eksperimen dalam ab ini, kita akan membuat robot di ital teleoperated sederhana yang dapat dikontrol dikontrol untuk berger k maju, mundur, belok kiri, belo kanan, serta berputar. Untuk robot kontrol dal m eksperimen didalam bab ini masi menggunakan kontrol be basis kabel.
Tombol Push Button
Push button merupakan sebuah device untuk menghub ngkan dan memutuskan rangkaian listrik ntara 2 titik. Penggunaan push button ikehidupan sehari-hari hampir menyentuh semua bidang. Di bidang komputer dengan keyboard dan mouse, dibidang otomotif dengan panel-panel kontrolnya, bahkan diperalatan rumah tangg a sekalipun seperti kontrol peralat n listrik juga menggunakan push utton. Aktif high pushbutton Aktif high pushbutton erupakan push button yang memiliki karakteristik saat tidak ada penekanan maka dalam keadaa terputus (off) sedangkan saat ditekan akan tersambung (on ).
Gambar 2. Bentuk Fisik Push Button 4 pin 21
Aktif low pushbutton Aktif low push button m erupakan push button yang memiliki karakteristik saat tidak ada penekanan maka dalam keadaa tersambung (on) sedang an saat ditekan akan terputus (off).
Desain Lengkap Robot ontrol Digital
Gamba 3. Skema proteus robot kontrol digital
Sesuai desain pada to bol gerak kiri dihubungkan dengan PIN D.0, tombol gerak kanan dih ubungkan dengan PIN D.1, tombol gerak maju dihubungkan dengan PI
D.2, serta gerak mundur dihubu gkan dengan
PIN D.3. Motor kiri d iatur oleh PORTD.5 dan PORTD. , sedangkan motor kanan diatur ole h PORTD.7 dan PORTB.0. Logika yang dibuat 22
untuk membuat sebuah robot kontrol dapat diringkas dalam tabel berikut L ogika Tiap Pin Motor Tabel 1. Kondisi Gerak Motor dan Kondisi Logika
Kondisi
Tombol
D.5
D.6
D.7
B.0
Push-Button Maju
D.2 = 0
1
0
1
0
Belok Kiri
D.0 = 0
1
0
0
0
Belok Kanan
D.1 = 0
0
0
1
0
Mundur
D.3 = 0
0
1
0
1
Ingat motor hanya akan bergerak jika diberi beda polaritas antara dua pin
Membuat Program Robot Kontrol Digital dengan CV AVR /************************** /**************************************** ************************** ************* * This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com
Project : Robot Kontrol Digital Version : I Date
: 11/20/2012
Author : Mada Sanjaya Sanjaya WS, WS, Ph.D Company : Bolabot Techno Robotic School
23
Comments: Bekerja untuk Kebangkitan Teknologi Indonesia Chip type
: ATmega8
Program type
: Application
AVR Core Clock frequency: 12.000000 MHz Memory model
: Small
External RAM size Data Stack size
:0 : 256
************************** **************************************** *************************** *************// #include
#include // 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; DDRB=0x06;
// 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; DDRC=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;
24
DDRD=0x00;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped TCCR0=0x00; TCNT0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 11.719 kHz // Mode: Fast PWM top=0x00FF // OC1A output: Non-Inv. // 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; TCCR1B=0x0D; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped
25
// Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: Off // INT1: Off MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
// USART initialization // USART disabled UCSRB=0x00;
// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;
// ADC initialization // ADC disabled ADCSRA=0x00;
// SPI initialization // SPI disabled SPCR=0x00;
// TWI initialization
26
// TWI disabled TWCR=0x00; DDRD.0=0; // mendefinisikan sebagai input dari tombol gerak ke kiri DDRD.1=0; // mendefinisikan sebagai input dari tombol gerak ke kanan DDRD.2=0; // mendefinisikan sebagai input dari tombol gerak maju DDRD.3=0; // mendefinisikan sebagai input dari tombol gerak mundur DDRD.5=1; // mendefinisikan sebagai ouput motor kiri DDRD.6=1; // mendefinisikan sebagai ouput motor kiri DDRD.7=1; // mendefinisikan sebagai ouput motor kanan DDRB.0=1; // mendefinisikan sebagai ouput motor kanan PORTD.0=1; // kondisi awal PORTD.1=1; PORTD.2=1; PORTD.3=1; PORTD.5=1; PORTD.6=1; PORTD.7=1; PORTB.0=1; OCR1A=200; // pengatur kecepatan motor menggunakan PWM untuk motor kiri OCR1B=200; // pengatur kecepatan motor menggunakan PWM untuk motor kanan
while (1) { if (PIND.0==0)
//robot gerak ke kiri
{ PORTD.5=1; PORTD.6=0; PORTD.7=0; PORTB.0=0; } else if (PIND.1==0)
//robot gerak ke kanan
{ PORTD.5=0; PORTD.6=0;
27
PORTD.7=1; PORTB.0=0; } else if (PIND.2==0)
//robot gerak maju
{ PORTD.5=1; PORTD.6=0; PORTD.7=1; PORTB.0=0; } else if (PIND.3==0)
//robot gerak mundur
{ PORTD.5=0; PORTD.6=1; PORTD.7=0; PORTB.0=1; } else
//robot diam
{ PORTD.5=0; PORTD.6=0; PORTD.7=0; PORTB.0=0; } } }
28
RO OT LINE FOLLOWER DIGITAL DENGAN IC KOMPARAT R Line follower Robot (R bot Pengikut Garis) adalah robo yang dapat
berjalan mengikuti sebuah lintasan, ada yang menyebutnya dengan Line Tracker , Line Tracer R bot dan sebagainya. Garis yang dimaksud adalah
garis berwarna hitam di tas permukaan berwarna putih ata u sebaliknya, ada juga lintasan deng n warna lain dengan permukaan ang kontras dengan warna garisnya. da juga garis yang tak terlihat yang digunakan sebagai lintasan robot, isalnya medan magnet.
Gambar 1. Ilustrasi robot line follower dengan posisi sensor di tas permukaan putih
Seperti layaknya manus ia, bagaimana manusia dapat berjalan mengikuti jalan yang ada tanpa me abrak dan sebagainya, tentunya ka ena manusia memiliki “mata” sebagai penginderanya. Begitu juga robot line follower 29
ini, dia memiliki senso r garis yang berfungsi seperti “mata” pada manusia. Sensor garis ini mendeteksi adanya garis ata
tidak pada
permukaan lintasan rob t tersebut, dan informasi yang dit rima sensor garis kemudian diterus an ke prosesor untuk diolah sed mikian rupa dan akhirnya hasil in ormasi hasil olahannya akan di eruskan ke penggerak atau motor agar motor dapat menyesuaikan gerak tubuh robot sesuai garis yang ideteksinya.
Untuk merangkai rangk ian elektroniknya
kita
tahu dulu diagram sistem
yang
akan
p rlu lok kita
bangun, dengan demi ian akan
menjadi
mu dah
mengerjakannya.
lok
sistem yang akan kita agun
Gambar 2. Diagram blok robot lin follower
paling tidak tampak seperti gambar berikut. Sistemnya terdiri dari sensor garis, rangkaian komparator, sistem minimum AT
ega 16 dan
motor driver .
30
Skema Lengkap
Line follower Digital
IC Komparator
Pada skema lengkap robot line follower didesain dengan posisi sensor di atas permukaan putih. Dua buah sistem sensor di pasang pada pin B.0 dan B.1, sedangkan sistem actuator motor DC dipasang pada Port D.0 dan D.1 untuk motor kiri, D.2 dan D.3 untuk motor kanan. Prinsip kerja robot line follower berikut adalah saat sistem sensor berada di atas permukaan putih, akan ada pantulan cahaya dari LED yang akan mengenai sensor cahaya LDR sehingga resistansi sensor LDR berkurang sehingga arus bergerak melalui LDR. Kondisi tersebut menyebabkan arus output sensor menuju IC komparator LM 393 menjadi minimum, oleh IC LM 393, arus di non-inverting sehingga output menuju pin mikrokontroler menjadi LOW (0). Sebaliknya, saat sistem sensor berada di atas garis hitam, tidak akan ada pantulan cahaya dari LED yang akan mengenai sensor s ensor 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, oleh IC LM 393, arus di non-inverting sehingga output
menuju
pin
mikrokontroler
menjadi
HIGH
(1).
Oleh
mikrokontroler data logika pin tersebut kemudian diolah untuk mengerakan motor, motor akan bergerak jika kedua pin motor tersebut
31
memiliki beda polaritas. Selengkapnya mengenai logika gerak robot dapat dilihat pada Tabel 1 dan 2.
Tabel 1. Kondisi Gerak Motor dan pengaruh Sensor Kondisi
B.0 = 0
B.0 =1
B.1 = 0
Maju
Belok Kiri
B.1 = 1
Belok Kanan
Mati
L ogika Tiap Pin Motor Tabel 2. Kondisi Gerak Motor dan Kondisi Logika
Kondisi
D.0
D.1
D.2
D.3
Maju
0
1
0
1
Belok Kiri
0
0
0
1
Belok Kanan
0
1
0
0
Mati
1
1
1
1
32
Gambar 3. Skema l engkap robot line follower menggunakan AT Meg 16
Bentuk Robot Line Follo er
Gambar 4. Bentu jadi robot line follower menggunakan AT Mega 1 6
33
Membuat Program Robot Line Follower dengan CV AVR
/************************** /*************************************** ************************** ************** * This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Robot Line Robot Line follower follower Version : I Date
: 11/8/2012
Author : Mada Sanjaya Sanjaya WS, WS, Ph.D Company : Bolabot Techno Robotic School Comments: www. bolabot. com
Chip type
: ATmega16
Program type
: Application
AVR Core Clock frequency: 12.000000 MHz Memory model
: Small
External RAM size Data Stack size
:0 : 256
***************************** ****************************************** ************************ ***********// #include # include //tambahan program untuk membuat waktu tunda
// Alphanumeric LCD Module functions #include
// Declare your global variables here
void main(void)
34
{ // 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; DDRA=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;
// 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; DDRC=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; DDRD=0x30;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00;
35
TCNT0=0x00; OCR0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 11.719 kHz // Mode: Fast PWM top=0x00FF // OC1A output: Non-Inv. // 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; TCCR1B=0x0D; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00;
36
OCR2=0x00;
// External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
// USART initialization // USART disabled UCSRB=0x00;
// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;
// ADC initialization // ADC disabled ADCSRA=0x00;
// SPI initialization // SPI disabled SPCR=0x00;
// TWI initialization // TWI disabled TWCR=0x00;
37
// Alphanumeric LCD initialization // Connections specified in the // Project|Configure|C Project|Configure|C Compiler|Libraries|Alphanumeric Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTC Bit 0 // RD - PORTC Bit 1 // EN - PORTC Bit 2 // D4 - PORTC Bit 4 // D5 - PORTC Bit 5 // D6 - PORTC Bit 6 // D7 - PORTC Bit 7 // Characters/line: 16 lcd_init(16);
// Tambahan kode mendefinisik mendefinisikan an input output DDRB.0=0; DDRB.1=0; DDRD.0=1; DDRD.1=1; DDRD.2=1; DDRD.3=1; // Tambahan kode mendefinisik mendefinisikan an kecepatan motor PWM OCR1A=200; OCR1B=200; // Tambahan kode mendefinisik mendefinisikan an kondisi awal PORTB.0=1; //sensor kiri PORTB.1=1; //sensor kanan PORTD.0=0; PORTD.1=0; PORTD.2=0; PORTD.3=0; while (1) { if (PINB.0==1 & PINB.1==0) //
Tambahan kode sensor kiri hitam, kanan putih, maka belok kiri
{
38
PORTD.0=0; PORTD.1=0; PORTD.2=0; PORTD.3=1; lcd_clear (); lcd_gotoxy(0,0); lcd_putsf("B0=1 B1=0"); lcd_gotoxy(0,1); lcd_putsf("BELOK lcd_putsf("BELO K KIRI"); delay_ms(100); } else if (PINB.0==0 & PINB.1==1)
//
Tambahan kode sensor kiri putih, kanan hitam, maka belok
kanan { PORTD.0=0; PORTD.1=1; PORTD.2=0; PORTD.3=0; lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("B0=0 B1=1"); lcd_gotoxy(0,1); lcd_putsf("BELOK lcd_putsf("BELO K KANAN"); delay_ms(100); } else if (PINB.0==1 & PINB.1==1) //
Tambahan kode sensor kiri hitam, kanan hitam, maka mati
{ PORTD.0=0; PORTD.1=0; PORTD.2=0; PORTD.3=0; lcd_clear (); lcd_gotoxy(0,0); lcd_putsf("B0=1 B1=1");
39
lcd_gotoxy(0,1); lcd_putsf("MATI"); delay_ms(100); } else
//
Tambahan kode sensor kiri putih, kanan putih, maka bergerak maju
{ PORTD.0=0; PORTD.1=1; PORTD.2=0; PORTD.3=1; lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("B0=0 B1=0"); lcd_gotoxy(0,1); lcd_putsf("MAJU"); delay_ms(100); } } }
SELAMAT MENCOBA… MARI BERJUANG BERSAMA BOLABOT
“BEKERJA UNTUK KEBANGKITAN TEKNOLOGI INDONESIA”
40