Anda di halaman 1dari 119

i

SMANSA PERJAKA

PENDAHULUAN

2012

Pernahkah kalian penasaran bagaimana suatu robot dapat melakukan tugasnya


dengan otomatis..?. Disini kita akan belajar bagaimana tentang memprogram
robot sesuai dengan keinginan kita dan memberikan kecerdasan buatan pada
robot sehingga robot mampu melalui rintangan-rintangan. Dalam pembelajaran
pemprograman robot kali ini kita menggunakan kit robotik Pololu yang berasal
dari amerika serikat.
Untuk merakit robot tentulah kita membutuhkan suatu alat untuk mengontrol
dan mengendalikan output-output berupa lampu,motor,dll dan menerima data
informasi dari sensor, tentu kita memerlukan sebuah proses, proses ini di
kendalikan oleh chip mikrokontroller yang berfungsi sebagai pusat kendali dari
robot ini.
Selain itu kita juga memerlukan mekanik-mekanik dari robot agar robot dapat
bermanuver dengan baik yang terdiri dari motor elektrik, roda penggerak, roda
pengikut (ball caster), rangka (chasis), dll Dalam semua itu telah terintegrasi
menjadi satu pada 3pi robot jadi kita tidak perlu pusing memikirkan
mekaniknya dan elektronikanya kita hanya perlu konsentrai dengan bagaiman
cara kita memprogramnya.
Lalu dalam memprogram robot agar dapat memproses masukan-masukan (input)
dan memberikan keluaran (output) sesuai dengan keinginan maka kita harus
memprogram kontroller, dalam memprogramnya kita dapat mengunakan
bahasa pemrograman C/C++, Basic, assembly dan Java. Tapi kali ini kita
menggunakan bahasa pemrograman C/C++ untuk mikrokontroller menggunakan
software dari Atmel yaitu AVR Studio 4.

Pololo 3pi
Robot

Automation Technology
Education Center

POLOLU 3pi ROBOT

3 robot telah di desin kecil namun memiliki performa yang cukup tinggi
dalam kecepatan, robot ini di desain untuk line follower dan Maze Solving. Robot
ini menggunakan sumber tenaga dari battrai AAA yang berjumlah 4 yang artinya
teganganya 6 volt namun keunikanya untuk motor dc teganganya di naikan
menjadi 9,25 volt agar motor dapat bekerja optimal dan kecepatanya
meningkat hingga 1,2 meter/detik (lintasan lurus). Sedangakan untuk motor
penggeraknya menggunakan motor dc micro metal gear 30:1 dan dillengkapi
ftur lainya seperti lcd 8x2, buzzer, tiga buah tombol tekan, dan lainya.
1.1
Fitur ftur robot pololu 3
adalah:
Mikrokontroller Atmel keluarga AVR seri ATMEGA 328P/ ATMEGA 168
artinya mikrokontroller yang berarsitektur AVR (Alf Vegard and Risc)
dimana Bus Data dan Bus
Alamat terpisah. Fungsinya sebagai pusat kendali untuk memproses
keluaran keluaran(output) dan menerima informasi dari sensor
sensor(input) dengan kecepatan prosess 20 Mhz, memiliki memori Flash
32 KB yaitu tempat penyimpanan
kodekode program untuk di
eksekusi yang dapat ditulis dan di hapus, memori SRAM 2 KB yang
berfungsi menyimpan data sementara jika catu daya mati maka data
menghilang (volatile) perbedaanya dengan RAM ialah kata S berarti
static jenis RAM yang terbuat dari TTL(TransisitorTransistor Logic) yang
dapat Bekerja cepat dibanding jenis RAM yang lainya, dan memori
EEPROM 1 KB adalah memori yang berfungsi sebagai penyimpanan data
pada saat chip mengeksekusi program dan tidak dapat terhapus meskipun
catu daya mati (non volatile).

Motor drivers TB6612FNG yang berfungsi mengendalikan arah


putaran motor serta kecepatan putaran motor sesuai dari perintah
mikrokontroller. Mampu mensuplai arus ke motor hingga 3 Ampere
(maximum) serta menerima sinyal frekwensi PWM (Pulse With Modulation)
untuk mengatur kecepatan putaran motor hingga 80 kHz.
LCD 8 x 2 character yang berfungsi menampilkan tulisan huruf, angka dan berbagai
karakter.
Dengan pengiriman data 4 bit yang
koneksinya:
3 buah tombol input untuk memberikan data masukan ke mikrokontroller. Yang
terhubung
dengan
PB.1,
PB.4
,dan PB.5
Dua buah lampu led indikator yang terhubung ke pin PD.1 dan PD.7
Potensiometer yang terhubung dengan pin adc7
Buzzer untuk mebunyikan suara dan nada-nada yang terhubung ke pin PB.2
5 buah sensor refectance untuk sensor garis yang terhubung ke PC0 PC4

Diskusi kelompok :
1. Sebutkan macam-macam bahasa pemrograman untuk robot !
2. Jelaskan tentang AVR studio 4 !
3. Jelaskan fungsi :
Mikrokontroller
Motor

Pololo 3pi
Robot

Automation Technology
Education Center

POLOLU 3pi ROBOT

LCD 8 x 2 character
3 buah tombol input
Buzzer
5 buah sensor

Pololo 3pi
Robot

Automation Technology
Education Center

CARA PENGGUNAAN DAN LARANGAN PENTING

3 robot tidak di anjurkan untuk anak kecil di bawah 8 tahun.! Untuk


penggunaan anak-anak harus sangat di awasi oleh instruktur yang
berpengalaman. Di karenakan robot ini memiliki kecepatan yang cepat di
khawatirkan dapat menciderai anak-anak dalam penggunaanya. Catatan yang
harus di perhatikan adalah:
1. Jangan memprogram robot ini jika baterai robot ini dalam kondisi lemah (range
3300mv
5000mv yang dianjurkan) atau belum di charge, sebaiknya sebelum di
gunakan pada robot ini di periksa dahulu teganganya.
2. Jangan memegang robot ini jika tangan dalam kondisi basah karena akan
membuat
rangkaian elektronikanya konslet dan merusak robot
3. 3 robot dianjurkan hanya digunakan pada dalam ruangan dan pada permukaan yang
rata.
Karena sinar UV dari matahari akan mengganggu kinerja sensor
reflectance dan jika pada permukan yang tidak rata dapat merusak
rangkaian pada bagian bawah robot.
4. Jangan meletakan 3 robot dekat bahan konduktif seperti metal walaupun dalam
kondisi
mati karena mudah tejadi konsleting pada bagian power dari 3 robot
5. Jauhkan benda yang menganduk elektrostatis karena dapat merusak chip mikro
kontroller
dan chipchip lainya.
6. Jika kita melepas lcd, letakan pada tempat yang aman jangan diletakan dekat baterai
karena
di khawatirkan akan terjadi konsleting pada chip yang terdapat di lcd

Pololo 3pi
Robot

Automation Technology
Education Center

MEMULAI POLOLU 3pi ROBOT

Gambar 3 robot tampak dari atas.

Gambar 3.1 Robot


Tampak Atas
Gambar 3 robot tampak dari bawah.

Gambar 3.2 Robot Tampak


Bawah
3.1

Apa saja yang kita butuhkan untuk menggunakan robot ini


a. Battrai AAA 4 di sarankan menggunakan battrai yang recharge yang berjenis
NIMH atau
NICD.
b. AVR ISP programmer yang memiliki koneksi 6 pin untuk menghubungkan
antara
computer dan robot dan mendownload program dari computer ke robot
c. Desktop computer atau laptop 3 robot dapat di program pada windows, linux, dan
Pololo 3pi
Robot

Automation Technology

Education Center
mac.
Namun 3 yang dapat di program dengan mac jumlahnya terbatas dan untuk
windows
minimal XP SP 3 atau menggunakan SP2 yang sudah di update data hotfx

Pololo 3pi
Robot

Automation Technology
Education Center

3.2

Untuk menjalankan robot kita juga akan membutuhkan


1. Papan white board atau papan lainya yang berwarna dasar putih untuk lintasan
robot.
2. Solasi berwarna hitam dengan ukuran 2cm sebagai track dari robot.
3.3 Bagaimana cara kita menghidupkan 3 robot
1.
Langkah pertama yang harus dilakukan tentulah kita memasang 4
buah battrai AAA, untuk langkah ini kita harus melepas LCD
karena ada 2 baterai yang letaknya di belakang dari LCD. Dapat
dilihat pada gambar 3.3.

2.
3.
4.

Gambar 3.3 Robot


Tanpa LCD
Lalu jika baterai sudah tepasang kembalikan LCD ketempat
semula dengan benar.
Tekan tombol power yang terletak di sebelah kiri bawah untuk
menghidupkanya dan kita akan melihat 2 buah lampu led berwarna
biru menyala pada bagian bawah dari robot.
Dan untuk mematikan robot ini kita hanya perlu menekan tombol
power ini satu kali lagi.

3.4

Accessories tambahan dari 3 robot


3 robot ini telah dilengkapi dengan accessories lampu led tambahan berjumlah 2
merah dan
dua hijau, lampu led ini bisa kita pasang di dekat pinggir depan. Jika kita
menghidupkan led maka led yang kita pasang akan ikut menyala. Cara
pemasanganya dengan di solder tapi harus di perhatikan
kakinya, kaki led yang paling panjang masukan ke lubang yang bertanda +, dan
yang pendek masukan ke lubang di sebelahnya, dalam menyolder kita harus
hatihati jangan sampai mengenai bagian
soldering yang lainya karena di khawatirkan dapat merusak komponen lainya.
Accessories lainya adalah jumper yang berjumlah 12 buah dan 3
diantaranya sudah terpasang pada 3pi robot. Dari 12 jumper ini terdiri 4 warna
hitam, merah, kuning masingmasing warna berjumlah 3 buah jumper.

Pololo 3pi
Robot

Automation Technology
Education Center

SISTEM KERJA DARI POLOLU 3pi ROBOT

4.1

Battrai untuk 3pi robot


Sistem power / energy yang digunakan pada 3 robot berasal dari
baterai, jadi sangat
penting bagi kita untuk mengetahui bagaimana cara battrai itu
bekerja. Isi dari baterai
merupakan bahan kimia yang memiliki kutub positif (+) dan
kutub negative (-).
Jenis baterai yang terkenal adalah baterai alkaline, yang menggunakan
reaksi bahan kimia
antara zinc dan manganese, sehingga memiliki energy yang cukup lumayan
namun pada baterai jenis ini kebanyakan tidak bisa di charge kembali dan
digunakan kembali sehingga menyebabkan pencemaran lingkungan.
Tapi untuk 3 robot kami menyarankan untuk menggunakan jenis baterai
yang rechargeable berjenis nickel-metal-hydride (NIMH), jenis battrai ini
dapat di charge dan digunakan kembali
sehingga
tidak
menyebabkan
pencemaran.
Baterai jenis ini memiliki tegangan sekitar 1,2Volt, untuk mengetahui
seberapa banyak
energy yang dapat kita gunakan dari baterai ini kita harus mengetahui
berapa banyak electron yang di alirkan per detik, didalam istilah
elektronika ini di sebut arus listrik yang satuanya ampere (A). Pada arus
18
1A ada sekitar 6x10 elektron yang mengalir dalam 1 detik. Pada setiap
baterai memiliki jumlah electron yang berbeda, dan jika jumlah electron pada
baterai sudah habis maka baterai tidak akan mengeluarkan tegangan
kembali. Energi yang di keluarkan oleh baterai merupakan perkalian antara
tegangan (Volt) dan arus (Ampere) dan akan memliki hasil yang satuannya
disebut watt (W), contohnya baterai yang kita gunakan memiliki tegangan
1,2 v dan arus 0,6 A maka baterai kita memiliki energy 0,72 watt. Jika kita
inginkan energy yang lebih tinggi, harus menambahkan battrai lagi dengan
cara pemasangan seri atau paralle dapat dilihat pada gambar 4.1

Gambar 4.1 hubung Paralel


Baterai
Pada pemasangan parallel (kutub positif baterai di gabung dengan
kutub positif baterai lainya dan juga negatifnya), seperti gambar 4.1
memiliki kentungan nilai arus maksimumnya akan di kalikan jumlah
baterainya tapi tegangan dari baterainya tetap.
Sedangkan pada pemasangan seri (kutub battrai positif di gabung
dengan kutub negative
dari baterai yang lainya), seperti gambar 4.2 memiliki keuntungan nilai
teganganya akan di kalikan dengan jumlah baterainya namun jumlah arus
maksimumnya tetap.
Pololo 3pi
Robot

Automation Technology
Education Center

Gambar 4.2 Hubung Seri


Baterai
Dalam praktek kita menggunakan pemasangan jenis parallel, karena jika
ada baterai yang lebih kuat di banding baterai yang lain akan tetap
mengalirkan arusnya ke robot, apabila seri baterai yang lebih kuat akan
mengisi baterai yang lebih lemah sehingga membuang-buang energy,
untuk mendapatkan energy yang lebih besar lagi kita bisa menggunakan
baterai dengan ukuran yang berbeda seperti: AA,C ,dan D namun akan
menambah tempat yang lebih besar lagi. Pada gambar 4.3 dibawah
menunjukan baterai dengan tipe NIMH.

Gambar 4.3 Baterai Tipe NIMH


4.2
Sistim pengaturan energy
pada 3 robot.
Kita menggunakan sumber dari baterai, jadi jumlah tegangan yang di
dapatkan tergantung jumlah baterai dan pemasangan baterai, tapi pada
komponen elektrik membutuhkan jumlah tegangan yang berbeda-beda. Tapi
untuk kasus ini kita menggunakan komponen yang bernama
regulator yang berfungsi untuk mengatur tegangan dengan stabil. Untuk chipchip seperti mikrokontroller dan motor driver menggunakan tegangan level 5V
dan level ini biasa di sebut dengan tegangan level TTL (Transisitor-Transistor
Logic). Ada dua tipe regulator yang digunakan pada 3 robot:
Linear regulator menggunakan rangkaian system umpan balik
sederhana.
Regulator berfungsi sebagai penurun tegangan menjadi 5V
untuk chip-chip IC lainya.
Switcing regulator cara kerjanya menyalakan dan mematikan power
pada frekwensi tinggi, dan menstabilkan keluaran teganganya. Pada
switching di 3 robot berfungsi menaikan teganganan yang di peroleh dari
baterai menjadi 9,25 volt (boost power) yang di gunakan untuk tegangan
motor. Rangkaian ini menggunakan komponen bernama inductor yang
berfungsi untuk menaikan frekwensi teganganya.

Pololo 3pi
Robot

Automation Technology
Education Center

Gambaran diagram pada system energy di 3 robot terdapat pada gambar 4.4 di bawah ini:

Gambar 4.4 Skematik rangkaian Boost Power


Tegangan pada baterai bisa berkisar antara 3,5 sampai 5,5 volt, bahkan bisa
sampai 6 volt (jika menggunakan baterai alkaline). Hal ini bisa tidak
memungkinkan untuk menurunkan tegangan menjadi 5 volt apabila kondisi
baterai berada di bawah 5 volt, oleh karena itu sebelum masuk ke linear
regulator terlebih dahulu di naikan teganganya di switching regulator menjadi
9,25 volt (Vboost).
Kegunaan lain dari tegangan vboost adalah:
Pertama di gunakan untuk motor penggerak gunanya untuk menaikan
kecepatan motor sehingga bisa bergerak lebih cepat.
Selain itu pada sistim pengaturan energi kita juga dapat memantau kondisi
baterai, karena terdapat rangkaian seperti gambar 4.5. Pada gambar 4.5
terdapat jumper untuk ke pin ADC6 (analog to digital converter) dengan
data 10 bit, yang artinya pembacaan data pada mikrokontroller
di
wakilkan dengan nilai 0 1023 apabila tegangan bernilai 5V artinya
bernilai 1023.

Gambar 4.5 Skematik Rangkaian ADC untuk Baterai

4.3 Motor dan gearbox motor


Motor elektrik adalah sebuah alat yang berfungsi mengubah energi listrik
menjadi gerakan atau putaran. Ada berbagai jenis motor elektrik namun yang
paling sering di gunakan dan harganya yang murah adalah jenis brushed DC
sepert pada gambar 4.6.

Pololo 3pi
Robot

1
0

Automation Technology
Education Center

Gambar 4.6 Motor


DC
Konstruksi dari motor ini terdapat magnet permanent sebagai stator
(bagian yang tidak bergerak) dan kumparan elektromagnetik sebagai rotor
(bagian yang bergerak). Yang di maksud brused adalah sikat namun sikat pada
motor ini bukan seperti sikat pada umumnya namun sikat ini berupa logam yang
mengapit kutub-kutub elektromagnetik yang akan berputar.
Nilai yang utama pada motor adalah kecepatan dalam satuan rpm (rotation per
minute) dan
torsi dalam satuan kg.cm. Contohnya motor memiliki torsi 0,2kg.cm artinya
jika kita hubungkan motor dengan lengan sepanjang 1cm dapat mengangkat
beban sebesar 0,2 kg, apabila menggunakan lengan 2cm maka dapat
mengangkat beban sebesar 0,1 kg, dan seterusanya sesuai perkalian dari beban
dan panjang lengan.
Setiap motor memiliki kecepatan maksimum tanpa beban dan torsi maksimum ketika
motor
berhenti ketika di bebani, atau dalam istilah free running speed dan stall
torque. Biasanya pada motor DC berukuarn kecil memiliki free running sepeed
yang tinggi dalam satuan rpm dan stall torque yang rendah tentu saja tidak
akan cocok apabila kita gunakan langsung ke robot untuk bermanuver. Untuk
mengatasi hal tersebut maka digunakan sebuah gearbox.
Gearbox dapat merubah free running speed yang tinggi menjadi rendah dan stall
torque akan
naik, lalu bagaimana cara gearbox bekerja.?. Tentunya gearbox mengurangi
jumlah putaran pada motor dengan perbandingan gerigi contohnya apabila
sebuah gearbox memiliki rasio 30:1 yang di hubungkan ke motor yang memiliki
torsi 0,2 kg.cm artinya pada motor sudah berputar sebanyak 30
kali dan pada keluaran dari gearbox baru berputar satu kali, dan pada torsi
akan bert ambah sesuai jumlah rasionya menjadi 6 kg.cm. Dan yang kita
gunakan pada 3 robot seperti pada gambar 4.7.

Gambar 4.7 Motor


gearbox
Spesifkasi pada motor gearbox yang kita
Pololo 3pi
Robot

1
1

Automation Technology
Education Center

gunakan adalah: Rasio gearbox


:
30:1
Stall torque
: 6 oz.inchi (oz satuan massa dan
inchi satuan panjang) Free running speed
: 700 rpm
Pada 3 robot manggunakan roda dengan diameter 0,67 inchi yang artinya
setiap torsi yang dihasilkan kedua motor (menggunakan 2 buah motor sisi
kanan dan kiri) ketika dalam bergerak maju adalah 2x6/0,67 = 18 oz, dan berat
dari 3pi robot dengan battrai sekitar 7 oz. artinya lebih dari cukup untuk
membawa 3pi robot bermanuver.

Pololo 3pi
Robot

1
2

Automation Technology
Education Center

4.4 Mengendalikan motor dengan kecepatan dan


control arah putaran
Motor DC dapat dirubah arah putaranya dengan cara membalik polaritas tegangan
motornya.
Dan sebuah susunan special untuk merubah arah putaran dari motor yang terdiri
dari 4 buah saklar atau yang di sebut H bridge seperti pada gambar 4.8.

Gambar 4.8 Sistem Kerja Pembalik Polaritas pada Motor


Apabila kita menekan saklar 1 dan 4 motor akan berputar searah jarum jam dan jika kita
tekan 2
dan 3 maka motor itu akan berputar berlawanan arah jarum jam. Fungsi seperti
inilah yang kita terapkan di 3 robot, namun tidak menggunakan saklar-saklar
seperti di atas namun kita menggunakannya sudah dalam bentuk chip IC (motor
driver) yang bertugas merubah arah putaranya. Dan 3 robot menggunakan
motor driver berjenis TB6612FNG yang dihubungkan dengan pin
mikrokontroller PD5 dan PD6 untuk motor 1 dan PD3 dan PB3 untuk motor 2
dengan konfgurasi seperti pada table berikut:
Logika control di motor 1 (kondisi pin PD5 dan PD6 bernilai digital 1/0 dan akan
dibahas lebih lanjut di bab berikutnya)
PD5
0
0
1
1

PD6
0
1
0
1

1
off
off
on
off

2
Off
On
Off
Off

3
Off
On
off
on

4
off
off
on
on

M1
Berhenti (tidak mengerem)
Berputar maju
Berputar mundur
Berhenti (mengerem)

Logika kontrol di motor 2 (kondisi pin PD5 dan PB3 bernilai digital 1/0 dan akan
dibahas lebih l anjut di bab berikutnya)
PD3
0
0
1
1

PB3
0
1
0
1

1
off
off
on
off

2
off
On
off
off

3
off
on
off
on

4
off
off
on
on

M2
Berhenti (tidak mengerem)
Berputar maju
Berputar mundur
Berhenti (mengerem)

Kendali kecepatan pada motor dengan mengubah logika rendah (0V) ke nilai
tinggi (5V) secara cepat. Pada motor 1 nilai logika di PD6 akan tetap dijaga
kondisi tinggi(5V) dan pada PD5 yang akan kita ubah nilai logikanya dari rendah
ke tinggi secara cepat. Dengan pengubahan nilai secara cepat itu dapat
mengubah nilai tegangan keluaranya misalnya nilai logika tinggi dan nilai logika
rendah di lakukan pengubahanya dalam waktu yang sama akan bernilai 50% dari
Pololo 3pi
Robot

1
3

Automation Technology
Education Center

nilai tegangan 5V artinya 2,5V dan pada motor driver juga akan berubah nilai
kecepatan yang di berikan ke motor menjadi 50% dari jumlah putaran
maksimalnya. Pengubahan logika itulah yang di sebut PWM (Pulse With
Modulation) dan nilai PWM di mikrokontroller diwakilkan dengan nilai 0-255.
artinya nilai 255 lebih banyak

Pololo 3pi
Robot

1
4

Automation Technology
Education Center

pengubahan di logika tinggi artinya motor dalam kecepatan maksimal dan


nilai 0 lebih banyak pengubahanya di logika rendah artinya motor tidak akan
berputar.
4.5 Berbelok dengan kendali motor yang berbeda
3 robot memiliki dua buah motor yang dihubungkan dengan roda dan
memiliki kendali yang berbeda pada sisi kanan dan sisi kiri robot. Pernahkah
kalian melihat bagaimana cara kendaraan perang tank berbelok.?. Cara yang
seperti itulah yang di terapkan pada 3 robot, apabila roda kanan bergerak maju
dan roda kirinya bergerak mundur maka robot akan berbelok kearah kanan dan
jika motor pada kedua sisi robot berputar maju dengan kecepatan yang
berbeda maka robot akan
terlihat berbelok seperti pada gambar 4.9.

Gambar 4.9 Manuver


robot
4.6 Digital input dan sensor reflectance
Mikrokontroller adalah jantung utama pusat kendali dari 3 robot, dengan
menggunakan
mikrokontroller buatan ATMEL yang berjenis AVR (Alf Vegard Risc) yang tipenya MEGA 328p.
Pada mikrokontroller ini memiliki pin-pin yang dapat di gunakan sebagi input
dan output, untuk digital input akan melakukan pembacaan nilai logika rendah
(nilai 0 atau bertegangan 0 s/d 0,2 volt) dan logika tinggi (nilai 1 atau
bertegangan 4,5 s/d 5 volt)
a. Push button
Pushbutton sebagai input, rangkaianya terdapat pada gambar 4.10.

Pololo 3pi
Robot

1
5

Automation Technology
Education Center

Gambar 4.10 Rangkain


pushbutton
pada gambar 4.10 lambang R merupakan komponen resistor yang pada rangkaian ini di
sebut
pull-up resistor nilainya 1-50 k dan gunanya untuk memberikan nilai ke pin
mikrokontroller (PB1

Pololo 3pi
Robot

1
6

Automation Technology
Education Center

pada contoh) agar tetap berlogika 1 jika tombol tidak ditekan, dan jika tombol
ditekan maka pin mikrokontroller terhubung dengan ground (nilai negative dari
supplai tegangan) dengan perantara R27 (resistor) yang bernilai 1 k dan
nilainya harus lebih kecil dari nilai R agar arus listrik dari VCC (nilai positif dari
supplai tegangan) dapat mengalir ke ground dan tidak ke pin mikrokontroller
sehingga rangkaian ini apabila pushbutton tertekan maka nilai pada pin
mikrokontroller bernilai 0 dan apabila tidak tertekan maka bernilai 1. Jika kita
tidak menggunakan pull-up resistor ketika pushbutton tidak di tekan maka
nilainya akan foating (tidak menentu antara 0 dan 1) maka pembacaan inputnya
akan eror. Oleh karena itu pull-up resistor penting apabila kita menggunakan
pushbutton. Tapi pada mikrokontroller jenis AVR sudah memiliki internal pull-up
artinya sudah terdapat resistor pull-up di dalam mikrokontroller ini.
b. Sensor Garis
Sensor garis refectance seperti pada gambar 4.11 merupakan rangkaian
sensor garis refectance pada komponen U4 adalah gabungan dari LED IR sebagai
pemancar atau transmitter dan photo diode/photo transistor sebagai penerima
atau receiver.

Gambar 4.11 Rangkain


Sensor Garis
Sensor ini terdiri dari dua bagian yaitu transmitter yang berupa LED
(Light Emitting Diode) inframerah yang berfungsi untuk memberikan sinar
inframerah untuk di pantulkan, sinar inframerah ini tidak dapat terlihat oleh
penglihatan kita dan hanya dapat terlihat menggunakan kamera. Bagian
kedua yaitu receiver yang berupa photo transistor yang berfungsi menerima
pantulan cahaya inframerah dari transmitter. Terdapat tambahan komponen
pasif yaitu C21 kapasitor 22nF berfungsi menyimpan arus tegangan, jika photo
transistor tidak terkena pantulan cahaya maka photo transistor memiliki nilai
hambatan lebih tinggi dari resistor 220 ohm maka arus dari kapasitor di alirkan
ke OUT dan memliki keluaran logika 1 atau tegangan tinggi 4,5-5volt
Tapi apabila photo transistor terkena pantulan cahaya maka photo
transistor memiliki nilai
hambatan lebih rendah dari resistor 220 ohm maka arus dari kapasitor mengalir ke
ground atau
negative.
Cara kerjanya dari sensor ini di jelaskan pada gambar di bawah ini

Pololo 3pi
Robot

1
7

Automation Technology
Education Center

Gambar 4.12 Sistem Kerja


Sensor garis

Pololo 3pi
Robot

1
8

Automation Technology
Education Center

Untuk penggunaan sensor ini pertama-tama kita harus mengisi muatan


arus listrik lebih dahulu dengan cara membuat settingan ke pin yang terkoneksi
dengan sensor ini di 3 robot (PC0- PC4) menjadi output dengan logika 0 atau
rendah agar arus listrik dari VCC dapat mengalir dan mengisi kapasitor, tapi itu
semua sudah terdapat di pololu library yang akan dibahas pada bab
berikutnya.
4.7 Skema rangkaian di 3 robot

Gambar 4.13 Skematik Rangkaian


3 robot
Pololo 3pi
Robot

1
9

Automation Technology
Education Center

DASAR PEMROGRAMAN BAHASA C

5.1 Pengenal
Pengenal (identifer) merupakan sebuah nama yang didefnisikan oleh pemrogram
untuk
menunjukan identitas dari sebuah konstanta, variable, fungsi, label, atau tipe data khsusus.
Untuk membrikan nama sebuah pengenal ada aturan-aturan yang harus dipenuhi antara
lain:
- karakter pertama tidak boleh menggunakan angka.
- Karakter kedua dapat berupa huruf, angka atau garis bawah.
- Tidak boleh menggunakan spasi
- Bersifat Case sensitive yaitu huruf capital dan huruf kecil tidak dianggap sama
- Tidak boleh menggunakan kata-kata yang merupakan sintaks
maupun operator dalam pemrograman, misal:
Short, void, bit, char, int, long, float, double, include, const, case, do,
while, if, else, static, switch, break, dll.
Contoh penamaan:
. nama . nama_pengenal_saya
. _nama
. nama1
5.2 Tipe Data
Tipe data adalah penunjukan suatu nilai yang dapat dinyatakan dalam
konstanta atau variable. Tipe data yang dinamakan tipe data dasar yaitu:
Bilangan bulat, bilangan pecahan, karakter, tak bertipe. Tipe data dapat dilihat pada table
5.1.
Table 5.1 Tipe
Data
Tipe
Ukura
Jangkaun Nilai
data
n
Bit
1 bit
0 atau 1
Char
Unsigned char
Signed char
Int
Short int
Unsigned int
Signed int
Long int
Unsigned long int
Signed long int
Float
Double

1 byte
1 byte
1byte
2 byte
2 byte
2 byte
2 byte
4 byte
4 byte
4 byte
4 byte
4 byte

-128 s.d 127


0 s.d 255
-128 s.d 127
-32.768 s.d 32.767
-32.768 s.d 32.767
0 s.d 65.535
-32.768 s.d 32.767
-2.147.483.648s.d
2.147.483.647
0 s.d 4.294.967.295
-2.147.483.648s.d
1.2*10
3
1.2*10
3

8
8

s.d 3.4*10
3
s.d 3.4*10

8
8

Pololo 3pi
Robot

2
0

Automation Technology
Education Center

5.3 Konstanta dan


variabel
Konstanta dan variabel merupakan sebuah tempat untuk menyimpan data yang
berbeda di
dalam memory. Konstanta berisi data yang nilainya tetap dan tidak berubah
selama program dijalankan, sedangkan variabel berisi data yang dapat berubah
selama program dijalankan. Untuk membuat variabel dan konstanta maka hatus
di deklarasikannya terlebih dahulu yaitu dengan sintaks sebagai berikut.
- deklarasi konstanta
const [tipe data] [nama_konstanta] = [nilai];
contoh
const unsigned char jumlah = 0x10;
-

deklarasi variable
[tipe data] [nama variabel] = [nilai];
contoh
int kurang_dari = 0x14;

variabel global dan variabel local

variable global adalah variabel yang dapat dikenali oleh seluruh semua
fungsi yang ada dalam program sedangkan variabel local adalah variabel yang
hanya dikenali oleh fungsi tertentu saja. Variabel local hanya akan
dibentuk/dialokasikan dalam memori setelah fungsi tersebut dijalankan, sehingga
dapat menghemat dalam penggunaan memori.
Contoh deklarasi varibel global (di deklarasikan
di luar fungsi)
#include<pololu/3pi.h>
preprocessor untuk

//

//memasukan ile 3pi.h


Unsigned char kurang;
//
variabel global
Void test ()
//fungsi test
{
Unsigned int jumlah;
//variabel local di fungsi test
}
Contoh deklarasi varibel local (di deklarasikan
didalam fungsi)
#include<pololu/3pi.h> //preprocessor untuk
memasukan
//fle
3pi.h void test ()
//fungsi test
{
unsigned int jumlah; //variabel local di fungsi test
}
5.4 Komentar
komentar adalah tulisan-tulisan yang tidak dianggap sebagai bagian dari program.
Komentar
digunakan untuk memberikan penjelasan, informasi atraupun keterangan
Pololo 3pi
Robot

2
1

yang dapat membantu dalam pemahaman programan.

Automation Technology
Education Center

Contoh
// komentar satu baris
/* Komentar 2
baris atau
lebih*/

Pololo 3pi
Robot

2
2

Automation Technology
Education Center

5.5 Pengarah preprosesor


Pengarah preprosesor digunakan untuk mendefnisikan prosesor yang akan digunakan
ataupun
fle header yang digunakan dan fle library.
Contoh
#include <mega8535.h>
atau
#include
<pololu/3pi.h> File
header
#include <avr/pgmspace.h>
5.6 Pernyataan
Pernyataan adalah salah satu instruksi lengkap yang berdiri sendiri.
Berikut adalah contoh sebuah pernyataan.
PORTC =
0x00; atau
red_led(1);
5.7 Blok pernyataan
Blok pernyataan merupakan kumpulan dari beberapa pernyataan yang berada
dalam satu bagian program.
Contoh
{
PORTC =
0x00;
PORTA =
0x12;
PORTB = 0x30;
}
Ata
u
{ red_led(1); red_led(0);
green_led(1); green_led(0);
}
5.8 Operator aritmatika
Operator aritmatika adalah beberpa operator yang digunakan untuk
perhitungan aritmatika. Dapat dilihat pada tabel 5.2.
Tabel 5.2 Operator
aritmatika
Operator
+
*
/
%

Keterangan
Operator operasi penjumlahan
Oprator operasi pengurangan
Operator operasi perkalian
Operator operasi pembagian
Operator operasi sisa pembagian

Pololo 3pi
Robot

2
3

Automation Technology
Education Center

Operator *, / dan % memiliki prioritas yang lebih tinggi bila dibandingkan dengan operator +
dan -.

Pololo 3pi
Robot

2
4

Automation Technology
Education Center

5.9 Operator Pembanding


Operator pembanding adalah operator yang digunakan untuk membandingkan
2 buah data. Hasil
operator pembanding bukan berupa nilai benar (1) atau salah (0) saja.
Berikut tab el operator pembanding.
Tabel 5.3 operator
pembanding
Operato Contoh Arti
r
==
x == y Bernilai benar jika kedua data sama dan bernilai salah
jika kedua data
tidak sama
!=
x != y Bernilai
benar jika kedua data tidak bernilai samadan
bernilai salah jika kedua data sama
>
x>y
Bernilai benar jika data x lebih besar dari data y dan
bernilai salah jika sebaliknya
<
x<y
Bernilai benar jika data x lebih kecil dari data y dan
bernilai salah jika sebaliknya
>=
x >= y Bernilai benar jika data x lebih besar sama dengan data
y dan bernilai
salah jika
sebaliknya
<=
x <= y Bernilai
benar
jika data x lebih besar sama dengan data
y dan bernilai
salah jika sebaliknya
5.10 Operator logika
Operator logika digunakan untuk membentuk suatu logika atas dua buah
kondisi atau lebih. Berikut tabel operator logika.
Operator
&&
||
!

Tabel 5.4 operator


logika
Operator untuk logika AND
Operator untuk logika OR
Operator untuk logika NOT

5.11 Operator bit


Operator bit adalah operasi logika yang bekerja pada level bit. Hal ini berbeda
dengan operator logika dimana pada operator logika menghasilkan benar atau
salah (boolean) sedangkan operator bit menghasilkan data biner.
Tabel 5.5
Operator Bit
Opearator
&
|
^
~
<<
>>

Keterangan
Operator operasi
Operator operasi
Operator operasi
Operator operasi
Operator operasi
Operator operasi

AND level bit (biner)


OR level bit (biner)
XOR level bit (biner)
NOT level bit (biner)
geser kiri level bit (biner)
geser kanan level bit (biner)

Contoh
a = 0x12;
b = 0x34;
Pololo 3pi
Robot

2
5

Automation Technology
Education Center

maka:
a&b = 0x10;

Pololo 3pi
Robot

2
6

Automation Technology
Education Center

a<<1= 0x24;
penjelasan
a
= 0x12
b
= 0x34
a&b
= 0x10

0001 0010
00 11 01 00 &
0001 0000

Tabel 5.6 perbandingan isi variabel a sebelum dan sesudah operasi geser kiri
Nilai sebelum digeser kiri
Bit 7
Bit 6
Bit 5
0
0
0

Bit 4
1

Bit 3
0

Bit 2
0

Bit 1
1

Bit 0
0

Bit 4
0

Bit 3
0

Bit 2
1

Bit 1
0

Bit 0
0

Nilai sesudah gisir kiri


Bit 7
0

Bit 6
0

Bit 5
1

5.12 Operator penugasan


Operator penugasan digunakan untuk memberikan nilai atau memenipulasi data
sebuah
variabel. Berikut adalah operator yang termasuk operator penugasan.

Operator
=
+=
-=
*=
/=
%=

Keterangan
Operator untuk
Operator untuk
Operator untuk
Operator untuk
Operator untuk
Operator untuk

Tabel 5.7 operator


penugasan
memberi nilai variabel
menambahkan nilai variabel
mengurangi nilai variabel
mengalikan nilai variabel
membagi nilai variabel
memperoleh sisa pembagian

Contoh
a +=2; artinya nilai variabel a ditambahan dengan 2, a=a +2
b *=3; artinya nilai variabel a dikalikan dengan 3, a=b*3
5.13 Operator Penambahan dan pengurangan
Operator penambahan dan pengurangan adalah operator yang digunakan
untuk manaikan atau menurunkan nilai sebuah variable dengan selisih 1.
Operator
++
--

Table 5.8 operator penambahan dan pengurangan


Keterangan
Operator penambahan nilai variabel
Operator pengurangan nilai variabel

Pololo 3pi
Robot

2
7

Automation Technology
Education Center

Contoh
a =
1; b
= 5;
a+
+;
b-;
Maka operator a++ akan mengubah variabel a dari 1 menjadi 2 dan b-- akan
mengubah variabel
5 menjadi
4.
5.14 Algoritma dan Bilangan
bilangan
Sebelum kita mengenal apa itu bahasa C kita harus tahu dulu sistem
algoritma dan sistem bilangan yang biasa di gunakan dalam bahasa C
a.
Algoritma
controller
karena kita menggunakan mikrokontroller jadi seperti halnya computer kita membaca
input
input dan mengeluarkan perintah outputoutput. Dan mikrokontroller hanya
bisa membaca input
dalam kondisi biner, apa itu biner? biner itu bilangan yang terdiri nilai 0 dan 1,
nah pembacaan nilai
biner dalam kontroller yaitu apabila nilai 1 di anggap ada tegangan dan apabila 0
di anggap tidak ada tegangan. Sedangkan input analog kita memasukan
tegangan yang berubahubah dari 0 volt sampai
5 volt, karena controller yang kita gunakan memiliki fasilitas ADC (Analog Digital
Converter) jadi kita bisa menggunakan inputinput analog. Nah tadi kita sudah
mengetahui inputinput kontroller sekarang apa yang harus kita lakukan?,
setelah mengetahui inputinput tentu kita harus melakukan aksi ke keluaran.
Sebelumnya kita harus mengetahui kemungkinankemungkinan pada inputny.
Misalnya kita membaca PORTC.0 untuk memutar motor dalam digital, PORTC.0
bernilai 1 atau 0, jika
0 kita gerakan motor searah jarum jam dan jika 1 kita hentikan putaran
motornya. Itu contoh yang paling dasar dan masih banyak lagi yang nanti kita
bahas selanjutnya.
b.
Sistem Bilangan
pada bahasa c
Karena kita bermainmain dengan kemungkinan kita harus mendefnisikanya dalam
bilangan
bilangan untuk penyimpanan datadata dari input agar mudah kita baca
kembali, system bilngan
yang kita gunakan dalam bahasa c ada 3
jenis antara lain.
Jenis
bilangan

Pololo 3pi
Robot

2
8

Automation Technology
Education Center

Decimal
Bilangan decimal yaitu bilangan yang mempunyai sepuluh simbol angka
yaitu 0,1,2,3,4,5,6,7,8,9
Aturan penulisan
(langsung) Contoh :
128

Heksadesimal
Bilangan heksadesimal yaitu bilangan yang mempunyai enam belas simbol
angka yaitu
0,1,2,3,4,5,6,7,8,9,A,B,
C,D,E,F
Aturan penulisan diawali dengan
0x... atau $...
Contoh:
0x57FA
Biner atau binary
Bilangan biner yaitu bilangan yang mempunyai dua simbol angka yaitu 0 dan
1. Aturan penulisan diawali dengan 0b...
Contoh: 0b00111101

Pololo 3pi
Robot

2
9

Konversi
bilangan
3
2
Kunci bilangan biner dan heksadesimal adalah Heksadesimal = b*2 + b*2 +
1
0
b*2 + b*2 = b*8 +
b*4 + b*2 + b*1. Dimana b adalah nilai bit dalam bilangan biner 0 atau 1. Untuk
mempermudah konversi bilangan heksa dari dan ke biner di buat menjadi 4 bit-4
bit. Dimana tiap 4 bit mempunyai bentuk 8_4_2_1
1.
konversi biner ke
heksadesimal
0b10110001 =? bagi dua nible atas (1011) dan nible bawah (0001).
3
2
1
0=
1011 = 1*2 + 0*2 + 1*2 + 1*2 8 + 0 + 2 + 1 = B
3
2
1
0
0001 = 0*2 + 0*2 + 0*2 + 1*2 = 0 + 0 + 0 +1 = 1
0b10110001 = 0xB1
2.
konversi heksadesimal
ke biner
0x2F = ? bagi dua nible atas ( 2 ) dan nible bawah ( F )
3
2
1
0
2 = 0 + 0 + 2 + 0 = 0*2 + 0*2 + 1*2 + 0*2 = 0010 biner
3
2
1
0
F = 8 + 4 + 2 +1 = 1*2 + 1*2 + 1*2 + 1*2 = 1111 biner
0x2F = 0b00101111
3.
konversi biner ke
decimal
0b10110001 =? dalam konversi ke decimal kita tidak menggunakan
pembagian nible atas dan nible bawah dalam 4 bit langsung kita kalikan
7
0
dengan bilangan 2 sampai 2
7
6
5
4
3
2
1
0
0b10110001 = (1*2 ) + (0*2 ) + (1*2 ) + (1*2 ) + (0*2 ) + (0*2 ) + (0*2 ) + (1*2 ) = 128
+ 0 + 32 +
16 + 0 + 0 + 0 + 1 = 177
4.
konversi heksadesimal ke
decimal
0x12F =? jika dalam heksa ke biner kita menggunakan 2 pangkat karena
jumlah bilangan biner hanya dua tapi jika kita konversi ke decimal kita harus
mempangkatkan 16 sesuai jumlah bilangan
heksadesimal yang ingin di
konversi
2
2
2
0x12F = (1 x 16 ) + (2 x 16 ) + (F x 16 ) = 256 + 32 + 15 = 303
Catatan : huruf dalam heksa jika di konversi ke desimal A=10, B=11, C=12, D=13, E=14,
F=15
5.
konversi bilangan decimal ke
heksadesimal
500 =? jika kita mengkonversi heksadesimal ke decimal kita menggunakan
perkalian dengan pangkat 16 maka jika konversi sebaliknya kita membagi
dengan bilangan 16
500 : 16 = 31
sisa 4
31 : 16 = 1
sisa 15 atau F
1 (tidak di bagi lagi dengan 16 karna nilainya lebih
kecil dari 16) Jadi hasilnya kita urutkan dari nilai
paling bawah ke atas
500 = 0x1F4

6.
Konversi bilangan decimal
ke biner
Cara cepat yaitu kita rubah dulu decimal ke heksa baru ke biner.
200 = ?
200 : 16 = 12 (atau C) sisa 8
200 = 0xC8
3
2
1
0
C = 8 + 4 + 0 + 0 = 1*2 + 1*2 + 0*2 + 0*2 = 1100
3
2
1
0
8 = 8 + 0 + 0 + 0 = 1*2 + 0*2 + 0*2 + 0*2 = 1000
200 = 0xC8 = 0b11001000

logika dasar
table 5.9 logika AND
A
0
0
1
1

B
0
1
0
1

A AND B
0
1
1
1

Tabel 5.11 Logika OR


A
B
A OR B
0
0
0
0
1
1
1
0
1
1
1
1

table
A
0
0
1
1

5.10 Logika E-XOR


B
A EXOR B
0
0
1
1
0
1
1
0
Tabel 5.12 Logika NOT
A
0
1

A
1
0

Dari sifat logika tersebut banyak manfaat yang dapat kita pakai dalam
pembuatan program nanti, misalnya jika ingin mengubah data dalam variabel
kita yang sebagian datanya tidak harus di ubah, lalu jika kita ingin membaca
kondisi input dan memberikan nilai kepada output, selebihnya akan dibahas
nanti.
5.15 Kontrol Aliran program
Untuk mencerdaskan suatu program maka diperlukan sebuah algoritma
dimana terdiri dari berbagai control aliran program. kontrol aliran program
ada beberapa seperti pengendalian bersyarat, dan pengendalian tanpa syarat.
1.

pengendalian bersyarat
a. kontrol aliran program if

Kontrol aliran program if digunakan untuk melakukan pengambilan


keputusan terhadap dua buah kemungkinan yaitu mengerjakan suatu blok
pernyataan atau tidak. Bentuk sintaks dari kontrol aliran program if sebagai
berikut.
If (kondisi)
{
// blok pernyataan yang akan dikerjakan jika kondisi if terpenuhi
}
Contoh
unsigned char data = 10; // data sama dengan variabel bertipe unsigned char
If (data==10) //periksa kondisi yang jika sudah terpenuhi maka akan mengerjakan
//pernyataan.
{
red_led(1);// pernyatan yang akan di eksekusi jika kondisi sudah terpenuhi
}
Dari pernyataan diatas dapat disimpulkan, kondisi if sudah terpenuhi dari nilai awal
data=10
maka blok pernyataan akan dikerjakan tetapi jika data10 maka blok

pernyataan tidak akan dikerjakan.

b.kontrol aliran program if .. else


Kontrol aliran program if..else sama seperti kontrol aliran program if
hanya untuk kontrol aliran program if..else digunakan untuk melakukan
pengambilan keputusan terhadap dua buah kemungkinan. Bentuk sintaks sebgai
berikut.
if (kondisi)
{
//blok pernyataan yang akan dikerjakan jika kondisi if terpenuhi
}
else
{
// blok pernyataan yang akan dikerjakan jika kondisi if tidak terpenuhi
}
Conto
h
Unsigned char
data = 0 if (data
== 5)
{
red_led (0);
}
else
{
red_led (1);
}
Dari pernyataan diatas dapat disimpulkan, kondisi if tidak terpenuhi
dikarenakan nilai data0 tetapi 5 maka perintah red_led(0) tidak dikerjakan
tetapi dikarenaka ada perintah else maka program red_led (1) yang akan
dikerjakan. Gambar flowcart dari kontrol aliran program if dapat dilihat pada
gambar 5.1.

Gambar 5.1
Flowcart if

c.

kontrol aliran program if bersarang

Kontrol aliran program if bersarang adalah pernyataan if maupun if..else


dimana didalam blok pernyataan yang akan dikerjakan terdapat pernyataan
if..else lagi. Sintaks program sebagai berikut.
if (kondisi_1)
{
if (kondisi_2)
{
//blok pernyataan_1 yang akan dikerjakan jika
//kondisi_1 dan kondisi_2 terpenuhi
}
}
els
e
{
if(kondisi_3)
{ // blok pernyataan_2 yang akan dikerjakan jika kondisi_1 tidak terpenuhi dan
//kondisi_3 terpenuhi
}
}
Contoh.
unsigned char data_1, data_2, data_3;
if (data_1 = = 0)
{
if (data_2 == 0)
{
red_led(0);
}
}
else
{
if (data_3 ==
0);
{
green_led(1);
}
}
Dari contoh diatas dapat disimpulkan kondisi_1 terpenuhi dan kondisi_2 terpenuhi,
maka
blok pernyataan red_led (0) akan dikerjakan. Walaupun kondisi_3 terpenuhi tetapi
kondisi_1 telah terpenuhi terlebih dahulu, syarat akan dikerjakan jika kondisi_1
tidak terpenuhui di awal. Flowcart dari if bersarang dapat dilihat pada gambar
5.2.

Gambar 5.2 fowcart if


bersarang
d.Kontrol aliran program while
Kontrol aliran program while digunakan untuk pengulangan sebuah
pernyataan atau blok pernyataan secara terus menerus selama kondisi masih
terpenuhi. Bentuk sintaksnya sebagai berikut.
while (kondisi)
{
// pernyataan atau blok pernyataan
}
Contoh
unsigned char a = 1;
while (a==1)
{
red_led(1);
green_led(0);
}

Dari sintask program dapat disimpulkan blok pernyataan red_led(1) dan


green_led(0) akan di jalankan terus menerus hingga kondisi a tidak sama dengan
1 atau sudah tidak terpenuhi. Flowcart while dapat dilihat pada gambar 5.3.

Gambar 5.3 fowcart


while
e.Kontrol aliran program do while
Kontrol aliran program do while hampir sama dengan while yaitu kontrol
aliran program yang digunakan untuk pengulangan sebuah pernyataan atau
blok pernyataan secara terus menerus selama kondisi tertantu terpenuhi.
Bentuk sintaksnya sebagai berikut.
Do
{
// pernyataan atau blok pernyataan
}
While (kondisi)
Yang membedakan antara while dan do..while terletak pada pengetesan
kondisi, jika pada while kondisi di cek dahulu terpenuhi atau tidak baru
melaksanakan
pernyataan
atau
blok pernyataan tetapi pada do..while
mengerjakan pernyataan atau blok pernyataan dahulu baru pengecekan kondisi
terpenuhi atau tidak, jika tidak maka program akan selesai. Jadi pada do.. while
pernyataan atau blok pernyataan akan dikerjakan paling sedikit satu kali akan
tetapi while belum tentu.
f.

Kontrol aliran program for

Kontrol aliran program for juga digunakan untuk melakukan perulangan


dalam program yang akan dibuat, tetapi perulangan for merupakan perulangan
bersyarat yang jumlah perulangannya dapat kita tentukan. Sintaks programnya
sebagai berikut.
for(nilai_awal; kondisi; perubahan)
{
// sebuah pernyataan atau blok pernyataan
}

Contoh
unsigned char data_a;
for (data_a=0; data_a<10; data_a++)
{
red_led(1);
delay_ms(20
0);
green_led(1)
;
}
Dari contoh diatas dapat disimpulkan nilai_awal(data_a) adalah kita
set 0 dan kondisi (data_a) perulangan yang diinginkan < 10 dan perubahan
yang diinginkan adalah penaikan nilai (++). Maka dari program diatas akan
melakukan perulangan sebanyak 10 kali dimulai dari 0 sampai 9 dari perubahan
data yang dinaikan nilai 1 setiap kali selesai perulangan dan program akan
berhenti jika kondisi (data_a) sudah terpenuhi.
g.

kontrol aliran program switch

Kontrol aliran program switch digunakan untuk melakukan pengambilan


keputusan terhadap banyak kemungkinan. Sintaks kontrol aliran program switch
sebagai berikut.
switch( ekspresi )
{
case nilai_1 : pernyataan_1;
break
case
nilai_2
:
pernyataan_2; break; case
nilai_1
:
pernyataan_3;
break;
.
.
.
case
nilai_n1
:
pernyataan_n; break;
default
pernyataan_default; break;
}
Contoh
Unsigned char data;
Switch(data)
{
Case 10
Case 9
Case 8
Default`
}

:lampu_a =
1;
break;
:lampu_b =
1;
break;
:lampu_c =
1;
break;
:lampu_a
= 0; lampu_b=0;lampu_c=0; break;

Dari program diatas dapat disimpulkan jika data (data adalah variable)
sama dengan 10 lampu_a menyala dan jika data sama dengan 9 lampu_b

menyala dan jika data sama dengan 8 lampu_c menyala dan jika tidak ada yang
sama matikan lampu_a, lampu_b, dan lampu_c (1 = hidup dan 0 = mati).

h.Arr
ay
Array adalah variable yang berisi sekumpulan data yang mempunyai
tipe data yang sama berbentuk matrik tunggal atau matrik multidimensional.
Cara penulisan Array satu dimensi:
tipe_variabel nama_array [banyaknya_elemen];
Array dua dimensi:
tipe_variabel nama_array[banyaknya_elemen1] [banyaknya_elemen2];
Contohnya:
Char urutan[8];//deklarasi penggunaan array satu dimensi dengan jumlah elemen 8
//dengan bertipe sama yaitu char.
Char urutan[8] = {20,5,12,3,43,12,56,17}; /*pemberian nilai awal ke
semua array pada awal deklarasi*/
kita juga dapat mendeklarasikan variabel array dengan jumlah elemen
tidak ditentukan, tetapi yntyuk hal ini inisial awal datanya harus diberikan.
Contoh
Char data[]; // sintaks yang salah
Char data[]={0,1,2,3,4,5,6,7};//sintaks yang benar
Deklarasi variabel array dengan jumlah elemen yang tidak ditentukan
biasanya digunakan untuk menyimpan data string. Semisal.
Char huruf*+=,pololu 3pi-;
Atau
Char huruf*+=pololu 3pi;
Unsigned int nama [2] [5]; //deklarasi penggunaan array dua dimensi dengan jumlah
//elemen 2 dan 5 dengan tipe variable unsigned int
Nama [0] [0] = 10;
// pemberian nilai ke array baris 0 kolom 0
Nama [1] [3] = 1;
// pemberian nilai ke array baris 1 kolom 3
Unsigned int nama [2] [5] =
{
{10,2,43,56,12},
{23,4,1,9.100,5}
}; /* pemberian nilai ke masing-masing array pada awal deklarasi */
i.

Fungsi

Fungsi adalah sekumpulan pernyataan-pernyataan yang dkemas jadi satu


wadah kemudian diberi nama dan selanjutnya dapat dipanggil berulang-ulang.
Dengan fungsi kita dapat memecah beberapa program yang kompleks menjadi
beberapa bagian kecil.
Fungsi pada program bahasa C, dalam pembuatannya di awali dengan kata Void lalu
di ikuti

dengan pengenalnya. Dan jika kita menggunakan perulangan yang menggunakan variabel
kita bisa
tulis setelah pengenal dengan membuka tanda kurung, atau jika tidak kita tuliskan tanda ().

Contoh penulisanya:
Void maju()
{
...
}

//fungsi tanpa nilai variabel


//tanda pembuka fungsi
//isi dari fungsi maju
//tanda penutup fungsi

Void kedip(unsigned char data;) //fungsi dengan nilai variabel tanda


{
//pembuka fungsi
//isi dari fungsi kedip
}
//tanda penutup fungsi
Pada program dengan bahasa C yang kita gunakan kita harus menulis
fungsi utama dari program ini dengan menuliskan int main() jika tidak kita
tuliskan maka program tidak akan di eksekusi oleh kontroller.
Contohnya pemangilan fungsi:
Int main()
//fungsi utama pada program
{
//tanda pembuka fungsi
utama maju()
//memanggil fungsi maju
kedip(5)
//memanggil fungsi kedip dan memberikan nilai 5
}
//tanda penutup dari fungsi utama

j.
Goto
Goto di gunakan melompat ke baris program tertentu (jika di dalam fungsi
tidak dapat keluar ke fungsi lainya) yang telah di beri label.
Cara penulisanya:
Goto perintah;
Perintah adalah label yang telah di defnisikan sebelumnya
Contohny
a: Jalan:
..
..kode program..

Goto jalan;
k.
Continue
Perintah ini digunakan untuk melewati satu pernyataan/operation jika
dalam kondisi tersebut tidak melakukan operation apapun
Contohny
a:
If(a==15
)
// memeriksa kondisi a (variable) jika nilainya 15
{ continue; }

/* operation continue ini diisi continue artinya tidak ada perintah apapun
jika nilainya benar */ Else
// perintah jika nilainya tidak sama

// kode program jika nilainya tidak sama

l.

Break

perintah break digunakan untuk untuk keluar dari looping atau keluar dari
salah satu operation. Perbedaanya dengan continue, continue hanya
melewatkan perintah di salah satu operation jika tidak ada perintah, namun
perintah break di gunakan untuk keluar jika ada perintah ataupun tidak ada
perintah dalam suatu operation. Perintah break biasanya terdapat di fungsi
switch case.
Contohnya:
Switch (
data )
{
Case 10 : data ++;
break; Case 20 :
data --; break;
}
m. Super loop
Perintah ini di gunakan untuk mengulang perintah tanpa henti dari awal ke
akhir dan kembali lagi ke awal terus menerus (namun dapat keluar dari
looping/perulangan ini jika ada perintah break). Untuk perintah ini di tuliskan
perintah while namun kita tidak menaruhkan kondisi tapi kita berikan angka 1,
selain while kita juga bisa menggunakan for yang di dalam kurungnya di berikan
tanda ; ; Cara penulisanya:
While(1)
{

}
Atau
:
For( ; ; )
{

Automation Technology
Education Center

MEMPROGRAM 3pi ROBOT

6.1.
Instalasi
programmer

interface

Untuk melakukan aksi menggunakan 3 robot lebih dari demo program kita
harus memprogram
3 robot, dan untuk melakukanya kita butuh perantara dari computer ke 3 robot
yaitu USB AVR programmer yang berfungsi memberikan program dari computer
ke 3 robot. Dan sebelum menggunakanya kita harus terlebih dahulu
menginstallalsi software untuk programmer tersebut.
Untuk programmer ini kita menggunakan pololu usb avr programmer
untuk memprogram mikrokontroller pada 3 robot.
a.
Prosedur penggunaan dan
laranganya:
Pastikan tangan dalam kondisi kering dan tidak kotor dalam menyentuh
alat ini, dan untuk menghindari kerusakan jangan dekatkan alat ini dengan
benda yang memiliki elektrosatis, dan jika menyentuh alat ini pegang bagian
sampingnya usahakan jangan terlalu sering menyentuh bagian permukaan dari
alat ini. Bentuk dari USB downloader ISP dapat dilihat pada gambar 6.1

Gambar 6.1 USBDownloader ISP


pololu 3pi
Untuk mengkoneksikanya pasangkan USB downloader ke kabel mini-USB yang
ada di programmer dan koneksikan 6 pin ISP ke robot dengan kabel 6 pin
konektor yang sudah tersedia.
Indicator
led
dari
programmer ini :
green led / led hijau menandakan status dari USB ke alat, jika pertama di
pasang led akan berkedip secara perlahan dan menandakan alat ini belum
terinstall, dan jika sudah menyala berarti alat ini sudah terinstall dan siap di
gunakan
yellow led / led kuning menandakan programmer ini sudah terkoneksi
dengan robot dan led ini akan berkedap-kedip namun jika belum menyala
artinya programmer belum terkoneksi degan baik, namun jika sudah
terkoneksi tapi belum menyala periksa power dari robot
red led / led merah menandakan programmer ini belum terkoneksi dengan

Automation Technology

Education Center
robot dan led ini akan berkedip secara perlahan, namun jika led ini berkedip
secara cepat dan led berwarna kuning juga ikut berkedip cepat tandanya
programmer ini sedang memberikan data program ke robot.

Penjelasan tentang pin tambahan di


programmer:
VBUS pin ini untuk memberikan tegangan dari
teganganya 5V dan dapat di bebani arus sampai 100mA

kabel

USB

yang

Automation Technology
Education Center

GND pin ini terkoneksi dengan nilai negative


pada kabel USB
TX dan RX adalah TTL (Transistor Transistor Logic) serial port yaitu adapter
dari USB ke serial TTL yang teganganya 0-5Volt, pin TX sebagai output ke
robot (jika menggunakan serial) di pin RX dari robot, dan pin RX berfungsi
sebagai input yang menerima data dari pin TX pada robot
Pin A dan B adalah serial control dari usb, jika ingin lebih mengetahui
silahkan download fle pdf tentang pololu_usb_avr_programmer di pololu.com
Pada pin ISP terdapat 6 pin sebagai berikut:
MISO adalah Master in Slave out pin ini berfungsi sebagai penerima data dari
mikrokontroller
AVR pada 3 robot ke programmer bahwa data sudah di terima oleh mikrokontroller.
VDD adalah penerima tegangan dari mikrokontroller untuk mengetahui jika
programmer sudah terkoneksikan dengan robot, jika pin ini sudah mendapat
tegangan dari robot maka lampu led kuning akan berkedap-kedip artinya
programmer sudah terkoneksikan dengan robot, dan jika belum maka led
berwarna merah akan berkedap-kedip catatan: pin ini tidak bisa digunakan
sebagai sumber tegangan
SCK adalah pin untuk komunikasi dengan mikrokontroller di robot, jadi pin
ini adalah keluaran dari programmer untuk memberikan sinyal komunikasi ke
mikrokontroller bahwa programmer akan memberikan program ke
mikrokontroller
MOSI adalah Master Out Slave In pin ini memberikan data program ke
mikrokontroller dari programmer yang dikirimkan dari usb computer ke
programmer.
RST adalah reset maksudnya pin ini akan memberikan logika
rendah ke pin reset di mikrokontroller yang artinya mikrokontroller
harus
dalam
keadaan
reset
selama program
di download ke
mikrokontroller
GND adalah ground atau negative dari computer dan pin ini harus
terkoneksikan ke ground dari robot
b.

Installasi Driver USB Downloader


Untuk programmer ini dapat digunakan pada operating system:
Windows XP (SP3), Windows Vista, dan linux

Catatan: untuk aplikasi SLO scope programmer hanya bisa dilakukan


pada windows dan programmer ini tidak compatible dengan operating system
mac

Automation Technology
Education Center

instalasi di windows
Catatan:
Jika kita menggunakan windows XP selain SP3 harus mendownload fle HOTFIX
KB9168365
(http://support.microsoft.com/kb/918365 ) dan fle ini harus terinstall
terlebih dahulu sebelum menginstall driver dari programmer
Sebelum kita menginstall driver dari programmer ini harus terlebih dahulu:
o Download dahulu driver dari programmer, confgurationya, dan software applikasi
untuk SLO
scope (http://pololu.com/file/download/pgm03a_windows_090605?
fle_id=0J198) (4988k.zip)
o Kemudian ekstrak fle zip tersebut
o Buka fle yang sudah terekstrak tersebut, klik kanan pada fle pgm03a.inf lalu pilih install.
Dapat
dilihat pada gambar 6.2.

Gambar 6.2 fle


pgm03a.inf
o Setelah memilih install windows akan merekomendasikan bahwa alat
belum di test (jangan koneksikan dengan programmer dahulu) dan Microsoft
akan merekomendasikan untuk menghentikan instalasi lalu pilih continue
anyway (windows XP) dan install this driver software anyway (windows
Vista). Dapat dilihat pada gambar 6.3

Automation Technology
Education Center

Gambar 6.3 software installation and continue anyway

Automation Technology
Education Center

Pengguna windows Vista:


Setelah fle inf terinstall computer sudah otomatis akan menginstall
software driver dari programmer ketika programmer terkoneksi dengan
computer
Pengguna windows XP:
Setelah fle inf terinstall ikuti langkah selanjutnya
o Koneksikan programmer dengan computer di usb. Programmer akan
tebaca pada windows sebanyak 3 device
o Setelah muncul tampilan Found New Hardware Wizard pilih no, not this time lalu pilih
next

o Lalu akan muncul tampilan kedua dari found new hardware wizard lalu pilih
Install the
software automatically dan next

o Windows xp akan kembali untuk memperingatkan kita bahwa hardware ini belum di
test oleh
Microsoft dan pilih continue anyway

Automation Technology
Education Center

o Jika sudah selesai akan tampil seperti gambar di bawah, karena ada tiga device maka
ulangi
langkah found new hardware wizard sampai 3 kali

Jika menggunakan operating system windows XP mungkin ada masalah pada


penginstallan serial port drivers, untuk kasus ini mungkin file usbser.sys tidak
terdapat pada system32 pada windows dan hal ini juga dapat mempengaruhi
programmer untuk koneksi ke robot. Untuk itu disarankan gunakan windows XP
(SP3) atau download fle HOTFIX KB918365
Jika sudah selesai menginstall driver dari programmer periksa pada
device manager untuk melihat device yang sudah kita install sebelumnya pada
ports(Com and LPT) akan muncul 2 device diantaranya pololu usb AVR
programmer programming port dan pololu usb AVR programmer serial TTL
port dan akan muncul pololu USB device yang isinya pololu USB AVR
programmer.

Automation Technology
Education Center

Jika ingin lebih mengetahui tentang applikasi tentang programmer lainya


silahkan download fle pdf tentang pololu usb avr programmer di pololu.com
Installasi
software
dan avr studio

winavr

Untuk memprogram 3 robot tentulah kita membutuhkan software


untuk membuat program dan mendownload program ke robot.
Software yang digunakan adalah:
o winAVR adalah software yang berfungsi untuk mengkompilasi program
yang kita tulis dalam bahasa C ke fle hex, karena mikrokontroller hanya bisa
menerima fle dalam bentuk bilangan heksa. Software ini open source artinya
dapat didownload secara Cuma-Cuma [http://winavr.sourceforge.net/]
o AVR Studio 4 software ini adalah buatan dari ATMEL (pabrikan
mikrokontroller) yang kerja software ini berdasarkan winavr artinya software
ini mengkompilasi program bahasa C ke fle hex menggunakan winAVR dan
software ini juga yang mendownload fle hex hasil kompilasi ke mikrokontroller
atau software ini sebagai eksternal dari winavr. Dan software ini juga dapat
didownload secara Cuma-Cuma [http://www.atmel.com/avrstudio/]
Catata
n:
Untuk memprogram 3 robot juga dapat menggunakan software Arduino IDE
dengan ekternal ICSP untuk mendownload program ke 3 robot, tapi kita tidak
akan membahas menggunakan software tersebut untuk
mengetahuinya
silahkan download fle programming 3 robot from the Arduino Enviroment
[http://www.pololu.com/docs/0J17]
Untuk kedua software tadi lakukan installasi pada computer atau laptop seperti
menginstall software biasa.

Automation Technology
Education Center

1.

Menginstallasi library untuk pololu

Library C/C++ dari pololu memudahakan kita untuk memprogram 3 robot


karena pada library tersebut sudah terdapat perintah-perintah untuk
mengendalikan output-output dan input tanpa kita harus mengkonfgurasi pinpin pada mikrokontroller di 3 robot. Untuk menggunakan perintah- perintah
yang terdapat pada library akan di bahas pada bab berikutnya, tapi sebelum itu
kita harus menginstallasi library tersebut.
Sebelum memulai installasi terlebih dahulu kita download fle library tersebut
di Pololu AVR Library [http://www.pololu.com/file/download/libpololuavr-091106.zip?file_id=0J262] (1064k zip) yang di rilis pada tanggal 2009-1106
Setelah fle didownload ekstrak fle zip tersebut ke direktori yang ditentukan dan folder
libpololuavr
.
Installasi
automatic

secara

Buka folder libpololu-avr klik file install.bat atau dengan menulis make
install di command
promp
t.
Catatan: untuk windows vista klik kanan pada fle install.bat dan pilih
run as administrator
Installasi
manual

secara

Sebelumnya kita sudah menginstall program winAVR terlebih dahulu yang akan
kita gunakan untuk mengkompilasi program agar dapat diubah menjadi fle hex
yang dapat didownload ke mikrokontroller.
Lokasi library dari winavr ada pada C:\WinAVR-20080610\avr, nah kita tinggal
menambahkan saja fle-file library dari pololu.
Langkah
pertama
copy
fle
libpololu_atmega48.a,
libpololu_atmega168.a,
dan libpololu_atmega328p.a ke sub folder
C:\WinAVR-20080610\avr\lib.
Lalu
copy
folder
pololu
diekstrak ke C:\WinAVR20080610\avr\incl
ude.

pada

library

pololu

yang

sudah

Automation Technology
Education Center

Dan jika sudah periksa ke folder seperti gambar dibawah ini

Membuat program sederhana dan cara konfgurasi pada avr studio 4


Untuk membuka program sederhana yang sudah tersedia untuk 3 robot
sudah tersedia pada fle libppololu-avr yang sudah diekstrak. Langkah untuk
mendowload program sederhana adalah:
1.

Pertama buka software AVR studio 4, caranya tekan button windows


pilih all program lalu pilih atmel avr tools dan klik avr studio 4 Lalu akan
muncul tampilan seperti di bawah ini, pilih open pada bagian atas.

2.

Lalu browsing file simple test pada folder libpololu-avr, lalu pilih folder
example kemudian atmega328p
(karena
3
yang
kita
pakai
menggunakan atmega 328p) lalu ke folder simple test, dan buka fle
yang berekstansi aps

Automation Technology
Education Center

3.

4.

Setelah itu akan muncul tampilan seperti di bawah ini

Lalu compile program tersebut dengan cara menekan tombol F7 atau


pilih build>bulid lalu jika program eror atau terdapat peringatan akan
tampilan tulisan berwarna merah dan hijau di bagian bawah. Jika
program telah sukses di compile akan muncul kata-kata build
succeded with 0 warning dan hasil fle yang telah tercompile bernama
test.hex terdapat pada folder libpololu-avr\examples\atmegaxx8\simpletest-3pi\default

Larangan: jangan memprogam 3 robot jika battrai dalam kondisi lemah atau
belum di charge, karena dapat membuat 3 robot rusak dan tidak dapat
diprogram kembali.
Catatan: pastikan programmer sudah terinstall secara benar sesuai dengan
cara seperti sudah di jelaskan sebelumnya.
Sebelum memprogram 3 robot pastikan 3 robot sudah terkoneksi dengan
programmer dan programmer sudah terkoneksi usb computer seperti gambar
di bawah ini,

Automation Technology
Education Center

Setelah terkoneksi dengan baik dan benar, untuk mengkoneksikan program


avr studio 4 yang menggunakan perintah avr isp ke programmer dari 3
robot, pilih Tools> Program AVR> Connect, pilih AVRISP dan sebelah
kananya pilih auto lalu connect

Automation Technology
Education Center

Jika sudah terkoneksi akan muncul tampilan window STK500 in ISP mode
with ATMEGA 328p untuk mendownload program ke 3 robot kita download
kan fle test.hex hasil yang telah di compile sebelumnya, untuk
melakukanya kita pilih pada tab program bagian fash dan membrowsing
filenya clik ... yang berada pada kanan dari program lalu browse fle
tersebut di folder yang telah di jelaskan sebelumnya. Lalu jika fle sudah di
pilih klik program, pada saat memprogram led berwarna merah dan kuning
akan berkedip secara bergantian.
Setelah program sukses terdownload ke 3 robot, kalian akan mendengar nada pendek,
tampilan
pada lcd bertuliskan hello! dan led berwarna merah dan hijau akan berkedip secara
bergantian.
Jika ingin menggunakan 3pi robot dengan contoh program lainya lakukan
dengan cara yang sama.

Automation Technology
Education Center

COMMAND-COMMAND PADA LIBRARY POLOLU

7.1
LED
(Light
Emiting Diode)
Led adalah paling simple dalam penggunaanya untuk indicator. Catatan green led atau
right led
akan menyala secara berkedip jika mengirimkan data ke lcd karena pin yang
digunakan untuk led
sama dengan pin yang salah satunya digunakan untuk pengiriman data ke lcd.
Dan pada 3pi robot kita bisa memasang led di tampilan atas lihat bagian
accessories
Command untuk led:
a.
Green_led(data)
atau
right_led(data)
Command ini untuk menyalakan led sebelah kanan atau led berwarna hijau
data yang
diisikan 1 atau 0 yang artinya 1 menyala dan 0 mati atau kita dapat
menuliskan LOW artinya mati atau HIGH artinya menyala pada isian data
b.
Red_led(data)
atau
left_led(data)
Command ini untuk menyalakan led sebelah kiri atau led berwarna merah data yang
diisikan
1 atau 0 yang artinya 1 menyala dan 0 mati atau kita dapat menuliskan LOW
artinya mati atau HIGH
artinya menyala pada
isian data
7.2 Timer Atau
Delay
Timing atau delay ini mengunakan kinerja komponen yang bernama crystal
yang berguna sebagai pembangkit sinyal frekuensi untuk mikrokontroller
mengeksekusi program, crystal pada 3pi robot bernilai 20Mhz, artinya dalam
waktu satu detik mikrokontroller dapat mengeksekusi perintah sebanyak
20.000.000 perintah. Hubunganya dengan delay adalah proses eksekusi tersebut
dimanfaatkan untuk penundaan waktu atau delay, di dalam mikrokontroller
sudah terdapat fasilitas timer yang ketika mikrokontroller dinyalakan timer ini
mulai menghitung artinya dalam waktu satu detik sudah terdapat 20.000.000
nilai hitungan.
Command-command pada delay adalah
a.
delay_ms(nilai) atau
delay(nilai)
kita harus memasukan nilai dan nilainya berupa tunda dalam hitungan millisecond
kalau kita
masukan
1000 artinya
satu detik.
b.
delayMicroseconds(nilai) atau
delay_us(nilai)

Automation Technology

Education Center
kita harus memasukan nilai dan nilainya berupa tunda dalam hitungan
microsecond kalau kita masukan 1.000.000 artinya satu detik.

c.
Time_reset()
command ini adalah fungsi jadi kita harus menulis () , dan ini berfungsi
sebagai me-reset nili timer yang pertama kali nilainya sudah mulai menghitung.
d.
Get_ms() atau
milis()
command ini berupa nilai penyimpanan data penghitungan dari awal dinyalakan tapi
nilainya
dalam bentuk millisecond dan penyimpanan ini berupa unsigned long artinya
dapat menyimpan waktu sampai 4.294.967.295ms atau sekitar 49hari. Kita bisa
ambil datanya menggunakan perintah ini atau kita dapat melakukan pengecekan
datanya

Automation Technology
Education Center

contoh:
Hidupkan lampu_a jika sudah dinyalakan selama 5detik jika belum 5 detik matikan lampu_a
#include <pololu/3pi.h>
int main()
{
if(get_ms == 5000)
{lampu_a =
1;}
else
{lampu_a = 0;}
}
7.3 Buzzer
untuk buzzer pada 3 robot dihubungkan dengan keluaran pwm (pulse with
modulation), jadi
frekwensi keluaranya dapat kita atur sehingga membuat suara dari buzzer dapat berubah
-ubah dan
membentuk nada-nada, tapi kita tidak perlu pusing-pusing memikirkan keluaran datanya
karena
pada library sudah di sediakan perintah yang cukup menuliskan not baloknya saja,
commandnya:
a. Play(data)
Isi data yang bisa kita gunakan adalah:
Data/Nada
A s/d G
R
>
<
+ atau #
.
O
T
L

V
MS
ML
!
1 s/d 2000

keterangan
adalah not-not balok yang dapat kita gunakan
ini dituliskan untuk tempo nada
ini digunakan untuk menaikan not didepan tanda ini satu oktaf
ini digunakan untuk menurunkan not didepan tanda ini satu oktaf
tanda ini dituliskan setelah not untuk menaikan not satu
setengah langkah lebih cepat nadanya
tanda ini dituliskan setelah not untuk menurunkan not satu
setengah langkah lebih cepat nadanya
Tanda ini dituliskan setelah not untuk menambahkan waktu
lamanya not berbunyi sebanyak 50%
untuk menaikan oktaf dengan nilai yang di tentukan contoh (O4)
untuk tempo dengan nilai yang di tentukan contoh (T120)
digunakan untuk mensetting nilai lamanya not berbunyi nilainya
adalah 4 untuk seperempat nada, 8 untuk seperdelapan nada,
dan 16 untuk seperenambelas nada. Settingan defaultnya
adalah
(L4) seperempat
nada.
untuk mensetting
volume
dari nada nilainya 0-15, defaultnya (V15)
untuk mensetting semua subsequent nada dalam nada staccato
mensetting semua subsequent nada dalam legato. Setinggan ini
adalahini
defaultnya
tanda
untuk mereset kembali octave, tempo, duration, volume
,dan staccato
kembali
ketuliskan
settingan
defaultnya
nilai
ini di
setelah
not untuk mensetting not
dibelakanganya dalam nilai
lamanya not

Automation Technology
Education Center

b.
Play_from_program_space(da
tanya)
Penggunaan command ini sama dengan play tapi yang membedakanya adalah
penyimapanan
data notnya di dalam ram dari RAM, tujuanya untuk menghemat memory fash di
mikrokontroller. Untuk menggunakan fungsi ini terlebih dahulu kita harus
memasukan file header dari RAM menggunakan preprocessor #include dan fle
hedernya <avr/pgmspace.h>
Contohn
ya
#include <pololu/3pi.h>
//memasukan
fle header 3pi
#include <avr/pgmspace.h>
//memasukan fle
header //RAM
Const char melody*+ PROGMEM = !L16
V8 cdeafga;
/* deklarasi penggunaan memory di RAM dengan tipe variable char yang
namanya melody, progmem menandakan variable di lokasi RAM */
Int
main()
{ Play_from_program_space(
melody);
/* memanggil data yang sudah disimpan
sebelumnya di RAM */
}
c.
Stop_playing(
)
Command ini di gunakan untuk menghentikan bunyi buzzer ketika program
berhenti dan buzzer masih tetap berbunyi.
d.
Is_palying()
Command ini digunakan untuk memutar nada, supaya nada yang dihasilkan sesuai
dengan
nadanya. Jika menggunakan command play(data) saja nada yang dikeluarkan
akan sulit dibedakan.
7.4
Pushbutton
Untuk penggunaan pushbutton pada 3 robot kita dapat aplikasikan dalam
banyak hal contohnya untuk pengaturan kecepatan sebelum berjalan,
pengaturan kepekaan sensor dan lain-lain. Pada 3pi robot terdapat 3buah
pushbutton yaitu A,B dan C yang dapat kita gunakan untuk hal-hal tersebut,
commandnya:
a.
Wait_for_button_press(but
ton)

Automation Technology
Education Center

Command ini digunakan untuk menunggu tombol di tekan, dan button adalah
tombolnya dan
isinya adalah BUTTON_A ,BUTTON_B ,dan BUTTON_C
diisikan pada button.
b.
Wait_for_button_release(bu
tton)
Command ini digunakan untuk menunggu tombol dilepas, dan button adalah
tombolnya dan
isinya adalah BUTTON_A ,BUTTON_B ,dan BUTTON_C
diisikan pada button
c.
Wait_for_button(butt
on)
Command ini digunakan untuk menunggu tombol ditekan lalu menunggu
lagi tombol di lepas, dan button adalah tombolnya dan isinya adalah
BUTTON_A ,BUTTON_B ,dan BUTTON_C diisikan pada button
d.
Button_is_pressed(but
ton)
Sedangkan command ini bisa kita gunakan pada control aliran program
dan dituliskan pada kondisi dari control aliran program. Isi dari button adalah
BUTTON_A ,BUTTON_B ,dan BUTTON_C

Automation Technology
Education Center

7.5 Pembacaan Nilai Analog Pada Nilai Tegangan Battrai Dan Nilai Trimpot
Pada rangkaian schematic di 3 robot tegangan dari battrai sebelum di naikan ke
regulator di
hubungkan dengan pin ADC 6 dari mikrokontroller dengan jumper yang terdapat
pada bagian depan dari 3pi robot. Jadi kita dapat memantau tegangan dari 3pi
robot, tujuanya agar kita dapat melihat berapa jumlah tegangan dari battrai
pada saat memprogram, dan apabila battrai dalam kondisi lemah kita dapat
mengetahuinya, commandnya adalah
a. Read_battery_milivolts_3pi()
Command ini merupakan data penyimpanan untuk mengakses pembacaan
nilai battrai. Mengakses data ini kita dapat memindahkan datanya ke variable
atau langsung menampilkan data
pembacaanya langsung ke lcd, dan hasil pembacaanya dalam nilai milivolt.
Commandnya:
read_battery_millivolts_3pi();
b. Pembacaan nilai trimpot
Karena komponen ini menggunakan ADC kita dapat men-set nilainya menjadi 8bit atau
10bit, jika
menggunakan 8bit hasil nilainya 0-255 untuk men-set dalam nilai ini kita harus menuliskan
command
set_analog_mode(MODE_8_BIT) sebelum menuliskan pembacaan nilai
trimpotnya. Untuk
menggunakan nilai 10bit hasil nilainya 0-1023 untuk men-set dalam nilai ini
kita harus menuliskan command set_analog_mode(MODE_10_BIT) sebelum
menuliskan pembacaan nilai trimpotnya. Command pembacaan nilai trimpot:
read_trimpot();
Command ini merupakan data penyimpanan untuk mengakses data ini kita
dapat memindahkan datanya ke variable atau langsung menampilkan data
pembacaanya langsung ke lcd.
7.6 LCD (Liquid Cryatak Display)
LCD pada 3 robot menggunakan lcd yang berukuran 8x2 artinya terdapat 8
kolom 2 baris. Dan hanya bisa menampilkan 16 karakter. Dan untuk lcd
menggunakan transfer data 4 bit untuk protocol lcd HD4470, untuk menghemat
jumlah pin di mikrokontroller dan setiap karakter datanya 8 bit jadi pengiriman
datanya dilakukan dua kali. Tapi pada command pololu kita tidak perlu pusing
tentang itu karena sudah tersedia command-command yang memudahkan kita
dalam menampilkan data ke lcd. Commandnya adalah:
a. clear()
Fungsi dari command ini untuk mengosongkan data yang sebelumnya sudah
terisi di lcd. Dan krusor lcd akan berada pada pojok kiri atas atau pada koordinat
(0,0)
b. lcd_goto_xy(x,y)
Fungsi ini untuk memindahkan krusor ke posisi yang kita inginkan, x untuk data kolom
maksimal
7 (karena hanya terdiri 8 kolom 0-7) dan y untuk data baris maksimal 1 (karena hanya terdiri

Automation Technology
Education Center

2 baris
(0-1). Contohnya lcd_goto_xy(3,1);
c. print_character(data)
Fungsi ini kita hanya dapat menampilkan 1 buah karakter saja dan akan
tampil dimana krusor dari lcd diarahkan sebelumnya jika belum diarahkan secara
default akan tampil pada krusor (0,0)
Contoh:
lcd_goto_xy(1,0)
;
Print_character(
A);

Automation Technology
Education Center

d. print(data);
Perbedaan fungsi ini dengan print_character adalah jika pada print_character
hanya dapat menampilkan satu karakter saja tapi pada perintah print() dapat
menampilkan beberapa karakter secara bersamaan, dan huruf awal akan berada
dimana krusor diarahkan sebelumnya.
Contoh:
lcd_goto_xy(0,
0);
Print(ROBOTA
);
Catatan untuk menampilkan lebih dari satu karakter gunakan dan jika satu karakter saja
gunakan

e. print_from_program_space(datanya)
Penggunaan ini sama dengan play_from_program_space hanya saja ini untuk
menampilkan data di lcd bukan untuk memainkan suara di buzzer.
Contoh
#include <pololu/3pi.h>
#include <avr/pgmspace.h>
const char tampilkan*+ = Hello;
int main()
{
Print_from_program_space(tampilkan);
}
f.

print_hex(data)
Perintah ini untuk menampilkan data bilangan dalam bentuk heksa decimal.

g. print_binary(data)
Perintah ini untuk menampilkan data bilangan dalam bentuk binary
h. print_long(data)
Perintah ini digunakan untuk menampilkan data variable dan bentuk
variable maksimal dalam bentuk long,
Contohnya:
long a;
int c;
int main()
{
a =-6000; c
= 1000;
print_long(a
);
print_long(c
);}
i. print_unsigned_long(data)
Peritah ini sama dengan print_long hanya saja data yang akan di tampilkan tidak boleh

Automation Technology
Education Center

bernilai
negative.

Automation Technology
Education Center

j.

lcd_move_cursor(perintah)
Command ini untuk memindahkan krusor, isi dari perintahnya adalah LCD_LEFT dan
LCD_RIGHT.

k. lcd_show_cursor(perintah)
Command ini berfungsi untuk menampilkan krusor dan isi perintahnya
CURSOR_BLINKING untuk tampilan krusor yang berkedip dan CURSOR_SOLID
untuk tampilan krusor dengan penuh warna hitam
l.

lcd_hide_cursor()
Command ini untuk menyembunyikan krusor

m. lcd_scroll(arah, nilai, delay)


Command ini untuk menggeser data pada lcd untuk arah perintahnya
LCD_LEFT dan LCD_RIGHT, untuk nilai adalah jumlah pergeseran contoh jika
nilainya 1 akan berpindah 1 kali baris kesamping dan delay adalah untuk
lamanya pergeseran data di lcd sesuai arahnya satuanya dalam millisecond
n. load_custom_character(data_gambar, nomor)
Fungsi command ini untuk menampilkan data gambar pada sebuah
karakter atau lebih, pada data gambar di satu karakter dari lcd terdapat 5x8
pixel, data pixel tersebut dapat kita desain sendiri dan penggunaan command ini
juga menggunakan program space di RAM, dan nomor untuk mewakilkan data
yang kita telah gambar pada karakter nilinya antara 0-7, dan setelah perintah ini
dituliskan harus ada perintah clear() dan untuk menampilkan hasil gambaran kita
gunakan perintah print_character(nomor) nilai nomor adalah nilai yang tadi kita
gunakan untuk mewakilkan gambar tadi 0-7
Contoh programnya:
#include <avr/pgmspace.h>
#include <pololu/3pi.h>
Const char smile[] PROGMEM =
{
0b00000,
//pembuatan gambar untuk karakter
0b01010,
//dengan pixel lcd
0b01010,
0b01010,
0b00000,
0b10001,
0b01110,
0b00000 };
Int main();
{
load_custom_character(smile, 1); /*gambar diwakilkan dengan angka 1*/
clear(); /* perintah clear untuk mengosongkan lcd sebelum menampilkan gambar*/
print_character(1); //tampilkan gambarnya
}

Automation Technology
Education Center

7.7
Motor
control
Untuk motor kontrol menggunakan PWM pada mikrokontroller untuk mengatur
kecepatan
putaran motor penggerak pada 3 robot. Output PWM dari kedua motor ini
menggunakan fungsi timer 0 dan timer 2 pada mikrokontroller.
Commandnya
adalah:
a.
set_m1_speed(spe
ed)
Command ini digunakan untuk mengendalikan putaran motor sebelah kiri dari
3 robot. Untuk speed diisikan dengan nilai -255 sampai dengan 255 artinya
jika nilainya positif akan berputar
kedepan dan jika nilainya negative akan berputar kebelakang dan jika
nilainya 0 motor akan mati
b.
set_m2speed(spe
ed)
Command ini digunakan untuk mengendalikan putaran motor sebelah
kanan dari 3 robot. Untuk speed diisikan dengan nilai -255 sampai dengan 255
artinya jika nilainya positif akan berputar kedepan dan jika nilainya negative akan
berputar kebelakang dan jika nilainya 0 motor akan mati
c.
set_motors(m1speed,m2s
peed)
Sedangkan command ini digunakan untuk mengendalikan dua putaran motor secara
bersamaan
nilainya sama seperti
diatas
7.8 Sensor Garis
3 Robot
Pada pembacaan sensor garis kita menggunakan sensor refectance digital, sensor garis
pada 3
robot terdiri dari 5 sensor yang terpasang pada pin PC0, PC1, PC2, PC3 dan
PC4 dan pada pin PC5
digunakan sebagai pengatur kecerahan dari pemancar infrared dari masingmasing sensor, pemancar infrared dapat kita setting menyala ataupun tidak. jika
digunakan pada ruangan yang banyak cahaya ataupun diluar ruangan kita tidak
perlu menghidupkan pemancar infrared untuk menghemat energi dari battrai
dan sensor dapat membaca secara optimal, tapi jika digunakan pada ruangan
tertutup dan sedikat cahaya maka sebaiknya pemancar infrared dihidupkan.
Seperti pada yang dikatakan sebelumnya di bab cara kerja 3 robot, diketahui
pada rangkaian sensor garis harus disetting output untuk mengisi arus ke
kapasitor hal ini akan kita lakukan sebelum membaca nilai sensor garis dengan
menggunakan command yang sudah tersedia pada library dari pololu.
Command untuk pembacaan nilai sensor ini adalah:

Automation Technology
Education Center

a. pololu_3pi_init(nilai)
Perintah ini digunakan untuk inisialisasi data, untuk isian nilai adalah lama
waktu untuk pengisian arus ke kapasitor, semakin gelap ruanganya semakin
lama pengisian arus kekapasitor agar sensor dapat bekerja dengan baik, dan
isinya antara 500 sampai dengan 3000, dan setiap satu nilai waktunya
0,4microsecond.

Conto
h:
pololu_3pi_init(20
00);
Artinya lamanya waktu pengisian arus ke kapasitor adalah 0,4microsecond *
2000 = 800microsecond atau 0,8milisecond

Automation Technology
Education Center

b. read_line_sensors(target, mode)
Ini adalah perintah untuk membaca sensor garis secara keseluruhan tapi kita
dapat memisahkan data masing-masing sensor sebelum melakukan perintah ini
pastikan inisialisasi seperti command diatas harus dilakukan terlebih dahulu,
isian dari target harus berupa variable bertipe unsigned int dan memiliki 5 array
karena sensornya 5, dan untuk isian dari mode bisa berupa IR_EMITTERS_ON
untuk perintah pembacaan sensor dalam kondisi infrared menyala, dan
IR_EMITTERS_OFF untuk perintah pembacaan sensor dalam kondisi infrared
mati
Contohnya:
unsigned int sensors [5];/*deklarasi variable bernama nama dengan 5 array*/
read_line_sensors(sensors, IR_EMITTERS_ON); /* perintah untuk membaca
nilai dari garis dan datanya dimasukan ke nama dengan mode infrared
menyala */
If (sensors [0] > 1000) /*pengecekan nilai sensor ke 0 atau paling pojok sebelah
kiri dengan control aliran if*/
If (sensors > 3000) /*pengecekan nilai sensor secara keseluruhan*/
Catatan: jika melakukan pengecekan nilai secara keseluruhan jika nilainya 0
artinya robot berada jauh di sebelah kanan dari garis dan jika nilainya 4000 robot
berada jauh di sebelah kiri dari garis
c. calibrate_line_sensors(mode)
Command ini digunakan untuk mengkalibrasi sensor garis isian dari mode
sama seperti mode diatas, dan nilai hasil kalibrasi akan menetukan nilai
maksimum dan nulai minimum pada medan di bawah robot tempat kalibrasi
d. read_line_sensors_calibrated(target,mode) atau read_line(target, mode)
Untuk command ini sama dengan read_line_sensors hanya saja yang
membedakan command ini membaca nilai yang sebelumnya sudah di kalibrasi,
jadi sebelum menggunakan command ini kalibrasi dahulu sensor garis
menggunakan calibrate_line_sensors
e. read_line_white(target, mode)
Command ini sama saja dengan command read_line hanya saja command
ini membaca garis yang berwarna putih dan jika digunakan pada line follower
harus berupa garis yang berwarna putih.

Automation Technology
Education Center

3pi ROBOT LINE FOLLOWER

Robot line follower adalah robot yang dapat mengikuti garis/jalur. Garis dibuat
dengan menggunakan bahan berwarna gelap dan daerah di sekitar berwarna
cerah atau sebaliknya. Robot menggunakan IR sensor untuk mendeteksi
jalur/garis yang dibuat.
Robot line follower ada 2 (dua) jenis yaitu robot line follower nonprogramming dan robot line follower programming.
Robot line follower non-programming adalah robot dengan system kerja
dengan mendeteksi dua kondisi saja yaitu mendeteksi ada tidaknya garis (0dan1)
dan tidak diperlukannya program dalam pembuatannya.
Robot line follower Programing adalah robot yang mempunyai system
pengolah digital dalam melakukan aksinya dan memiliki kecerdasan buatan.
Pada pembahasan 3 Robot line follower adalah robot line follower dengan
jenis programing. Programing robot digunakan untuk menentukan jalanya sendiri
sesuai sensor garisnya artinya kita memberikan kecerdasan buatan pada robot
dimana akan terjadi kemungkinan-kemungkinan dan robot harus menetukan
jalanya sendiri.
Kecerdasan buatan pada system kendali ada banyak macam dan jenisnya salah
satunya PID
(proportional, Integral, deravative).
8.1. PID Kontrol
Kecerdasan buatan pada aplikasi 3 robot line follower menggunakan PID
kontrol. PID singkatan dari ProportionalIntegralDerivative merupakan kontroler
untuk menentukan presisi suatu sistem instrumentasi dengan karakteristik
adanya umpan balik pada sistem tesebut. Komponen kontrol PID ini terdiri dari
tiga jenis yaitu Proportional, Integratif dan Derivatif. Ketiganya dapat
dipakai bersamaan maupun sendiri-sendiri tergantung dari respon yang kita
inginkan terhadap suatu tindakan kerja robot.
a. Kontroler Proporsional (P)
Pengaruh pada sistem :
1.
2.
3.

Menambah atau mengurangi kestabilan.


Dapat memperbaiki respon transien khususnya: rise time, settling time.
Mengurangi (bukan menghilangkan) Error steady state.

Catatan:
Untuk menghilangkan Error steady state, dibutuhkan KP (nilai proposional)
besar, yang akan membuat sistem
lebih tidak stabil. Kontroler Proporsional
memberi pengaruh langsung (sebanding) pada error. Semakin besar error,
semakin besar sinyal kendali yang dihasilkan kontroler. Untuk lebih
jelasnya maka lihat gambar berikut.

Automation Technology
Education Center

b.

Kontroler Integral (I)


Pengaruh pada sistem :
1.
2.
3.

Menghilangkan Error Steady State


Respon lebih lambat (dibandingkan dengan P)
Dapat Menambah Ketidakstabilan (karena menambah orde pada sistem)

Perubahan sinyal kontrol sebanding dengan perubahan error. Semakin


besar error, semakin cepat sinyal kontrol bertambah/berubah. Lebih jelasnya
maka lihat gambar berikut.

Automation Technology
Education Center

c.

Kontroler Derivatif (D)


Pengaruh
sistem :

pada

1. Memberikan efek redaman pada sistem yang berosilasi sehingga


bisa memperbesar pemberian nilai Kp
2.
Memperbaiki respon transien, karena memberikan aksi saat ada
perubahan error
3. D hanya berubah saat ada perubahan error, sehingga saat ada
error statis D tidak beraksi.Sehingga D tidak boleh digunakan sendiri
Besarnya sinyal kontrol sebanding dengan perubahan error (e)Semakin
cepat error berubah, semakin besar aksi kontrol yang ditimbulkan. Lebih
jelasnya maka lihat gambar berikut.

8.2. Penerapan PID pada 3pi Robot


Penerapan PID pada robot 3 Line Follower dan teknik yang digunakan pada
program PID yaitu untuk meningkatkan kinerja robot dalam mengikuti garis.
Kontrol PID merupakan sistem kontrol umpan balik (feed back).
- nilai proporsional pada system yang digunakan untuk membuat posisi tepat 0 pada
pusat garis
tengah. Jika robot berada sebelah kiri garis maka nilai posisi positif dan jika
berada pada sebelah kanan garis nilai posisi negative. Ini di hitung dari hasil
pembacaan read_line() dengan mengurangkan 2000

Automation Technology
Education Center

Integral nilai ini menyimpan kecepatan gerakan dari robot yang


sebelumnya sudah dilakukan, isinya menambahkan semua nilai proportional
sejak pertama robot mulai bergerak

Automation Technology
Education Center

Derivative nilai ini adalah rata-rata dari perubahan nilai proportional. Kita
menghitung nilai ini berdasarkan perbedaan dari dua nilai terakhir di
proportional

Dibawah ini merupakan code penghitungan dari rumus yang kita dapatkan
berdasarkan PID
diata
s:
Unsigned int sensors[5]; /*deklarasi variabel untuk target sensor*/
Unsigned int position; /*deklarsi varibel untuk penyimpanan data dari 5 sensor
secara keseluruhan*/
Int last_proportional; /*varaibel last propotional bertipe unsigned int*/
position = read_line_calibrated(sensors, IR_EMITTERS_ON); /* membaca nilai
keseluruhan dari sensor dan disimpan pada variabel position, apabila bernilai
dibawah 2000 berarti berada dikiri garis dan Jika bernilai lebih dari 2000 berada
dikanan garis */
int proportional = ((int) position) 2000; /*memindahkan data position ke
proportional dengan dikurangi 2000 untuk mendapatkan nilai 0 jika di tengahtengah garis*/
int derivative = proportional last_proportional; /*menentukan nilai derivative
dari hasil propotional di kurangi last propotional*/
integral += proportional; /*menetukan nilai integral berdasarkan nilai dari
proportional dengan rumus penambahan nilai ke integral untuk mendapatkan
nilai rata-rata*/
last_proportional = proportional; /* menympan data terakhir
proportional sebelum membaca Nilai sensor ke proportional lagi*/

dari

catata
n:
untuk proportional harus berupa variabel yang bertipe int karena jika
menggunakan Unsigned int tidak dapat menyimpan nilai negative hanya bisa
menyimpan nilai positive.
Dibawah ini merupakan perhitungan dari data PID yang sebelumnya sudah
disimpan di proportional, integral dan derivative untuk di umpankan ke motor
int power_diference; /*deklarasi variabel untuk penyimpanan hasil
perhitungan nilai PID*/
power_diference
=
proportional/10+integral/10000+derivative*3/2;
/*perhitungan nilai dari PID dan disimpan pada variabel power_diference
nilainya akan negative jadi harus menggunakan variabel tipe int dan untuk

Automation Technology
Education Center

mendapatkan respon lebih cepat dari sensor terhadap motor kita dapat
mengurangi nilai pembagian dari proportional*/
const int max = 60; /*deklarasi variabel yang konstan untuk pengaturan nilai
kecepatan maksimal dari robot kita dapat mengubahnya untuk mendapatkan
kecepatan yang lebih tinggi atau rendah*/
if(power_diference >
max )
{power_deifrence=max;}

Automation Technology
Education Center

if(power_diference < -max )


{power_deifrence=max;}
if(power_diference < 0)
{set_motors(max+power_diference, max);}
else
{set_motors(max, max+power_diference); } /*pemberian nilai kecepatan ke
motor dan
pengubahan nilai power diference terhadap nilai
dari max*/ Dibawah ini program PID dalam sub
program
void pid()
{
unsigned int
position; unsigned
int sensors[5]; int
integral=0;
int last_proportional=0;
while(1)
{
position = read_line(sensors,IR_EMITTERS_ON);
int proportional = ((int)position) - 2000;
int derivative = proportional - last_proportional;
integral += proportional;
last_proportional = proportional;
int power_diference= proportional/5+integral/10000+ derivative*3/2;
const int max = 250;
if(power_diference > max)
power_diference = max;
if(power_diference < -max)
power_diference = -max;
if(power_diference < 0)
set_motors(max+power_diference
, max); else
set_motors(max, max-power_diference);
}
}

Automation Technology
Education Center

PROJECT PERTAMA

9.1 Memulai project pertama


Project pertama ini lebih ditujukan agar Anda memahami urutan proses
yang harus dilakukan dari sisi software dan bagaimana memulai membuat
program-program nantinya. Sebagai contoh akan membuat led menyala
berkedip terus menerus. Berikut tahap-tahapanya.
1.
2.

buka program AVR studio yang telah di install


untuk membuat project baru, klik Tab project, seperti pada gambar 8.1.

Gambar 8.1 Tab


Project
3.

Selanjutnya pilih new project, seperti pada gambar 8.2.

Gambar 8.2 New


Project

Automation Technology
Education Center

4.

selanjutnya pilih AVRGCC pada menu, seperti pada gambar 8.3.

Gambar 8.3 AVR GCC


5.

selanjutnya beri nama project dengan catatan nama project tidak boleh
ada spasi, seperti pada gambar 8.4.

Gambar 8.4 pemberian nama project

Automation Technology
Education Center

6.

setelah nama project sudah di isi maka selanjutnya tempat menyimpan


fle/folder project akan di taruh di Harddisk mana semisal di C:\my
document\LED_kedip. Setelah itu tekan/klik next. Seperti pada gambar 8.5

Gambar 8.5 Tempat menyimpan fle/folder yang project


yang di buat
7.

setelah itu masuk ke menu prosesor mana yang digunakan nantinya


sebagai pengolah. Di karenakan pololu 3 menggunakan prosesor
Atmega328p maka pada menu kita pilih simulator2 dan pilih Atmega328p,
setelah itu klik fnish. Seperti pada gambar 8.6.

Gambar 8.6 menu untuk memilih prosesor yang


digunakan

Automation Technology
Education Center

8.

selanjutnya akan masuk di area kerja untuk membuat program, sebelum


membuat program ada beberapa setingan untuk untuk pololo 3. Berikut
setingannya.
a. masuk tab project seperti pada gambar 8.7

Gambar 8.7 tab project


setingan awal
b.

setelah itu masuk ke project confguration option seperti pada gambar 8.8.

Gambar 8.8 confguration


options

Automation Technology
Education Center

c. selanjutnya akan masuk ke menu konfgurasi, pada menu konfgurasi


pilih tab libraries, seperti pada gambar 8.9.

Gambar 8.9 menu


libraries
d.

pada menu libraries ini ada beberapa library yang ada, kita gunakan
salah satu dari beberapa library yang ada sesuai dengan pololu 3
yaitu libpololu_atmega328p.a dan klik add Library dan klik ok. Seperti
pada gambar 8.10

Gambar 8.10 penambahan library


pololo 3pi
9. setelah konfgurasi selesai kita siap menggunakan area kerja untuk memulai program.
10. Selanjutnya setelah program dibuat pada area kerja, kita akan mendownload hasil
program
kita pada robot dengan USB downloader yang telah disiapkan.
11. Dalam membuat program di AVR studio tidak bisa langsung di gunakan sebelum kita

Automation Technology
Education Center

compile
dalam bentuk hex. Jadi setelah selesai program, di compile terlebih
dahulu. Cara
mengkompile kita pilih tab build, seperti pada gambar 8.11.

Automation Technology
Education Center

Gambar 8.11 Tab Build untuk mengkompile program yang telah dibuat.
12. Selesai mengkompile proses selanjutnya mendownlod ke robot,
dengan mengklik Tab connect, untuk konfigurasi USB downloader yang
dipakai, karena kita menggunakan USB downloader tipe ISP maka pilih
ISP, maka pilih AVRISP dan pilih com mana yang telah terinstal USB
downlodernya semisal com4 dan selanjutnya pilih connect. Seperti pad
gambar
8.12.

Gambar 8.12 konfgurasi koneksi USB downloader

Automation Technology
Education Center

13. Setelah confgurasi selesai dan click connect maka akan tampil menu seperti pada
gambar
8.13.

Gambar 8.13 menu ISP


program
Dari menu diatas selanjutnya clik () yang berada di sebelah kanan,
lalu browser file hasil compile dimana tempat awal menyimpan fle project
dengan extensi .hex yang berada di folder default. Seperti pada gambar 8.14.

Gambar 8.14 tempat fle project di


simpan

Automation Technology
Education Center

Selanjutnya clik open, dan akan kembali lagi ke menu awal, setelah itu clik
tab program yang berada di menu fash, seperti pada gambar 8.15. Setelah
proses ini program secara automatis akan mendownload fle hasil kompile ke
robot dan program siap di jalankan.

Gambar 8.15menu fas untuk mengkompile fle .hex


9.2 Contoh-Contoh Program
a.

Program menghidupkan led.

#include <pololu/3pi.h> // preprosesor


int main () // main program (program utama)
{
red_led(1); /*command untuk menghidupkan lampu red warna merah*/
green_led(1); /*command untuk menghidupkan lampu led warna hijau*/
}
Pada contoh program diatas maka eksekusi program yaitu
menghidupkan led merah dan led hijau.
b.

program menghidupkan buzzer


#include <pololu/3pi.h>
#include <avr/pgmspace.h>
const char go[] PROGMEM = "L16 cdegreg4"; /* pendeklarasian
constanta go bertipe char yang di simpan pada program space di
RAM */
int main()
{
play("a"); //command untuk memutar nada a.
while(is_playing());/*command untuk memutar nada agar nada
yang di keluarkan oleh buzzer sesuai*/
}
Pada contoh program diatas maka eksekusi program yaitu memutar nada
dengan nada A.

c.

program push button

Automation Technology
Education Center

#include <pololu/3pi.h>

Automation Technology
Education Center

int main()
{
wait_for_button_press(BUTTON_A); /*command untuk perintah menekan
tombol A*/
red_led(1);/*command menghidupkan led merah*/
green_led(1);/*command menghidupkan led hijau*/
}
Pada contoh program diatas maka eksekusi program yaitu jika
tombol A ditekan maka led merah dan hijau akan menyala atau baru
akan dilaksanakan program dibawah push button.

d.

program trimpot
#include <pololu/3pi.h>
unsigned char a;/*pendeklarasian variabel a bertipe unsigned char*/
int main()
{
while (1)/* Program kontrol yang akan digunakan untuk
mengulang hasil pembacaan trimpot*/
{
set_analog_mode (MODE_8_BIT); /*mode pembacaan pada
trimpot bertipe 8 bit, data yang dihasilkan 0-255*/
a=read_trimpot(); /* variabel a sama dengan read trimpot,
read_trimpot yaitu data hasil pembacaan pada trimpot*/
if(a==0) /*penggunaan program kontrol if yang berfungsi
sebagai kontrol dari hasil pembacaan trimpot untuk kontrol
program yang dinginkan*/
{
red_led(1);/*pernyataan yang nantinya akan dikerjakan sesuai dengan
c=control if*/

}
if(a==255)
{
red_led (0);
}
}
}
Penjelasan program:
while : pada program digunakan untuk melakukan eksekusi secara berulangulang, dimana
pembacaan trimpot hanya sekali dan data yang terbaca adalah data
trimpot dari posisi trimpot terakhir, jika tidak di ulang maka akan
hanya tereksekusi sekali.
e.

program LCD
#include <pololu/3pi.h>
int main()
{

Automation Technology
Education Center

lcd_goto_xy(3,1);
print("A");
}

Automation Technology
Education Center

Penjelasan program:
Lcd_goto_xy(3,1) : command untuk menaruh kursor pada kolom 3 baris 1
pada saat awal
program dijalankan.
Print(A) : command untuk menampilkan karekter/huruf A pada LCD.
f.

program motor
#include <pololu/3pi.h>
int main()
{
set_m1_speed(49);
set_m2_speed(50);
}
Penjelasan program:
Set_m1_speed(49) : Command untuk menset kecepatan motor kiri pada
kecepatan 49.
Set_m2_speed(50) : Command untuk menset kecepatan motor
kanan pada kecepatan 49. Jadi program diatas akan menjankan
robot maju dengan kecepatan 49 untuk motor kiri dan 50 untuk
motor kanan.

Automation Technology
Education Center

10
1.

SOAL SOAL POLOLU

LED
Gunakan fungsi library led dan timer untuk tugas dibawah ini dan jangan lupa
memasukan
fle header dari 3pi robot dengan preprocessor include
Tugas 1
Buatlah program untuk menyalakan led
merah/hijau.
Tugas 2
Buatlah program untuk mematikan led
merah/hijau.
Tugas 3
Buatlah program untuk menyalakan led merah/hijau selama 5 detik
kemudian lampu led merah/hijau mati.
Tugas 4
Buatlah program untuk menyalakan lampu led merah/hijau secara
kedip 5 kali kemudian
lampu led merah/hijau mati setelah itu
program berakhir.
Tugas 5
Buatlah program untuk menyalakan lampu led merah dan hijau
secara kedip 10 kali kemudian lampu led merah dan hijau mati
bersamaan.
Tugas 6
Buatlah program untuk menyalakan lampu led merah/hijau
secara kedip 10
kali
kemudian lampu led merah/hijau mati menggunakan
tag/command FOR.
Tugas 7
Nyalakan lampu led merah dan hijau secara kedip 10 kali kemudian
lampu led merah dan hijau mati menggunakan tag/command while.
Tugas 8
Nyalakan lampu led merah 3 detik kemudian lampu led hijau 3 detik
dan bergantian serta berulang-ulang (loop).
Tugas 9
Nyalakan lampu led merah kedip 2 kali dan lampu led hijau kedip 2 kali
secara bergantian sebanyak 3 kali kemudian program berakhir.
Tugas 10
Nyalakan lampu led merah kedip 2 kali dan lampu led hijau kedip 2 kali
secara bergantian dan berulang-ulang loop.
Tugas 11
Nyalakan lampu led merah 2 detik dan berganti lampu led hijau 2 detik
, kemudian lampu
led merah dan lampu led hijau kedip dengan menggunakan delay_ms
(500) sebanyak 10 kali secara bersamaan, lalu berganti lampu led
merah dan lampu led hijau kedip secara bergantian dengan
delay_ms(1000); dan program berakhir.
Tugas 12
Buatlah sub program dari tugas-tugas sebelumnya minimal 2 sub
program dan dipanggil satu persatu di main program (int main(),
-).

Automation Technology
Education Center

2.

BUZZER
Untuk memprogram buzzer gunakan perintah-perintah yang sudah tersedia di library
pololu.
Tugas 1
Bunyikan buzzer dengan nada A, B, C, D, E, F, G secara bergantian
untuk mangenali nada dasar pada 3PI pololu, pengujian dilakukan satu
per satu.
Tugas 2

Automation Technology
Education Center

Bunyikan buzzer dengan nada A, B, C, D, E, F, G secara bergantian dan


dinaikan 1 oktaf untuk mangenali nada yang di naikan 1 oktaf pada
3 pololu, pengujian dilakukan satu per satu.
Tugas 3
Bunyikan buzzer dengan nada A, B, C, D, E, F, G secara bergantian dan
diturunkan 1 oktaf untuk mangenali nada yang diturunkan 1 oktaf pada
3pi pololu, pengujian dilakukan satu per satu.
Tugas 4
Bunyikan buzzer dengan nada A, B, C, D, E, F dan G dengan tempo 8
untuk mangenali nada dengan tempo 8 pada 3pi pololu.
Tugas 5
Bunyikan buzzer dengan nada A, B, C, D, E, F dan G secara bergantian
dengan tempo 16
untuk mangenali nada dengan tempo 16 pada
3PI pololu.
Tugas 6
Bunyikan buzzer dengan nada A, B, C, D, E, F dan G secara bergantian
dengan volume 10
untuk mangenali nada dengan Volume pada
3PI pololu.
Tugas 7:
Mainkan nada dari twinkle-twinkle little star dengan
menggunakan buzzer.
Tugas 8
Buatlah sub program dari tugas-tugas sebelumnya minimal 2 sub
program dan dipanggil satu persatu di main program (int main(),
-)

3.
PUSHBUTTON
Untuk pushbutton terdiri dari 3 buah yang dapat kita gunakan untuk deprogram
terdiri dari
tombol A,B dan C.
Tugas 1
Buatlah program lampu led hijau akan menyala menunggu setelah
PUSHBUTTON_A di
teka
n.
Tugas 2
Buatlah program Lampu led merah akan menyala menunggu setelah
PUSHBUTTON_B di
teka
n.
Tugas 3
Buatlah program Lampu led merah dan hijau akan menyala
bersamaan menunggu setelah PUSHBUTTON_C ditekan.
Tugas 4
Buatlah program Lampu led merah/hijau akan menyala selama
PUSHBUTTON_A ditekan
Tugas 5
Buatlah program untuk menyalakan lampu led merah dan buzzer
bernada D dengan

Automation Technology

Education Center
menekan
PUSBUTTON_A.
Tugas 6
Buatlah program untuk menyalakan lampu led hijau dan buzzer
bernada C dengan
menekan
PUSBUTTON_B.

Tugas 7
Buatlah program untuk menghidupkan led selama 5 detik kemudian
dapat dimatikan
dengan semua tombol. Cat: gunakan sintaks
ALL_BUTTONS.
Tugas 8
Buatlah program untuk menyalakan lampu led merah/hijau selama 5
detik dengan menekan PUSHBUTTON_A atau PUSHBUTTON_B atau
PUSHBUTTON_B selama tombol belum di tekan lampu tidak akan
menyala. (cat: soal sama dengan hubung pararel)

Automation Technology
Education Center

Tugas 9
Buatlah program untuk menyalakan lampu led merah/hijau selama
5 detik dengan
menekan PUSHBUTTON_A dan PUSHBUTTON_B selama tombol belum di
tekan lampu tidak akan menyala. Cat (sama dengan hubung seri).
Tugas 10
Buatlah program untuk menyalakan lampu led merah/hijau dengan
menekan PUSHBUTTON_A dan PUSHBUTTON_B (operasi seri) kemudian
PUSHBUTTON_C berfungsi untuk mematikan Lampu.
Tugas11
Buatlah sub program dari tugas-tugas sebelumnya minimal 2 sub
program dan dipanggil
satu persatu di main program (int
main(),-).
4.

TRIMPOT
Tips program
o Untuk pertama-tama Set trimpot menjadi 8 bit dengan
tag/command =
set_analog_mode(MODE_8_BIT)
Tugas 1
Buatlah program untuk menyalakan lampu led merah/hijau dan
mematikan lampu led merah / hijau dengan trimpot. Jika nilai trimpot
sama dengan 0 maka nyalakan lampu led
merah/ hijau dan jika nilai trimpot sama dengan 255 maka matikan
lampu led hijau /
mera
h.
Tugas 2
Buatlah program ketika trimpot diputar semakin kearah kiri buzzer akan
bernada B dan jika sudah sampai ujung kiri maka led berwarna merah
menyala dan jika trimpot diputar semakin kearah kanan buzzer akan
bernada F dan jika sudah sampai ujung kanan led berwarna hijau
menyala.
Tugas 3
Buatlah sub program dari tugas-tugas sebelumnya minimal 2 sub
program dan dipanggil satu persatu di main program (int main(),
-).

5.

LCD
Untuk penggunaan lcd karena ukuranya 8x2 hanya dapat menampung 8
karakter di baris atas dan 8 karakter di baris bawah jadi jumlahnya 16
karakter saja
Tugas 1
Buatlah program untuk menampilkan karakter A di mulai pada
kolom 3 baris ke 1.
Tugas 2
Buatlah
program
menampilkan
karekter berjalan
ke kanan
kemudian apabila sampai pada batas akhir lcd kemudian muncul lagi
dari awal lagi dan berulang-ulang. Tips gunakan command (lcd_scroll,
if, while)
Tugas3

Automation Technology
Education Center

Buatlah program menampilakan data pad LCD secara manual


dengan merubah data
dengan memprogram ulang(misal angka 1 atau 2 atau 3 dst). Tips data
yang ditampilkan berupa tipe data seperti pada penjelasan modul dan
gunakan command print_long.
Tugas 4
Buatlah program untuk menampilkan data pada LCD (counter angka
dari 0-255).(Tips:
gunakan
control
if,
while,
for,print_long)
Tugas 5
Buatlah program penampil nilai
battery.

Automation Technology
Education Center

Tugas6
Buatlah program menampilkan nilai battery dan kalimat Press B
jika tombol ditekan
(Pushbutton B) tampilan terhapus dari LCD. tips gunakan command
(while dan button_is_pressed).
Tugas7
Buatlah program untuk menambah nilai sebesar 1 apabila BUTTON A
ditekan dan nilai akan berkurang 1 apabila BUTTON B ditekan
ditampilakan pada LCD dan BUTTON C digunakan untuk mereset.
Tips gunakan (switchcase bisa juga menggunakan if dan
button_is_pressed)gunakan sub program untuk memudahkan.
Tugas 8
Buat tampilan karakter angka 8 pada lcd dengan menggunakan
load_custom_character.
Tips
gunakan
avr/pgmspace.h,print_character,lcd_load_custom_character.
Tugas 9
Buatlah sub program dari tugas-tugas sebelumnya minimal 2 sub
program dan dipanggil satu persatu di main program (int main(),
-).
6.

MOTOR 1
Untuk tugas-tugas di motor control, ketika awal dinyalakan maka lcd akan
menampilkan nilai dari battrai dan jika di tekan tombol B baru melakukan
aksi sesuai tugas-tugas dibawah ini:
Tugas 1
Buatlah program menunggu setelah BUTTON B ditekan robot akan
bergerak maju 2 detik
kemudian berbelok 90
kemudian berhenti dan
program berakhir.
Tugas 2
Buatlah program setelah BUTTON B ditekan robot akan bergerak maju 2
detik kemudian berbelok 90 lalu belok kanan 180 dan berbelok kiri
90 kemudian mundur ke posisi awal.
Tugas 3
Buatlah program setelah ditekan robot bergerak membentuk persegi
empat dan setiap
belok lampu led merah
berkedip.

7.

MOTOR 2.
Tugas 1
Buatlah program menjalankan robot berputar ke kanan dan ke
kiri berulangulang
sebanyak 5 kali lalu
berhenti.
Tugas 2
Robot bergerak ke kanan 90 lalu ke kiri 180 dan ke kanan 90
lalu robot Berhenti.
Tugas 3
Buatlah
program
robot
berjalan

Automation Technology
Education Center

membentuk angka 8.
Tugas 4
Buatlah program dengan pengaturan nilai kecepatan motor dan
kecepatan motor di tampilkan di LCD dengan batas running test 3
detik dan Robot akan bergerak setelah
BUTTON B ditekan gunakan trimpot sebagai pengatur
kecepatan motor.
Kecepatan
Jarak
yang
ditempu

50

100

150

200

255

Automation Technology
Education Center

Tugas 5
Buatlah program untuk menambah nilai kecepatan sebesar 1 apabila
BOTTON A ditekan dan nilai kecepatan akan berkurang 1 apabila
BUTTON B di tekan. Dan BUTTON C untuk menjalankan robot. Tips
(gunakan EEPROM atau variabel
untuk menyimpan data hasil
perubahan setiap tombol ditekan)
Tugas 6
Buatlah sub program dari tugas-tugas sebelumnya minimal 2 sub
program dan dipanggil satu persatu di main program (int main(),
-).
8.

SENSOR
Untuk penggunaan sensor garis lakukan inisialisasi terlebih dahulu seperti yang
sudah
dijelaskan di bab VII. Dan lakukan ketika awal dinyalakan maka lcd akan
menampilkan nilai dari battrai dan jika di tekan tombol B baru melakukan
aksi sesuai tugas-tugas dibawah ini:
Tugas pendahuluan 1
Buatlah sub program (contoh void initial()) penampil nilai battery
dan menampilakn
karakter (Press B) dan jika di tekan tombol B (Push button B)
maka LCD clear(LCD bersih) dan robot beputar ke kanan 90 lalu ke kiri
180 lalu kembali ke kanan 90 dan robot berhenti gunakan for sebagai
control berputarya, panggil sub program ke dalam int main(),-. Tips
gunakan perulangan dengan syarat push button sebagai pemutus
perulangan.
Tugas pendahuluan 2
Buatlah program seperti pada tugas pendahuluan1 selanjutnya berikan
command calibrate_line_sensor didalam program berputar ke kanan
dan ke kiri, dengan catatan inisialisasi dahulu sensornya, (program di
buat di dalam sub program).
Sintaks
inisialisasi:
pololu_3pi_init(2000); = digunakan untuk inisialisasi
sensor robot 3.
(untuk melihat apakah sensor bekerja dapat dilihat
dengan kamera)
Tugas1
Buatlah program seperti pada tugas pendahuluan2 tambahkan program
pembacaan nilai sensor (read_line (sensors,IR_EMITTERS_ON);) dan
defnisakan variabel sensor dengan tipe data unsigned int sensor[5],
defnisikan variable untuk menyimpan data pembacaan dalam bentuk
unsigned int(contoh: position) untuk memudahkan menampilkan pada
LCD dan dapat di gunakan dalam pengontrol nantinya, kemudian
tampilkan nilai pembacaan sensor ke layar LCD. tips gunakan
command read_line(target, mode), untuk target di isi
sensors dan defnisikan dulu sebagai variabel global atau local jika
didalam satu sub program dalam bentuk array [5], dan mode diisi
IR_EMITTERS_ON yaitu menggunakan mode Infrared menyala,

Automation Technology
Education Center

Tugas2
Buatlah program seperti pada tugas1 dan tambahkan program jika
tombol B ditekan
maka LCD clear dan tampilkan karakter GO dan buzzer bunyi
nada. Tips program
hampir sama dengan tugas
pendahuluan.
Tugas3
Dari tugas2 diatas, program kalibrasi sensor dan penampil nilai
pembacaan sensor sudah
dilakukan, robot sudah siap dikendalikan sesuai dengan program
kontrol. Buatlah

Automation Technology
Education Center

program seperti tugas2 dan tambahkan program untuk robot berjalan


mengikuti garis dan gunakan kontrol program if, gunakan defnisi
variabel (position) untuk pengontrolnya, inisialisasikan dahulu variable
sensors dalam bentuk array [5], dan gunakan command pembacaan
nilai sensor (read_line (sensors,IR_EMITTERS_ON);)yang sudah di
simpan ke variabel position, variabel position ini yang digunakan
sebagai kontrol dari geraknya robot range nilainya 0-4000, di ketikan di
dalam int main(),-.
Tugas4
Buatlah program seperti pada tugas3 dan tidak menggunakan
semua sensor sebagai pengontrol tetapi gunakan salah satu sensors
yang ada sebagai pengontrol.
a. Gunakan sensor 0. Jika sensor 0 lebih kecil/lebih besar dari 100
(sensors[0]<100/ sensors[0]>100) hidupakan led merah dan
bunyikan buzzer jika tidak matikan semua. Ubahlah datanya
(sensors[1] <100) dari 100 sampai dengan 1000 dan amati
hasilnya apa perbedaanya.
b. Gunakan sensor 1, 2, 3 dan 4 seperti pada tugas 4.a diatas amati
perubahan dan
perbedaannya.
c. Buatlah program seperti pada tugas 4.a tetapi untuk mengontrol
motor.
Gunakan tiap sensor.
Tugas5
Buatlah program robot mengikuti garis seperti pada gambar di bawah
dan robot tidak keluar dari garis. Gunakan sensors[0] dan sensors[4]
sebagai pengontrol.

Tugas6
Buatlah program setiap melewati perempatan buzzer bunyi, bunyi buzzer tiap
perempatan
berbeda dan pada perempatan terakhir robot berhenti.

Automation Technology
Education Center

Tugas7
Buatlah program robot berbelok ke kanan jika melewati pertigaan dan
buzzer berbunyi lalu pada ujung garis robot berhenti.

Tugas8
Tugas8 sama dengan tugas7 hanya saja penggunaan sensor sebelah kiri,
Buatlah program robot berbelok ke kiri jika melewati pertigaan dan
buzzer berbunyi lalu pada ujung garis robot berhenti.

Tugas9
Buatlah program robot berjalan seperti pada gambar di bawah
dengan petunjuk arah panah pergerakan robotnya, pada akhir anak panah
robot berhenti.

Automation Technology
Education Center

Tugas10

Tugas10 sama dengan tugas9 hanya saja arah belok berlawanan,


Buatlah program robot berjalan seperti pada gambar di bawah dengan
petunjuk arah panah pergerakan robotnya, pada akhir anak panah robot
berhenti.

Tugas11
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Tugas12
Buatlah program robot berjalan sesuai dengan arah anak panah
seperti pada gambar di bawah. Di akhir anak panah robot berhenti.

Automation Technology
Education Center

Tugas13
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Tugas14
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Tugas15
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Automation Technology
Education Center

Tugas16
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Tugas17
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Tugas18
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Automation Technology
Education Center

Tugas19
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti. Keterangan
kotak hitam sebagai akhir dari jalan robot dan garis putih sebagai garis
start robot.

Tugas20
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti. Keterangan
kotak hitam sebagai akhir dari jalan robot dan garis putih sebagai garis
start robot. Tugas20 merupakan tugas akhir untuk memecahkan jalur track
yang disediakan.

Automation Technology
Education Center

11

LINE FOLLOWER PID

LINE FOLLOWER PID


Tugas pendahuluan 1
Buatlah sub program (contoh void initial()) penampil nilai battery dan
menampilakn karakter (Press B) dan jika di tekan tombol B (Push button
B) maka LCD clear(LCD bersih) dan robot beputar ke kanan 90 lalu ke kiri
180 lalu kembali ke kanan 90 dan robot berhenti, panggil sub program
ke dalam int main(),-. Tips gunakan perulangan dengan syarat push
button sebagai pemutus perulangan.
Tugas pendahuluan 2
Buatlah program seperti pada tugas pendahuluan1 selanjutnya berikan
command calibrate_line_sensor didalam program berputar ke kanan dan ke
kiri, dengan catatan inisialisasi dahulu sensornya, (program di buat di
dalam sub program).
Sintaks
inisialisasi:
pololu_3pi_init(2000); = digunakan untuk inisialisasi
sensor robot 3.
(untuk melihat apakah sensor bekerja dapat dilihat
dengan kamera)
Tugas1
Buatlah program seperti pada tugas pendahuluan2 tambahkan program
pembacaan nilai sensor (read_line (sensors,IR_EMITTERS_ON);), defnisikan
variable untuk menyimpan data pembacaan dalam bentuk unsigned
int(contoh: position) untuk memudahkan menampilkan pada LCD dan
dapat di gunakan dalam pengontrol nantinya, kemudian tampilkan nilai
pembacaan
sensor
ke
layar
LCD.
tips
gunakan
command
read_line(target, mode), untuk target di isi sensors dan defnisikan dulu
sebagai variabel global atau local jika didalam satu sub program dalam
bentuk array [5], dan mode diisi IR_EMITTERS_ON yaitu menggunakan
mode Infrared menyala,
Tugas2
Buatlah program seperti pada tugas1 dan tambahkan program jika
tombol B ditekan maka
LCD clear dan tampilkan karakter GO dan buzzer bunyi nada. Tips
program hampir sama dengan tugas pendahuluan1.
Tugas3
Dari tugas2 diatas, program kalibrasi sensor dan penampil nilai
pembacaan sensor sudah dilakukan, robot sudah siap dikendalikan sesuai
dengan program kontrol. Buatlah program seperti tugas2, tambahkan
rumusan PID yang telah dibahas didalam int main() , while(),- -. Lihat
perubahan robot berjalan di dalam lintasan, anmati dan analisa.
Sintaks program
PID unsigned int
position; unsigned
int sensors[5];
int
integral=0;

int
last_proportional=
0; While(1)
{
position
=
read_line(sensors,IR_EMITTERS_ON);
int proportional = ((int)position)
- 2000;
int
derivative
=
proportional
last_proportional;
integral
+=
proportional;
last_proportional
=
proportional;

Automation Technology
Education Center

Automation Technology
Education Center

int power_diference= proportional/5+integral/10000+ derivative*3/2;


const int max = 250;
if(power_diference >
max) power_diference
= max;
if(power_diference <
-max)
power_diference =
-max;
if(power_diference < 0)
set_motors(max+power_diference, max);
else
set_motors(max, max-power_diference);
}

Automation Technology
Education Center

12

MAZE SOLVING LINE FOLLOWER

Buatlah tugas1 seperti Tugas pendahuluan1 pada pembahasan SENSOR


Buatlah tugas2 seperti Tugas pendahuluan2 pada pembahasan SENSOR
Buatlah tugas3 seperti Tugas1 pada pembahasan SENSOR
Buatlah tugas4 seperti Tugas2 pada pembahasan SENSOR
Tugas5
Dari tugas diatas, program kalibrasi sensor dan penampil nilai pembacaan sensor
sudah
dilakukan, robot sudah siap dikendalikan sesuai dengan program
kontrol. Tambahkan sub propgram PID sesuai dengan rumusan yang ada.
Catatan:
Setiap sub program bisa di jalankan jika di panggil di main program(int main())
Tugas6
Buatlah program seperti pada tugas5 dan tidak menggunakan semua sensor
sebagai pengontrol tetapi gunakan salah satu sensors yang ada sebagai
pengontrol.
a. Gunakan sensor 0 atau 4 untuk berbelok amati perubahan dan perbedaannya.
b. Gunakan sensor 0, 1 dan 4 untuk berbelok amati perubahan
dan perbedaannya. c. Gunakan sensor 4, 3 dan 2 untuk berbelok
amati perubahan dan perbedaannya.
Tugas7
Buatlah program setiap melewati perempatan buzzer bunyi, bunyi
buzzer tiap perempatan berbeda dan pada perempatan terakhir robot berhenti.

Tugas8
Buatlah program robot berbelok ke kanan jika melewati pertigaan dan
buzzer berbunyi lalu pada ujung garis robot berhenti.

Automation Technology
Education Center

Tugas9
Tugas9 sama dengan tugas8 hanya saja penggunaan sensor sebelah
kiri, Buatlah program
robot berbelok ke kiri jika melewati pertigaan dan buzzer berbunyi lalu
pada ujung garis robot berhenti.

Tugas10
Buatlah program robot berjalan seperti pada gambar di bawah dengan
petunjuk arah panah pergerakan robotnya, pada akhir anak panah robot
berhenti.

Tugas11
Tugas11 sama dengan tugas10 hanya saja arah belok berlawanan, Buatlah
program robot berjalan seperti pada gambar di bawah dengan petunjuk
arah panah pergerakan robotnya, pada akhir anak panah robot berhenti.

Automation Technology
Education Center

Tugas12
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Tugas13
Buatlah program robot berjalan sesuai dengan arah anak panah
seperti pada gambar di bawah. Di akhir anak panah robot berhenti.

Tugas14
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Automation Technology
Education Center

Tugas15
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Tugas16
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Tugas17
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti.

Automation Technology
Education Center

Tugas18
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di
bawah. Di akhir anak panah robot
berhenti.

Tugas19
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di
bawah. Di akhir anak panah robot
berhenti.

Tugas20
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di bawah. Di akhir anak panah robot berhenti. Keterangan
kotak hitam sebagai akhir dari jalan robot dan garis putih sebagai garis
start robot.

Automation Technology
Education Center

Tugas21
Buatlah program robot berjalan sesuai dengan arah anak panah seperti
pada gambar di
bawah. Di akhir anak panah robot berhenti. Keterangan kotak hitam
sebagai akhir dari jalan robot dan garis putih sebagai garis start robot.
Tugas20 merupakan tugas akhir untuk memecahkan jalur track yang
disediakan.

Tugas22
Buatlah program robot berjalan sesuai dengan arah anak panah seperti pada
gambar di bawah. Di akhir anak panah robot berhenti. Menggunakan PID
sebagai pengolah gerak robotnya.

45

Tugas23
Buatlah program robot berjalan sesuai dengan arah anak panah seperti pada
gambar di bawah. Di akhir anak panah robot berhenti. Menggunakan PID
sebagai pengolah gerak robotnya.

45

Catatan:
Untuk tugas 24-28 merupakan soal-soal gabungan dan atau improvisasi untuk
melatih siswa

Automation Technology
Education Center

memahami soal-soal sebelumnya dan sebagai latihan pada track perlombaan yang akan
dihadapi.

Tugas24
Untuk tugas 24 dapat berbeda dan disesuaikan. Buatlah program robot berjalan sesuai
dengan
arah anak panah seperti pada gambar di bawah. Di akhir anak
panah robot berhenti. Menggunakan PID sebagai pengolah gerak robotnya.

Tugas25
Untuk tugas 25 dapat berbeda dan disesuaikan menggunakan PID
sebagai pengolah gerak robotnya, track seperti pada gambar dan ikuti
urutan jalur pada table

1
2
3
4
5
6
7
8

Tugas 26
Buatlah program dari track pada gambar berikut ini dan ikuti urutan jalur pada table

10

11

12

13

14

15

16

Tugas27
Buatlah program dari track pada gambar berikut ini dan ikuti urutan jalur pada table

10

11

12

13

14

7
8

Tugas 28
Buatlah program dari track pada gambar berikut ini dan ikuti urutan jalur pada table

8
2

10

11

12

13

Anda mungkin juga menyukai