ROBOT SUMO
DOSEN PEMBIMBING :
AKHMAD HENDRIAWAN, ST.
NIP. 132 300 369
Disetujui oleh:
Tim Penguji Proyek Akhir Dosen Pembimbing
2. Santi Anggraini, ST
NIP:132.300.370
3. Firman Arifin, ST
NIP: 132.296.743
Mengetahui :
Ketua Jurusan Teknik Elektronika
ROBOT SUMO
Penulis
UCAPAN TERIMA KASIH
Dengan terselesaikannya proyek akhir ini penulis mengucapkan
banyak terima kasih atas bantuan semua pihak yang diberikan pada
penulis. Ucapan terima kasih ini kami berikan kepada :
Hal
HALAMAN JUDUL…………………………………………….. i
HALAMAN PENGESAHAN…………………………………… ii
ABSTRAK……………………………………………………….. iii
ABSTRACT……………………………………………………… iv
KATA PENGANTAR…………………………………………… v
UCAPAN TERIMA KASIH……………………………………. vi
DAFTAR ISI.................................................................................. vii
DAFTAR GAMBAR…………………………………………….. ix
DAFTAR TABEL………………………………………………... xi
BAB I. PENDAHULUAN……………………………………... 1
1.1 Pendahuluan………………………………………… 1
1.2 Permasalahan……………………………………….. 2
1.3 Batasan Masalah……………………………………. 2
1.4 Tujuan & Manfaat…………………………………... 2
1.5 Metodologi………………………………………….. 3
1.6 Sistematika Pembahasan……………………………. 3
BAB V. PENUTUP........................................................................ 49
5.1 Kesimpulan................................................................. 49
5.2 Saran………………………………………………... 49
DAFTAR PUSTAKA
LAMPIRAN
RIWAYAT PENULIS
DAFTAR GAMBAR
Hal
Gambar 2.1 Pin-pin Atmega16 dalam kemasan 40-pin DIP.... 7
Gambar 2.2 Blok Diagram Arsitektur CPU dari AVR............. 8
Gambar 2.3 Penentuan Port yang akan dipakai........................ 9
Gambar 2.4 Alur Pemrograman dan Proses Download............ 9
Gambar 2.5 Mengaktifkan ADC Internal dari
Mikrokontroller.................................................... 11
Gambar 2.6 Register ADMUX………………………………. 12
Gambar 2.7 Register ADCSRA……………………………… 13
Gambar 2.8 Register SFIOR…………………………………. 14
Gambar 2.9 Timing Diagram ADC Free Running Mode......... 15
Gambar 2.10 LCD pada Port B................................................. 17
Gambar 2.11 Rangkaian Internal dari Sensor Inframerah........ 18
Gambar 2.12 Kurva Perbandingan Antara Tegangan dan
Jarak.................................................................... 19
Gambar 3.1 Blok Diagram Sistem............................................ 23
Gambar 3.2 Mekanisme Gerak Robot Sumo............................ 24
Gambar 3.3 Rangkaian Sensor Deteksi Garis........................... 27
Gambar 3.4 Rangkaian Sensor Deteksi Serangan Lawan ........ 27
Gambar 3.5 Rangkaian osilator kristal...................................... 28
Gambar 3.6 Rangkaian power supply untuk mikrokontroler.... 29
Gambar 3.7 Rangkaian Driver Motor....................................... 31
Gambar 3.8 Gambar Robot Sumo Bagian Bawah.................... 31
Gambar 3.9 Gambar Robot Sumo Bagian Atas........................ 32
Gambar 3.10 Gambar Robot Sumo Keseluruhan..................... 33
Gambar 3.11 Flowchart Pembuatan Program........................... 34
Gambar 4.1 Listing Program Pengujian SHARP GP2D12
melalui LCD…………………………………. 36
Gambar 4.2 Listing Program Pengujian SHARP GP2D12
melalui ADC....................................................... 38
Gambar 4.3 Pengujian Sudut Elevasi Sensor............................ 38
Gambar 4.4 Pengujian Sistem Minimum Avr........................... 39
Gambar 4.5 Led Bergeser Ke Kiri............................................ 39
Gambar 4.6 Driver Motor DC................................................... 40
Gambar 4.7 Robot Sumo Bergerak Ke Kiri………………….. 41
Gambar 4.8 Robot Sumo Bergerak Ke Kanan.......................... 41
Gambar 4.9 Robot Sumo Menyerang………………………... 42
Gambar 4.10 Robot Sumo Menghindar dari Serangan Lawan. 43
Gambar 4.11 Robot Sumo Menghindar dari Serangan Lawan. 43
Gambar 4.12 Robot Sumo Menghindar dari Serangan Lawan. 44
Gambar 4.13 Robot Sumo Bergerak Menghindar dari Garis... 44
Gambar 4.14 Robot Sumo Bergerak Menghindar dari Garis... 45
Gambar 4.15 Robot Sumo Bergerak Menghindar dari Garis... 45
Gambar 4.16 Robot Sumo Bergerak Menghindar dari Garis... 46
DAFTAR TABEL
Hal
Tabel 2.1 Konfigurasi pin port................................................... 10
Tabel 2.2 Port A Sebagai Analog Digital Converter (ADC)…. 12
Tabel 2.3 Bit Pemilih Tegangan Ref.......................................... 12
Tabel 2.4 Pemilihan Auto Trigger ADC.................................... 14
Tabel 2.5 Prioritas Interrupt....................................................... 16
Tabel 3.1 Penjelasan dari Mekanisme Gerak Robot Sumo........ 24
Tabel 4.1 Tabel Pengujian Sensor SHARP GP2D12 dengan
LCD............................................................................ 36
Tabel 4.2 Tabel Pengujian Driver Motor DC............................ 40
Tabel 4.3 Pergerakan Robot Sumo Ketika Ada Lawan............. 42
Tabel 4.4 Pergerakan Robot Sumo Menghindar dari Serangan
Lawan......................................................................... 44
Tabel 4.5 Pergerakan Robot Sumo Ketika Mendeteksi Garis... 47
BAB I
PENDAHULUAN
I.1 PENDAHULUAN
Teknologi robot sudah berkembang dengan pesat pada saat ini,
mulai dari robot sederhana untuk aplikasi yang mudah sampai dengan
robot canggih dan kompleks yang digunakan dalam pabrik industri,
maupun dalam bidang-bidang yang lainnya.
Penggunaan piranti robot dewasa ini sudah tidak didominasi oleh
kepentingan industri, tetapi juga sudah mengarah pada dunia hiburan.
Salah satu robot yang sifatnya sebagai hiburan adalah Robot Sumo.
Robot Sumo telah dikenalkan pada dunia sejak tahun 1990 oleh
Perusahaan Fuji Software dari Jepang[3]. Seperti pertandingan sumo,
robot ini bertanding hanya dengan satu lawan. Di atas ring kedua robot
ini saling mendorong hingga salah satu dari robot keluar arena, apabila
salah satu robot telah berhasil mengeluarkan lawannya dari arena maka
robot tersebut dinyatakan menang[4].
Peraturan pertandingan dari Robot Sumo seperti pada pertandingan
sumo yang sebenarnya dimana masing-masing robot harus mempunyai
berat yang sama, setiap pertandingan sumo ada kelasnya masing-
masing[5]. Jadi berat dan tinggi dari robot akan menentukan kelas
bertandingnya.
Pada Robot Sumo digunakan sensor pendeteksi obyek sebagai
identifikasi posisi robot lawan. Sensor pendeteksi obyek ini berfungsi
sebagai pengendali robot dengan mengikuti pergerakan obyek jadi
seolah-olah robot ini mempunyai mata. Keseluruhan sistem ini dikontrol
oleh mikrokontroller dimana fungsi dari mikrokontroller adalah sebagai
pusat/otak dari keseluruhan suatu sistem untuk mengolah data yang
diambil dari berbagai macam sensor. Pada mikrokontroller ini kita dapat
menginisialisasi data yang dikirim dari sensor pendeteksi obyek
kemudian mikrokontroller itu sendiri mengirimkan instruksi untuk
menjalankan motor sesuai data yang diberikan oleh sensor. Robot ini
dapat bergerak secara otomatis karena robot memiliki beberapa
kemampuan untuk merespon beberapa informasi dari luar yang dibaca
oleh sensor. Kemampuan yang dimiliki robot ini adalah kemampuan
bergerak secara otomatis, kemampuan untuk menemukan objek yang
berupa robot lawan dan kemampuan menyerang lawan.
I.2 PERMASALAHAN
Permasalahan sistem yang akan dibuat dalam Proyek Akhir
adalah sebagai berikut :
a. Membuat perangkat lunak yang mampu mengontrol
pergerakan robot untuk menyerang lawan secara otomatis.
b. Membuat komunikasi data serial sehingga dapat
menyalurkan informasi yang telah diolah oleh software dari
komputer ke mikrokontroller.
c. Bagaimana robot dapat mengenali satu obyek benda yaitu
berupa robot lawan sehingga dapat menyerangnya.
d. Bagaimana robot dalam melakukan kinerja, berupa gerakan :
maju, menghindar, dan menyerang lawan setelah
mengetahui posisi robot lawan.
BAB I PENDAHULUAN
Dalam bab ini akan dibahas latar belakang, maksud dan tujuan,
batasan masalah, metodologi, dan sistematika pembahasan.
BAB V PENUTUP
Berisi kesimpulan dari keseluruhan proyek akhir yang diambil
berdasarkan data yang ada, juga berisi tentang saran serta
petunjuk untuk pengembangan serta penyempurnaan alat.
BAB II
TEORI PENUNJANG
2.1 PENGERTIAN ROBOT SUMO
Robot sumo dirancang mempunyai kemampuan untuk mendeteksi
suatu objek kemudian menyerang objek tersebut dengan mendorongnya.
Untuk mendeteksi ada atau tidak halangan didepan robot maka pada
bagian robot diberikan suatu sensor yang dapat mendeteksi halangan.
Robot sumo akan menyerang halangan apabila halangan tersebut benar-
benar berada didepan robot sumo. Jika halangan belum berada tepat
didepan robot atau belum ada halangan maka robot akan melakukan
pencarian. Apabila halangan tersebut berada didepan namun posisinya
agak kesamping kiri maupun kekanan maka robot sumo akan
mengikutinya terus sampai halangan tersebut tepat berada didepan robot
sumo. Jika halangan berada tepat didepan robot maka robot sumo akan
mendorongnya hingga keluar arena.
Pada bab ini akan diberikan teori penunjang yang mendukung
pembuatan keseluruhan dari robot sumo, terdiri antara lain :
• Mikrokontroller ATMEGA 16
• Sensor Inframerah (SHARP GP2D12)
• Motor DC
Setelah jenis chip mikrokontroller dan port dari AVR ditentukan sebagai
input atau output maka program ditulis dalam bahasa C, kemudian
program dapat didownload ke dalam mikrokontroller AVR, namun
sebelum didownload kedalam mikrokontroller program harus dicompile
terlebih dahulu untuk mengetahui apakah ada error atau tidak, jika tidak
ada error maka program siap didownload dengan alur seperti yang
ditunjukkan oleh gambar 2.4.
2.2.4 Interrupt
Interrupt merupakan suatu peristiwa yang menyebabkan
mikrokontroller menghentikan program sejenak untuk mengerjakan
proses interrupt tersebut. Setelah interrupt yang dikerjakan tersebut telah
selesai maka mikrokontroller akan kembali ke rutin program yang telah
dihentikan sejenak.
Interrupt yang mempunyai prioritas tertinggi tidak dapat diganggu
oleh program yang lain maupun interrupt yang mempunyai prioritas
lebih rendah. Selama proses interrupt dijalankan maka Program Counter
(alamat dari instruksi yang sedang berjalan) disimpan ke stack. Berikut
merupakan prioritas interrupt dari prioritas tinggi sampai prioritas
rendah.
Tabel 2.5 Prioritas Interrupt8
Fungsi Delay
Untuk menghasilkan delay pada pemrograman AVR maka sebelum
dipanggil pada subrutin program maka fungsi delay harus
dideklarasikan pada header. Setelah dideklarasikan maka program
akan menjalankan rutin untuk memanggil delay. Letaknya pada
header dari program, dituliskan sebagai berikut :
#include <atmega16.h>
#include <delay.h>
Pada bagian atas sendiri merupakan inisialisasi jenis tipe AVR yang
akan digunakan. Karena yang digunakan adalah AVR ATMEGA 16
maka pada header paling atas sendiri terdapat keterangan bahwa
program ini khusus digunakan untuk AVR ATMEGA 16.
Pada CodeVision AVR juga terdapat fungsi untuk memanggil delay
selain cara diatas yaitu
• void delay_us(unsigned int n)
menghasilkan delay selama n µ-detik, n adalah nilai konstan.
• void delay_ms(unsigned int n)
menghasilkan delay selama n mili-detik, n adalah nilai konstan.
Fungsi LCD
Fungsi LCD harus dideklarasikan terlebih dahulu pada header
program apabila fungsi LCD tersebut jika dipanggil. Selain itu
fungsi LCD harus diaktifkan terlebih dahulu pada CodeVision
Wizard, misal jika LCD tersebut diletakkan pada Port B dari
mikrokontroller, ditunjukkan seperti berikut:
Pada robot sumo ini menggunakan roda belakang yang cukup besar
agar didapatkan daya dorong serta torsi yang cukup kuat untuk
mendorong lawan. Masing-masing dari roda belakang ini digerakkan
dengan motor DC. Pada bagian depan bawah digunakan satu roda depan
yang berfungsi sebagai roda bebas agar bisa bergerak kemana saja.
Untuk mendeteksi adanya garis digunakan empat sensor deteksi garis,
dimana dua sensor garis terletak pada bagian bawah depan dan dua yang
lain terletak pada bagian bawah belakang .
Start scan
Ada garis?
Y
Menghindar
T Ada lawan?
Y
Serang
Y
Y
Ada garis?
T
T Ada lawan?
Y
Menang
convert(unsigned char b)
{
unsigned char adc;
adc=b/100;
lcd_putchar(48+adc);
b%=100;
adc=b/10;
lcd_putchar(48+adc);
b%=10;
lcd_putchar(48+b);
}
void tampil_adc()
{
lcd_gotoxy(0,0);
lcd_putsf("ired 0=");
convert(adc_data[0]);
lcd_gotoxy(0,1);
lcd_putsf("ired 1=");
convert(adc_data[1]);
}
while (1)
{
tampil_adc();
// Place your code here
};
#include <mega16.h>
while (1)
{
// Place your code here
PORTD=(((sens>>1)|(sens<<1))&3);
//PORTD=sens&0x03;
}
Gambar 4.2 Listing Program Pengujian SHARP GP2D12 melaui ADC
y
x x Masih didalam
range deteksi sensor
SHARP GP2D12
Bila suatu objek masih berada didalam range deteksi sensor maka
led masih menyala, namun bila objek berada diluar range deteksi sensor
maka led mati. Ternyata setelah dilakukan percobaan ini dapat diketahui
bahwa sudut elevasi (y) dari sensor ini adalah 400 dan jarak maksimum
yang dapat dijangkau oleh sensor adalah 100 cm tegak lurus dari sensor.
void main(void)
{
unsigned char led;
while (1)
{
// Place your code here
led=0x01;
while(led!=0x80)
{
led<<=1;
PORTD=~led;
delay_ms(500);
}
led=0x01;
//PORTB=0;
};
Mosfet 1 Mosfet 2
A B
Mosfet 3 Mosfet 4
(a) (b)
(a) (b)
(a) (b)
Robot Lawan
(a) (b)
Robot Lawan
(a) (b)
Apabila robot diserang oleh robot lawan dari sisi belakang, samping
kiri dan kanan, maka robot tersebut akan menghindar dengan
menjauh dari robot lawan.
Tabel berikut menunjukkan pergerakan dari Robot Sumo ketika
diserang oleh robot lawan dari sebelah kiri, kanan, dan belakang.
Begitu juga untuk sensor yang terletak disebelah kanan depan robot
bila mendeteksi adanya garis seperti yang ditunjukkan oleh gambar
4.14 (a) maka robot akan bergerak mundur kemudian berputar serong ke
kiri dan akhirnya bergerak ke tengah arena seperti yang ditunjukkan
oleh gambar 4.14 (b).
(a) (b)
(a) (b)
(a) (b)
Jadi bila robot mendeteksi adanya garis maka robot akan bergerak
sejauh mungkin agar robot tidak keluar arena. Sensor garis ini berfungsi
sebagai prioritas utama dari sensor-sensor yang lainnya. Apabila sensor
lain mendeteksi adanya halangan maka robot akan bergerak menghindar,
namun apabila sensor lain mendeteksi adanya halangan dan pada saat
yang sama sensor garis mendeksi adanya garis maka robot diperintahkan
untuk menghindar dari garis terlebih dahulu. Karena posisi yang paling
utama adalah bertahan di atas arena.
BAB V
PENUTUP
5.1 KESIMPULAN
Setelah melakukan perencanaan dan pembuatan sistem kemudian
dilakukan pengujian dan analisis, maka dapat diambil beberapa
kesimpulan tentang sistem kerja dari rangkaian. Yaitu sebagai berikut:
1. Berdasarkan pengukuran pada jarak dibawah 10 cm sensor
akan mengalami error, karena bidang pantul terlalu dekat
dengan sensor.
2. Sudut elevasi yang dapat dijangkau oleh sensor inframerah
adalah 400, dengan jarak maksimum 100 cm lurus dari sensor.
Sedangkan jarak minimum yang dijangkau oleh sensor
inframerah adalah 10 cm.
3. Posisi robot lawan yang berada disebelah kanan maupun
disebelah kiri hanya diikuti (tidak diserang). Robot akan
menyerang robot lawan ketika posisi robot lawan tepat
didepan (saat kedua sensor mendeteksi).
5.2 SARAN
Dalam pembuatan Robot Sumo berbasis mikokotroller ATMega
masih banyak kekurangan yang perlu diperbaiki.
Untuk menyempurnakan alat sehingga pengguna memanfaatkan alat
ini dengan baik. Ada beberapa bagian dari sistem yang perlu dilakukan
penyempurnaan:
1. Untuk mendapatkan torsi cukup kuat untuk mendorong robot
lawan maka dapat digunakan gear yang mempunyai kapasitas
isi lebih banyak.
2. Agar robot dapat bergerak lebih cepat maka dapat digunakan
ukuran ban yang lebih besar.
DAFTAR PUSTAKA
Project :
Version :
Date : 6/19/2006
Author : BEE
Company :
Comments :
#include <mega16.h>
#include <delay.h>
/********************TURN ON BUZZER*********************/
void mundur_serong_ki()
{
dir_kanan=0;dir_kiri=1;pwmr=200;pwml=100;
delay_ms(100);
}
*/
void maju_kiri_putar()
{
dir_kanan=1;dir_kiri=1;pwmr=200;pwml=200;
delay_ms(100);
dir_kanan=1;dir_kiri=0;pwmr=150;pwml=100;
delay_ms(100);
}
void maju_kanan_putar()
{
dir_kanan=1;dir_kiri=0;pwmr=200;pwml=200;
delay_ms(100);
dir_kanan=0;dir_kiri=0;pwmr=100;pwml=150;
delay_ms(100);
}
void maju_putar_ki()
{
dir_kanan=1;dir_kiri=1;pwmr=200;pwml=200;
delay_ms(100);
dir_kanan=1;dir_kiri=0;pwmr=150;pwml=100;
delay_ms(100);
}
void maju_putar_ka()
{
dir_kanan=1;dir_kiri=1;pwmr=200;pwml=200;
delay_ms(100);
dir_kanan=0;dir_kiri=1;pwmr=100;pwml=150;
delay_ms(100);
}
void mundur_banting_ka()
{
dir_kanan=0;dir_kiri=1;pwmr=150;pwml=150;
delay_ms(100);
dir_kanan=0;dir_kiri=0;pwmr=100;pwml=150;
delay_ms(100);
}
void maju_dikit()
{
dir_kanan=1;dir_kiri=0;pwmr=200;pwml=200;
delay_ms(100);
}
void mundur_banting_ki()
{
dir_kanan=0;dir_kiri=1;pwmr=150;pwml=150;
delay_ms(100);
dir_kanan=1;dir_kiri=1;pwmr=150;pwml=100;
delay_ms(100);
}
void serang()
{
sensor=((se>>1)|(se<<1))&3;
//PORTD=~(((se>>1)|(se<<1))&3);//sensor;
while(sensor==3)
{
sensor=((se>>1)|(se<<1))&3;
dir_kanan=1;dir_kiri=0;pwmr=255;pwml=255;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
}
}
void banting_kiri()
{
int i;
for(i=0;i<=100;i++)
{
sensor=((se>>1)|(se<<1))&3;
//PORTD=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=1;dir_kiri=1;pwmr=60;pwml=100;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
if(sensor==3)serang();
delay_ms(1);
}
}
void banting_kanan()
{
int i;
for(i=0;i<=100;i++)
{
sensor=((se>>1)|(se<<1))&3;
//PORTD=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=0;dir_kiri=0;pwmr=100;pwml=60;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
if(sensor==3)serang();
delay_ms(1);
}
}
void scan_sensor_ired()
{
if (!kiri_belakang_ired){maju_kiri_putar();}
else if (!kiri_depan_ired){maju_kiri_putar();}
else if (!kanan_belakang_ired){maju_kanan_putar();}
else if (!kanan_depan_ired){maju_kanan_putar();}
else if (!belakang_kiri_ired){maju_putar_ka();}
else if (!belakang_kanan_ired){maju_putar_ka();}
else if (!belakang_kiri_garis){maju_dikit();}
else if (!depan_kiri_garis){mundur_banting_ka();}
else if (!belakang_kanan_garis){maju_dikit();}
else if (!depan_kanan_garis){mundur_banting_ki();}
//else if((kiri_belakang_ired==kiri_depan_ired)==0)
{mundur_serong_ki();}
//else if((kanan_belakang_ired==kanan_depan_ired)==0)
{mundur_serong_ka();}
//else if((belakang_kanan_ired==belakang_kiri_ired)==0)
{maju_putar_ka();}
//else if((belakang_kanan_garis==belakang_kiri_garis)==0)
{maju_dikit();}
//elseif((depan_kanan_garis==depan_kiri_garis)==0)
{mundur_banting_ka();}
}
void scan()
{
//if(!belakang_kanan_garis){maju_dikit();}
//else if(!depan_kanan_garis){mundur_banting_ki();}
//if(!belakang_kiri_garis){maju_dikit();}
//else if(!depan_kiri_garis){mundur_banting_ka();}
//{
int i;
for(i=0;i<=60;i++) //for 120 trus delay 1 = 1 detik
{
sensor=((se>>1)|(se<<1))&3; //scan maju
//PORTB=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=1;dir_kiri=0;pwmr=100;pwml=100;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
if(sensor==1)banting_kiri();
if(sensor==2)banting_kanan();
if(sensor==3)serang();
scan_sensor_ired();
delay_ms(1);
}
for(i=0;i<=150;i++)
{
sensor=((se>>1)|(se<<1))&3; //scan kanan
//PORTB=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=0;dir_kiri=0;pwmr=60;pwml=80;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
if(sensor==1)banting_kiri();
if(sensor==2)banting_kanan();
if(sensor==3)serang();
scan_sensor_ired();
delay_ms(1);
}
for(i=0;i<=200;i++)
{
sensor=((se>>1)|(se<<1))&3; //scan kiri
//PORTB=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=1;dir_kiri=1;pwmr=100;pwml=60;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(! depan_kiri_garis){mundur_banting_ka();}
if(sensor==1)banting_kiri();
if(sensor==2)banting_kanan();
if(sensor==3)serang();
scan_sensor_ired();
delay_ms(1);
}
for(i=0;i<=150;i++)
{
sensor=((se>>1)|(se<<1))&3; //scan balik kanan
//PORTB=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=0;dir_kiri=0;pwmr=60;pwml=80;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
if(sensor==1)banting_kiri();
if(sensor==2)banting_kanan();
if(sensor==3)serang();
scan_sensor_ired();
delay_ms(1);
}
//}
}
void main(void)
{
//int i;
// Declare your local variables here
// Port B initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
State7=T
PORTB=0xFF;
DDRB=0x00;
// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
State7=T
PORTC=0x7F;
DDRC=0x80;
// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
State7=T
PORTD=0x09;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 11059.200 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x01;
TCNT0=0xC0;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// ADC initialization
// ADC Clock frequency: 172.800 kHz
// ADC Voltage Reference: AREF pin
// ADC High Speed Mode: On
// ADC Auto Trigger Source: Free Running
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
ADCSRA=0xEE;
SFIOR&=0x0F;
SFIOR|=0x10;
// LCD module initialization
//lcd_init(16);
while (1)
{
// Place your code here
scan();
//tampil_lcd();
//PORTB=~(((se>>1)|(se<<1))&3);//sensor;
//pwmr=100;
//for(i=0;i<=120;i++){PORTB=0;delay_ms(1);}
//for(i=0;i<=120;i++){PORTB=1;delay_ms(1);}
//pwml=0;
//dir_kanan=1;
}
}
LAMPIRAN B
Tampak Bawah
RIWAYAT PENULIS