modul workshop 2010
TRANSCRIPT
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 1/29
Copyright by HIMANIKA 2010 Page 1
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 2/29
Copyright by HIMANIKA 2010 Page 2
BAGIAN I
PENGENALAN DASAR MIKROKONTROLER ATmega 16
Apa itu mikrokontroler ?
Mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan dan
keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus,
cara kerja mikrokontroler sebenarnya membaca dan menulis data. Mikrokontroler merupakan
komputer didalam chip yang digunakan untuk mengontrol peralatan elektronik, yang
menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa disebut "pengendali kecil"
dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan komponen-
komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya
terpusat serta dikendalikan oleh mikrokontroler ini. Dengan penggunaan mikrokontroler ini
maka :
• Sistem elektronik akan menjadi lebih ringkas
• Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari sistem
adalah perangkat lunak yang mudah dimodifikasi
• Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak
Namun demikian tidak sepenuhnya mikrokontroler bisa mereduksi komponen IC TTL dan
CMOS yang seringkali masih diperlukan untuk aplikasi kecepatan tinggi atau sekedar
menambah jumlah saluran masukan dan keluaran (I/O). Dengan kata lain, mikrokontroleradalah versi mini atau mikro dari sebuah komputer karena mikrokontroler sudah mengandung
beberapa periferal yang langsung bisa dimanfaatkan, misalnya port paralel, port serial,
komparator, konversi digital ke analog (DAC), konversi analog ke digital dan sebagainya
hanya menggunakan sistem minimum yang tidak rumit atau kompleks.
Mikrokontrol keluarga type AVR
AVR adalah mikrokontroler RISC ( Reduce Insruction Set Compute) 8 bit berdasarkan
arsitektur Havard, yang dibuat oleh atmel pada tahun 1996. AVR memiliki keunggulan
dibanding dengan mikrokontroler lain seperti kecepatan eksekusi program yang lebih cepat
yang lebih cepat dibanding dengan mikrokontroler MCS51 yang memiliki arsitektur CISC
(complex Intruktion Set Compute). Fitur AVR memiliki fitur lengkap (ADC internal,
EEPROM Internal, Timer/Counter, Watchdog Timer, PWM, Port I/O, komunikasi serial dll).
Secara umum mikrokontroler AVR dapat dikelompokkan menjadi 3 kelompok, yaitu
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 3/29
Copyright by HIMANIKA 2010 Page 3
keluarga AT90xx, ATMega, dan ATtiny. Type dari mikrokontroler AVR seperti ATMega 16,
ATMega 8, ATMega 32, ATMega 2313, ATMega 8535, ATMega 128, ATMega 64.
Pemrograman AVR dapat menggunakan low level language (assembly) dan high level
language (C, Basic, Pascal, Java) tergantung compiler yang digunakan. Untuk kedepannya
kita akan menggunakan pmrograman bahasa C dengan software kompilernya menggunakan
Code Vision AVR dan menggunakan ATMega 16 sebagai perangkat kerasnya.
Mikrokontroler ATMega 16
Fitur yang dimiliki adalah sebagai berikut
1. Mikrokontroler AVR 8 bit yang memiliki kemampuan tinggi, dengan daya rendah
2. Arsitektur RISC dengan Troughput mencapai 16 MIPS pada frekuensi 16MHz.
3. Memilikikapasitas flash memori 16 Kbyte, EEPROM 512 Byte dan SRAM 1 Kbyte.
4. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, dan Port D.
5. CPU yang terdiri atas 32 buah register.
6. Unit interupsi internal dan ekternal
7. Port USART untuk komunikasi serial
8. Fitur peripheral
- Tiga buah Timer/Counter dengan kemampuan perbandingan
• 2 buah Timer/Counter 8 bit dengann prescaler terpisah dan mode compare
• 1 buah Timer/Counter 16 bit dengan prescaler terpisah, mode compare,
dan mode capture
- Real time counter dengan osilator sendiri
- 4 channel PWM
- 8 channel, 10-bit ADC
• 8 single-ended channel
• 7 differential channel hanya pada kemasan TQFP
• 2 differential channel dengan programmable gain 1x, 10x, atau 100x
-
Byte-oriented two wire serial interface- Programmable serial USART
- Antarmuka SPI
- Watchdog timer dengan oscillator internal
- On-chip analog comparator
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 4/29
Copyright by HIMANIKA 2010 Page 4
Konfigurasi pin AVR ATMega 16
Gambar 1.1 Konfigurasi kaki (pin) ATMega 16
Konfigurasi pin ATMega 16 dengan kemasan 40 pin DIP (Dual in line Package) dapatdijelaskan sebagai berikut:
1. VCC merupakan pin yang berfungsi sebagai masukan catu daya. Sebaiknya
menggunakan catu daya 5 V dengan regulator tegangan.
2. GND merupakan pin Ground
3. Port A(PA0..PA7) merupakan pin input/output dua arah dan pin masukan ADC.
4. Port B(PB0..PB7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti
dapat dilihat pada table di bawah ini.
Pin Fungsi khusus
PB7 SCK (SPI Bus Serial Clock)
PB6 MISO (SPI Bus Master Input/lave Output)
PB5 MOSI (SPI Bus Master Output?Slave Input)
PB4 SS (SPI Slave Select Input)
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 5/29
Copyright by HIMANIKA 2010 Page 5
PB3 AIN1 (Analog Comparator Negatif Input)
OC0 (Timer/Counter0 Output Compare Match Output)
PB2 AIN0 (Analog Comparator Positive Input)
INT2 (External Interrupt 2 input)
PB1 T1 (Timer/Counter1 External Counter Input)
PB0 T0 T1 (Timer/Counter0 External Counter Input)
XCX (USART External Clock Input/Output)
5. Port C(PC0..PC7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti
dapat dilihat pada table di bawah
Pin Fungsi khusus
PC7 TOSC2 (Timer Oscillator Pin2)
PC6 TOSC1 (Timer Oscillator Pin1)
PC5 TDI (JTAG Test Data In)
PC4 TDO (JTAG Test Data Out)
PC3 TMS (JTAG Test Mode Select)
PC2 TCK (JTAG Test Clock)
PC1 SDA (Two-wire Serial Bus Data Input/Outpur Line)
PC0 SCL (Two-Wire Serial Bus Clock Line)
6. Pirt D(PD0..PD7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti
dilihat pada table dibawah.
Pin Fungsi khusus
PD7 OC2 (Timer/Counter2 Output Compare Macth Output)
PD6 ICP (Timer/Counter1 Input Capture Pin)
PD5 OC1A (Timer/Counter1 Output Compare A Macth Output)
PD4 OC1B (Timer/Counter1 Output Compare B Macth Output)
PD3 INT1 (External Interruft 1 input)
PD2 INT0 (External Interruft 0 input)
PD1 TXD (USART Output Pin)
PD0 RXD (USART Input Pin)
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 6/29
Copyright by HIMANIKA 2010 Page 6
7. RESET merupakan pin yang digunakan untuk mereset mikrokontroler
8. XTAL1 dan XTAL2 merupakan pin masukan clock ekstenal
9. AVCC merupakan pin masukan tegangan untuk ADC
10. AREF merupakan pin masukan tegangan referensi ADC
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 7/29
Copyright by HIMANIKA 2010 Page 7
BAGIAN II
DOWNLOADER LPT
Downloader LPT (ISP Programmer) merupakan sebuah perangkat downloader yang
minimum dan sederhana karena hanya menggunakan port LPT (Parallel port) dan resistor
sebagai pengaman. Konfigurasi pin LPT dan AVR sebagai berikut:
PIN Mikrokontroller PIN LPT
MOSI (6) INIT (16)
MISO (7) ACK (10)
SCK (8) SLCT-IN (17)
RESET (9) AUTOLF (14)
GND (11) GND (25)
Pengaturan Programmer Codevision AVR :
1. Jalankan Aplikasi Codevision AVR.
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 8/29
Copyright by HIMANIKA 2010 Page 8
2. Klik tombol Programmer Settings atau Settings-Programmer dan atur seperti
gambar. nb : Pengaturan ini hanya sekali saja.
3. Klik tombol Terminals Settings atau Settings-Terminal dan atur seperti pada
gambar. nb : Pengaturan ini hanya sekali saja
.
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 9/29
Copyright by HIMANIKA 2010 Page 9
BAGIAN III
DOWNLOADER USB
USBasp merupakan in-circuit programmer untuk mikrokontroler Atmel AVR.Rangkaiannya menggunakan ATMega48 atau ATMega8 dan beberapa komponen pasif
lainnya. Programmer atau downloader ini menggunakan sebuah penggerak USB hanya-
firmware ( firmware-only USB driver ), tidak memerlukan pengontrol USB khusus.
Fitur-fitur
• Bisa digunakan untuk berbagai macam platform, sudah
diuji untuk Linux, Mac OS dan Windows;
• Tidakmemerlukan pengontrol atau komponen smd
khusus;
• Kecepatan pemrograman bisa mencapai 5kByte/detik;
• Opsi SCK untuk mendukung mikrokontroler target yang berkecepatan rendah (< 1.5
MHz);
Gambar Rangkaian USB Downloader :
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 10/29
Copyright by HIMANIKA 2010
USB Downloader han
downloader semisal AVR Dude,
Gambar Schematic boar
MOSI, MISO, SCK, OSC, dan
RESET, dan GND (AVR/Siste
Slo
a membutuhkan driver USB ASP dan s
Khazama AVR Programmer, dan eXtreme-Bur
PCB dengan menggunakan PCB Express :
GND(USB Downloader) ke MOSI, MISO, S
Minimum)
GND
RESET
SCK
MISO
MOSI
OSC
RESET
ISP Download
to Computer
SELF PROGRAMMIN
SCK
Page 10
ftware USB
ner AVR.
C
K,
er
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 11/29
Copyright by HIMANIKA 2010 Page 11
BAGIAN IV
SISTEM MINIMUM ATmega 16
Sistem minimum disini adalah rangkaian utama di dalam robot Line Follower,
rangkaian ini memiliki fungsi sebagai pemberi catu daya, tombol navigasi, port downloader
ISP , driver motor, dan Port LCD. Tanpa rangkaian sistem minimum ini maka
mikrokontroller tidak akan bisa bekerja. Berikut ini gambar rangkaian minimum sistem
ATMega 16 :
Keterangan :
1. PINA berfungsi sebagai PIN ADC (Analog to Digital Converter) yang terhubung ke
sensor photo diode.
2. PINB berfungsi sebagai pengontrol LCD.
3. PORTD.0 – 5 berfungsi sebagai kendali driver motor (L298).
4. PIND6-7 dan PIND0-1 sebagai tombol navigasi.
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 12/29
Copyright by HIMANIKA 2010 Page 12
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 13/29
Copyright by HIMANIKA 2010 Page 13
BAGIAN V
ROBOTIC LINE FOLLOWER BASIC
Line Follower Robot adalah robot autonomus yang bergerak mengikuti garis secara
otomatis. Robot Follower biasanya menggunakan sensor photo diode atau LDR ( Light
Dependent Resistor ) sebagai penerima dan LED sebagai pemancar sinar. Untuk
penggeraknya robot Line Follower biasanya mengunakan roda(Wheeled ), tetapi di dalam
aplikasi lain menggunakan panggerak berupa kaki ( Legged ) .
Robot Line Follower mempunyai beberapa bagian utama di dalam hardware dan
software ,yaitu :
1. Sistem minimum mikrokontroller.
Sistem minimum berfungsi sebagai rangkaian utama dari Robot Line
Follower . Di dalam sistem minimum ini terdapat mikrokontroller (ATMega 16 ) yang
berfungsi sebagai rangkaian pengendali utama yang mengatur kecepatan, arah gerak
robot, sistem kendali, dan menu program.
2. Driver Motor.
Driver motor bekerja dengan mendapat perintah dari mikrokontroller, driver
motor bekerja untuk mengendalika arah gerak maju, mundur dan pengereman dari
motor di dalam Robot Line Follower .
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 14/29
Copyright by HIMANIKA 2010 Page 14
3. Sensor Proximity.
Sensor berfungsi sebagai pengindra(perasa) dari sebuah Robot Line Follower ,
sensor yang sering digunakan antara lain adalah Photo Diode. Photo dioda bekerja
dengan menerima sinar/ cahaya baik cahaya yang tampak maupun yang tidak tampak
oleh mata manusia ( Infrared ).
Prinsip kerjanya sederhana, hanya memanfaatkan sifat cahaya yang akan
dipantulkan jika mengenai benda berwarna terang dan akan diserap jika mengenai
benda berwarna gelap. Sebagai sumber cahaya kita gunakan LED (Light Emiting
Diode) yang akan memancarkan cahaya merah. Dan untuk menangkap pantulan
cahaya LED, kita gunakan photodiode. Jika sensor berada diatas garis hitam maka
photodioda akan menerima sedikit sekali cahaya pantulan. Tetapi jika sensor berada
diatas garis putih maka photodioda akan menerima banyak cahaya pantulan. Berikut
adalah ilustrasinya :
Sifat dari photodioda adalah jika semakin banyak cahaya yang diterima, maka
nilai resistansi diodanya semakin kecil. Dengan melakukan sedikit modifikasi, maka
besaran resistansi tersebut dapat diubah menjadi tegangan. Sehingga jika sensor
berada diatas garis hitam, maka tegangan keluaran sensor akan besar, demikian pula
sebaliknya. Berikut adalah gambar rangkaian sensor proximity yang sering digunakan
pada robot Line Follower :
a. Sensor Dengan Komparator.
Agar dapat dibaca oleh mikrokontroler, maka tegangan sensor harus
disesuaikan dengan level tegangan TTL yaitu 0 – 1 volt untuk logika 0 dan 3 – 5
volt untuk logika 1. Hal ini bisa dilakukan dengan memasang operational
amplifier yang difungsikan sebagai komparator. Output dari photodiode yang
masuk ke input inverting op-amp akan dibandingkan dengan tegangan tertentu
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 15/29
Copyright by HIMANIKA 2010 Page 15
dari variable resistor VR. Tegangan dari VR inilah yang kita atur agar sensor
proximity dapat menyesuaikan dengan kondisi cahaya ruangan.
b. Sensor dengan ADC ( Analog to Digital Converter ).
Sensor ADC merupakan perangkat sensor yang sangat sederhan. Perangkat sensorini hanya terdiri dari sebuah Resistor dan sensor
phototransistor/photodeoda/LDR yang mengunakan
prinsip pembagi tegangan sebagai parameternya. Sensor
ADC member inputan ke mikrocontroler berupa tegangan
variasi yang diterjemahkan oleh mikro sebagai bilangan
00000000(0) sampai 11111111(255). Jadi dengan ini kita
tidak memerlukan komparator sebagai indicator 1/0, tapi
memerlukan pemograman mikrocontroler yang lebih
sulit, yaitu dengan mengatur parameter variasi tegangan
input yang diterjemah mikro sebagai logic 0/1.
Misal : Jika out sensor 3,5-5V diterjemahkan sebagai
logic 1.Jika out sensor kurang dari 3,5 V diterjemahkan 0.
4. LCD( Liquid Crystal Display).
LCD berfungsi untuk menampilkan tampilan menu dari program Robot Line
Follower . LCD yang biasa digunakan disini adalah LCD yang berukuran 16x2
karakter sehingga cukup untuk menampilkan pengaturan program seperti kecepatan
motor, kepekaan sensor, kendali PID, dan delay.
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 16/29
Copyright by HIMANIKA 2010 Page 16
Gbr. 4. Rangkaian LCD 16x2 (LMB 162)
Gbr. 5. Tampilan LCD 16x2 Karakter
5. GearBox (Mekanik).
GearBox berfungsi untuk mengatur torsi dari motor supaya dapat
menggerakkan roda dari Robot Line Follower dan juga sebagai tempat roda dan
motor. Gearbox biasanya digunakan untuk memperbesar Torsi dari motor (motor
DVD), ini dikarenakan motor DVD mempunyai torsi yang kecil tetapi mempunyai
kecepatan putaran(rpm) yang cepat. Oleh karena itu diperlukan sebuah gearbox untuk
memperbesar torsinya sehingga dapat menggerakkan roda dari robot. Motor yang
biasanya dipakai untuk Robot Line Follower adalah motor DVD, ini karena motor
DVD mudah dikendalikan, kecepatan motor yang tinggi, dan harganya yang murah.
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 17/29
Copyright by HIMANIKA 2010 Page 17
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 18/29
Copyright by HIMANIKA 2010 Page 18
BAGIAN VI
ALGORITMA PEMROGRAMAN C/C++
CONTOH ALGORITMA PADA PEMROGRAMAN MIKROKONTROLLER
DENGAN BAHASA C/C++
1. PENDAHULUAN
Bahasa C/C++ adalah bahasa pemrograman yang sangat digemari karena
bahasa C/C++ adalah bahasa yang sangat kompatibel untuk pemrograman computer
berbasis Windows ataupun nix, bahkan bisa untuk pemrograman mikrokontroler dari
Atmel, PIC, dsb.
Bahasa C/C++ adalah suatu singkatan yaitu C yang berarti Case sensitive,
artinya dalam pemrograman bahasa C ini antara huruf besar dan huruf kecil adalah
berbeda ( A ≠ a ). Maka dalam membuat progam dengan bahasa C/C++ ini harus
berhati-hati dalam menuliskan perintah, konstanta, dsb.Mengapa menggunakan bahasa C/C++????
Bahasa C/C++ adalah salah satu bahasa pemrograman yang mendekati bahasa mesin
(low level programming), sehingga hasil kompilasinya lebih kecil dibanding bahasa
high level programming, selain itu orang yang sudah menguasai bahasa C/C++ lebih
mudah dan cepat untuk mempelajari bahasa high level programming dikarenakan cara
berpikir orang tersebut lebih terstruktur dan sistematis atau bisa dikatakan orang
tersebut sudah memahami cara kerja suatu CPU (Central Processing Unit).
Secara umum struktur pemrograman bahasa C/C++ terdiri dari beberapa
bagian yaitu
A.
HeaderB. Definisi/define
C. Variabel dan konstanta
D. Fungsi tambahan
E. Fungsi utama/ void main (program akan dimulai dari fungsi ini)
Pada dasarnya pemrograman mikrokontroler ini adalah fungsi I/O, yaitu
pengolahan nilai-nilai input yang diproses untuk menghasilkan nilai-nilai output yang
dikehendaki. Nilai-nilai input atau output biasanya berbentuk bilangan biner atau
hexadecimal.
2. HEADER
Dalam bahasa pemrograman C/C++ dikenal perintah yaitu INCLUDE, yaitu
sebuah perintah yang digunakan untuk memasukkan sebuah file *.h, yang berisi
perintah-perintah atau konstanta yang digunakan dalam membuat program. Sebagai
contohnya
#include <stdio.h>
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 19/29
Copyright by HIMANIKA 2010 Page 19
Maka semua perintah dan konstanta yang ada dalam file stdio.h dapat diakses dalam
project yg dibuat.
3. DEFINE
Perintah ini digunakan untuk mendefinisikan nilai, alamat, atau sejenisnya. Secara
umum struktur define adalah sebagai berikut
#define <nama> <alamat/nilai>
Sebagai contohnya
#define phi 3,14
Dari baris berintah diatas, dapat ditarik kesimpulan bahwa nilai phi = 3,14.
4. VARIABLE, KONSTANTA, JENISA DATA, DAN PENULISAN BILANGAN
a. VARIABEL
Dalam pemrograman C/C++ penulisan variable dapat ditulis sebagai berikut
<jenis data> <nama variable>
Sebagai contoh int indeks, dari contoh tersebut nama variable yang bernama
indeks mempunyai jenis data yaitu integer.
b. KONSTANTA
Konstanta atau yang disebut nilai tetap/constant dalam pemrograman C/C++ dapat
dituliskan
<jenis data> <nama konstanta> = <nilai>
Hampir mirip dengan penulisan varibel, hanya saja ditambahkan besar nilainya.
Misalnya saja, int kecepatan_motor = 200. Sehingga konstanta yang bernama
kecepatan_motor akan bernilai 200.
c. JENIS DATA
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 20/29
Copyright by HIMANIKA 2010 Page 20
Tipe Ukuran
(bit)
Range
bit 1 0 dan 1
char 8 -128 to 127
unsigned char 8 0 to 255
signed char 8 -128 to 127
int 16 -32768 to 32767
short int 16 -32768 to 32767
unsigned int 16 0 to 65535
signed int 16 -32768 to 32767
long int 32 -2147483648 to 2147483647
unsigned long int 32 0 to 4294967295
Signed long int 32 -2147483648 to 2147483647
float 32 ±1.175e-38 to ±3.402e38
double 32 ±1.175e-38 to ±3.402e38
Dalam membuat sebuah program sangatlah penting menggunakan jenis data sesuaidengan kebutuhan. Misalnya, jika akan membuat program mikrokontroller 8 bit
yang didalamnya akan ada inisialisasi sebuah port pada suatu variable. Maka jenis
data yang digunakan pada variable tersebut harus menggunakan jenis data bertipe
unsigned char. Hal itu dikarenakan port mikrokontroller 8 bit ( yang berarti 28
)
mempunyai nilai minimum 0 dan maksimum 255.
Atau jika ingin membuat program untuk menghitung volume suatu bangun ruang,
maka jenis data yang digunakan haruslah float atau double. Hal tersebut
dikarenakan nilai volume suatu bangun ruang tidak selalu bilangan bulat
(mengandung koma).
d. PENULISAN BILANGAN
Dalam C++ dalam dunia mikrokontroller dikenal beberapa cara penulisan jenis
bilangan, berikut adalah beberapa cara penulisannya
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 21/29
Copyright by HIMANIKA 2010 Page 21
Nama Bilangan Cara Penulisan Keterangan
Desimal 123 Ditulis biasa
Bit 0b1011 Harus diawali dengan 0b
Hexadecimal 0x1F Harus diawali dengan 0x
5. COMMENT ATAU KOMENTAR
Komentar dalam bahasa C/C++ harus diawali dengan karakter “//” (tanpa
tanda petik) atau bisa juga ditulis dengan diawali “/*”(tanpa tanda petik) dan diakhiri
dengan “*/”(tanpa tanda petik).
Sebagai contoh
// ini hanya komentar/catatan ga’ usah dipedulikan
/*ini bukan perintah alias tidak penting*/ ///*ngemeng epeh*/
6. OPERATOR
Dalam bahasa C/C++ ada beberapa operator yaitu
Bentuk Operator Contoh Arti
== A == A A Sama dengan A ( A bernilai sama dg A )
!= A != a A Tidak sama dengan a ( A berbeda dengan )
< A < B A Lebih kecil B
<= A <= B A Lebih kecil atau sama dengan B
> C > B C Lebih besar B
>= C >= B C Lebih besar atau sama dengan B
= X = 10 Memasukkan nilai ( X diberi nilai 10 )
* A * B A dikali dengan B
/ A / B A dibagi dengan B
+ A + B A ditambah dengan B
- A – B A dikurangi dengan B
*= A *= B A = A * B
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 22/29
Copyright by HIMANIKA 2010 Page 22
/= A /= B A = A / B
+= A += B A = A + B
-= A -= B A = A – B
7. IF … ELSE ….
Perintah if … else … dalam bahasa C/C++ fungsinya pada dasarnya adalah untuk
memilih tindakan antara 2 keadaan. Misalnya
if ( ada_garis == 1) {
maju(); } //memanggil fungsi yang bernama maju, jika nilai ada_garis = 1
else {
mundur(); } //memanggil fungsi yang bernama mundur, jika nilai garis selain
1
8. FUNGSI
Fungsi dalam bahasa pemrograman C/C++ secara umum dapat dituliskan
void <nama fungsi>()
contohnya
void jalan_lurus()
{
Motor_1 = 1;
Motor_2 = 1;
}
Cara memanggil fungsi diatas hanyalah menuliskan jalan_lurus();. Maka secara
langsung nilai Motor_1 akan diberi nilai 1 dan Motor_2 akan diberi nilai 1.
jika menghendaki fungsi dengan parameter maka dapat ditulis
void <nama fungsi>( <jenis data parameter> <nama parameter> )
contohnya
void belok(bit kekanankah)
{
if (kekanankah == 1) { //apakah belok kekanan
Motor_1 = 1;
Motor_2 = 0; }
else {
Motor_1 = 0;
Motor_2 = 1; }
}
Jika contoh fungsi diatas dipanggil dengan perintah
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 23/29
Copyright by HIMANIKA 2010 Page 23
belok(1);
maka Motor_1 akan diberi nilai 1 dan Motor_2 akan diberi nilai 0. Berbeda jika
fungsi tersebut dipanggil perintah
belok(0);
maka nilai Motor_1 akan diberi nilai 0 dan Motor_2 akan diberi nilai 1.
9. SWITCH … CASE …. BREAK
Perintah switch … case … pada dasarnya sama seperti perintah if … else …, hanya
saja switch … case … break lebih efisien untuk memilih tindakan dari banyak
keadaan. Contohnya
switch (sensor) {
case 0b00111111:
belok_kiri();
break;
case 0b11100111:
maju();
break;
case 0b11111100:
belok_kanan();
break;
}
Jika nilai sensor bernilai 0b11100111 maka akan menjalankan fungsi yang bernama
maju selanjutnya akan keluar dari perintah switch … case …. Namun jika nilai sensor
0b11111111 atau bisa dikatakan tidak ada dalam daftar case, maka perintah switch
tidak akan menjalankan perintah/fungsi apapun.
10. WHILE
while adalah suatu perintah perulangan. Secara umum perintah while dituliskan
sebagai berikut
while(keadaan)
contohnya
int jumlah_perulangan = 10;
while (jumlah_perulangan != 0) { jumlah_perulangan = jumlah_perulangan -1; }
dari contoh di atas tadi, dapat ditarik kesimpulan bahwa nilai jumlah_perulangan akan
dikurangi dengan 1 selama 10 kali.
11. FOR
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 24/29
Copyright by HIMANIKA 2010 Page 24
Perintah for prinsipnya sama dengan while yaitu mengulang, namun lamanya
perulangan bisa diatur mulai awal hingga akhir. Berikut cara penulisannya
for ( <nilai awal> ; <nilai akhir> ; <metode> )
contohnya
for (i=1; i<=10; i++) {beban = beban + 10;}
dari contoh diatas mempunyai arti bahwa operasi penjumlahan beban = beban + 10;
akan diulang selama 10 kali (dari nilai i=1 sampai i=10).
12. PEMROGRAMAN MIKROKONTROLER UNTUK LINE FOLLOWER
a. ALGORITMA MEMBACA GARIS
Sebelum membuat program, maka kita mendefinisikan seluruh kemungkinan
pembacaan sensor dahulu. Dengan demikian kita dapat menentukan
pergerakan robot yang tujuannya adalah menjaga agar robot selalu berada tepatdiatas garis. Sebagai contoh jika konfigurasi tata letak sensor dari robot adalah
sebagai berikut
* * * * * * *
0 1 2 3 4 5 6
*
7
maka dapat dibuat daftar dari kemungkinan terbesar sensor-sensor tersebut
membaca garis adalah sebagai berikut
Kiri tajam Kiri Lurus Kanan Kanan tajam
01111110 01111001 01110111 01100111 01011111
11111110 11111001 11110111 11100111 11011111
01111100 01111011 01111111 01101111 00011111
11111100 11111011 11101111 10011111
01111101 01110011 01001111 00111111
11111101 11110011 11001111 10111111
Dari daftar-daftar nilai tersebut lalu dapat dibuat program mikrokontroler
untuk menggerakkan/menjalankan robot agar berjalan mengikuti garis yang
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 25/29
Copyright by HIMANIKA 2010 Page 25
ditentukan menggunakan perintah switch ... case ... break, sehingga
programnya menjadi seperti dibawah ini
switch(sensor) {
case 0b01111110:case 0b11111110:
kiri_tajam();
break;
…
…
case 0b01111001:
case 0b11111001:
belok_kiri();
break;
……
case 0b01110111:
case 0b11110111:
maju();
break;}
b. PWM (Pulse Width Modulation)
Pulse Width Modulation atau yang bisa disebut PWM ini berfungsi sebagai
pengatur tegangan output. Fungsi PWM ini dapat di bentuk/dibuat dengan
metode ISR (Interrupt Service Routine) dengan memanfaatkan fitur Timer
yang ada pada AVR pada saat timer tersebut terjadi overflow/melimpah.
Berikut ini adalah contoh dari PWM
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
count++;
if (count<=pwm) output=1;
else output=0;
TCNT0=0xFF;
}
Fungsi interrupt diatas akan dijalankan saat timer 0 mengalami overflow atau
nilai TCNT0 melebihi 0xFF.
Misalnya saja jika nilai variabel pwm diatas diberi nilai 200 maka nilai
variabel output akan bernilai 1 selama 200 kali overflow. Semakin lama output
bernilai 1 maka semakin besar tegangan yang dikeluarkan oleh output, begitu
sebaliknya.
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 26/29
Copyright by HIMANIKA 2010 Page 26
BAGIAN VII
SOFTWARE PENDUKUNG
CodeVision AVR
Membuat Source Code Dengan Codevision AVR
Source code secara lengkap dapat dilihat pada Lampiran A. Source code dibuat denganmenggunakan software CodeVisionAVR dengan langkah-langkah sebagai berikut :
1. Jalankan CodeVisionAVR, kemudian klik File -> New, Pilih Project.
2. “Do you want to use the CodeWizardAVR?” Klik Yes
3. Pilih Chip yang digunakan, chip : ATmega8535L, clock : 11.059200 MHz
4. Lakukan setting sebagai berikut :
Port : Port C sebagai Output dan Port D sebagai Input PullupTimers : Timer 0 dengan Clock Value 10,800 KHz, aktifkan Overflow Interrupt
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 27/29
Copyright by HIMANIKA 2010 Page 27
5. Klik File -> Generate, Save and Exit
6. Buatlah source code.
7. Setelah selesai membuat source code, klik Setting -> Programmer
8. Pilih AVR Chip Programmer Type : Kanda System STK200+/300 dan pilih
Printer Port pada LPT1 : 378h
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 28/29
Copyright by HIMANIKA 2010 Page 28
9. Klik Project -> Configure, kemudian pilih menu After Make dan aktifkan
Program the Chip.
Klik OK jika sudah.
PERHATIAN ! Jangan mengubah setting apapun pada menu ini. Jika salah
memilih,
chip Anda tidak bisa digunakan lagi !!
10. Untuk meng-compile project, klik Project -> Make
11. Jika tidak ada error maka file siap didownload ke chip. Pastikan koneksi kabel
downloader
dan chip sudah terpasang dengan benar.
12. Nyalakan power supply dan klik Program. Tunggu hingga proses download selesai.
5/8/2018 Modul Workshop 2010 - slidepdf.com
http://slidepdf.com/reader/full/modul-workshop-2010-559abeaa4d38d 29/29
Copyright by HIMANIKA 2010 Page 29
Daftar Pustaka
1. Edtronics, Mikrokontroller AVR 128
http://edtronics.wordpress.com/2008/12/05/mikrokontroler-avr-atmega128-64/
2. ToPaysTronics, Memulai Codevision AVR.
http://payztronics.blogspot.com/2009/06/memulai-coviavr-codevisionavr.html
3. Agfiyanto, Pemograman Mikrokontroller AVR melalui USB.
http://agfi.staff.ugm.ac.id/blog/index.php/2009/07/pemrogram-mikrokontroler-avr-
melalui-usb/
4. Truck-Bus, 2009, Gearbox and Sensor Pictures.
http://truckbus.blogspot.com/2009/09/gear-box-and-sensor-pictures.html