Anda di halaman 1dari 44

BAB 1.

BAB 1. PENDAHULUAN....................................................................................... 1
1.1. APA ITU ARDUINO.................................................................................. 1
1.2. SEJARAH ARDUINO................................................................................. 1
1.3. APLIKASI ARDUINO................................................................................ 2
1.4. PERKEMBANGAN ARDUINO..................................................................3
1.5. PERTANYAAN........................................................................................... 6
BAB 2. ARSITEKTUR MIKROKONTROLER AVR.................................................7
2.1. OVERVIEW ARSITEKTUR MIKROKONTROLER AVR.............................7
2.2. PENJELASAN FUNGSI PIN......................................................................9
2.3. MEMORY MAP....................................................................................... 11
2.4. RANGKAIAN BOARD ARDUINO...........................................................14
2.5. PENJELASAN BOARD ARDUINO..........................................................15
2.6. PERTANYAAN......................................................................................... 17
BAB 3. DASAR PEMROGRAMAN ARDUINO.....................................................18
3.1. TAHAPAN PEMBUATAN PROGRAM......................................................18
3.2. BAHASA PEMROGRAMAN....................................................................18
3.3. STRUKTUR PENULISAN PROGRAM.....................................................19
3.4. TIPE DATA.............................................................................................. 19
3.5. BASIS ANGKA........................................................................................ 20
3.6. PENYIMPANAN DATA............................................................................20
3.7. OPERASI LOGIKA DAN BINER.............................................................20
3.8. OPERASI RELASIONAL (PERBANDINGAN).........................................20
3.9. OPERASI ARITMATIKA..........................................................................21
3.10.

STATEMENT........................................................................................ 21

3.11.

CONDITIONAL STATEMENT..............................................................21

3.12.

FUNCTION.......................................................................................... 22

3.13.

LATIHAN............................................................................................. 22

BAB 4. PEMROGRAMAN DENGAN ARDUINO IDE...........................................24


4.1. MEMBUAT PROGRAM...........................................................................24
4.2. COMPILE DAN DOWNLOAD KE CHIP..................................................27
4.3. PEMROGRAMAN AVR UNTUK PORT I/O.............................................28
4.4. KOMUNIKASI SERIAL........................................................................... 30
4.5. PEMROGRAMAN RELAY.......................................................................31
4.6. MEMBUAT DELAY.................................................................................. 32
4.7. PEMROGRAMAN LCD........................................................................... 33

4.8. PEMROGRAMAN ADC...........................................................................35


4.9. PEMROGRAMAN KEYPAD....................................................................36
4.10.

BAB 2.

PEMROGRAMAN PWM......................................................................38

BAB 3. PENDAHULUAN

1.1.APA ITU ARDUINO


Ada baiknya sebelum membahas mengenai Arduino kita mengerti dulu apa
itu mikrokontroler. Mikrokontroler adalah single chip computer yang memiliki
kemampuan untuk diprogram dan digunakan untuk tugas-tugas berorientasi
kontrol. Dalam sebuah IC mikrokontroler telah terdapat ROM, RAM, EPROM,
serial maupun parallel interface, timer, interrupt controller, converter analog ke
digital, dan lainnya (tergantung feature yang melengkapi mikrokontroler
tersebut). Dari segi aplikasinya, mikrokontroler ditujukan untuk tugas-tugas
yang

berorientasi

kontrol

pada

rangkaian

yang

membutuhkan

jumlah

komponen minimum dan biaya rendah


(low cost).
Suatu mikrokontroler agar dapat diprogram dan bekerja sebagai pusat
kontrol memerlukan rangkaian elektronik yang dapat mendukungnya. Mulai
dari power supply, Osilator, konektor, ISP, dan Reset. Versi rangkaian paling
sederhana untuk membuat mikrokontroler bisa bekerja disebut sebagai sistem
minimum mikrokontroler.
Arduino merupakan sebuah bentuk sistem minimum mikrokontroler yang
bersifat open source hardware dengan komunitas pengguna yang luas di
seluruh dunia. Sifat open source hardware berarti semua informasi rangkaian
perangkat kerasnya dibuka dan setiap orang boleh menggunakan dan
mengembangkannya secara bebas. Konsep open source inilah yang kemudian
menjadikan

Arduino

menjadi

sangat

populer

mendunia.

Arduino

dapat

dihubungkan dengan mudah ke berbagai jenis perangkat I/O seperti LED,


motor, sensor dan perangkat lainnya.

1.2.SEJARAH ARDUINO
Saat ini tim arduino terdiri dari Massimo Banzi, David Cuartielles, Gianluca
Martino, Dave Mellis dan Tom Igoe. Tujuan mereka adalah untuk menciptakan
sebuah Wiring Platform yang dapat diakses/digunakan oleh pengguna nontechnical dalam bidang kreatif seperti seniman, desainer dan arsitek.
Ketika

proyek

tersebut

selesai

kemudian

mereka

terus

berusaha

mambuatnya lebih ringan, murah, dan tersedia untuk komunitas. Keputusan


1

besar diambil oleh Massimo Banzi dan rekan-rekannya untuk membuat proyek
ini menjadi open source. Mereka mempertimbangkan bahwa dengan keputusan
itu Arduino akan lebih cepat berkembang dan terus maju. Nama Arduino
diberikan oleh Massimo Banzi. Dia terinspirasi dari nama raja dari Ivrea yang
berkuasa pada tahun 1002 masehi bernama Raja Arduin.
Konsep dasar arduino pertama kali dibuat oleh Hernando Barragan pada
tahun 2004 untuk tesis master di Interaction Design Institute Ivera di Italia
dengan judul Wiring: Prototyping Phisical Interaction Design serta Casey Reas
dan Massimo Banzai sebagai dosen pembimbing. Pada tahun 2005, tim Arduino
dibentuk di Ivera Italia yang terdiri dari Massimo Banzi, David Cuartielles, Dave
Mellis, Gianluca Martino, Nicholas Zambetti. Casey Reas dibantu Ben Fry
mengembangkan pengolahan bahasa pemrograman secara visual yang diberi
nama processing software inilah yang menjadi cikal bakal Arduino IDE yaitu
perangkat lunak yang disediakan untuk memprogram Arduino. Software
tersebut menggunakan compiler gcc yang juga open source.
Arduino biasanya menggunakan IC mikrokontroler yang merupakan produk
dari Atmel. Bahasa pemrograman yang digunakan Arduino adalah bahasa C/C+
+ dengan penambahan library-library khusus Arduino. Bootloader juga
ditanamkan

di

chip

mikrokontrolernya

untuk

membantu

pengguna

memasukkan program melalui komunikasi serial USB.

1.3.APLIKASI ARDUINO
Selain karena open source, kemampuannya yang tinggi, bentuknya yang
kecil, konsumsi daya yang rendah, dan harga yang murah membuat Arduino
banyak digunakan di dunia.
Contoh-contoh proyek:

Pengontrol motor
Mesin CNC
Peralatan medis
Pengontrol suhu
Monitoring energi
GPS tracking
Pengendali robot
Dan masih banyak lagi

Terdapat beberapa keunggulan yang dimiliki oleh Arduino antara lain:

Dari Segi Hardware

Tidak memerlukan perangkat chip programmer karena didalamnya


sudah ada bootloader yang akan menangani upload program dari

komputer melalui komunikasi serial USB.


Memiliki modul add-on yang siap pakai (dinamakan shield) yang
bisa dipasang pada board Arduino yang sudah dibuat oleh banyak

pihak, misalnya shield GPS, Ethernet, SD Card, dan sebagainya.


Dari Segi Software
o Bahasa pemrograman relatif mudah karena software Arduino IDE
sudah dilengkapi dengan kumpulan library yang cukup lengkap.
o Terdapat banyak contoh pemrograman di internet.
Komunitas pengguna yang luas untuk saling membantu dan bertukar
pikiran.

1.4.PERKEMBANGAN ARDUINO
Karena kebutuhan yang tinggi terhadap sistem minimum mikrokontroler
yang standar dan dengan berbagai kemudahan fasilitasnya, maka para
pembuat Arduino terus melakukan pengembangan pada board Arduino. Mulai
dari port komunikasi yang diganti ke USB, dan juga penggunaan mikrokontroler
yang memiliki lebih banyak keunggulan seperti Flash, EEPROM, SRAM, I/O Pin,
ADC, UART dan PWM yang lebih tinggi.
Jenis-jenis arduino bermacam-macam di antaranya Severino, Diecimila,
Duemilanove, Uno, Nano, Mini, Fio, Lilypad, Pro, Pro mini, Mega, Mega2560,
Leonardo, Micro, Yun, Due, dan Tre. Berikut spesifikasi beberapa arduino yang
popular:
Arduino Uno

Spesifikasi

Arduino Due

Processor
:
CPU Speed ATmega328
Analog I/O
: 16 Mhz
Digital
: 6/0
IO/PWM
: 14/6
EEPROM
: 1 KB
SRAM
: 2 KB
FLASH
: 32 KB
USB
: Regular
UART
:1
Spesifikasi

Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART

Arduino Leonardo

:
AT91SAM3X
8E
: 84 Mhz
: 12/2
: 54/12
:: 96
: 512
: 2 Micro
:4

Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART

Arduino Mega 2560

:
Atmega32u
4
: 16 Mhz
: 12/0
: 20/7
:1
: 2.5
: 32
: Micro
:1
Spesifikasi

Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART
Arduino Mega ADK

:
ATmega256
0
: 16 Mhz
: 16/0
: 54/15
:4
:8
: 256
: Regular
:4
Spesifikasi

Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART

:
ATmega256
0
: 16 Mhz
: 16/0
: 54/15
:4
:8
: 256
: Regular
4

Arduino Micro

:4
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART

Arduino Mini

:
Atmega32u
4
: 16 Mhz
: 12/0
: 20/7
:1
: 2.5
: 32
: Micro
:1
Spesifikasi

Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART

:
Atmega328
: 16 Mhz
: 8/0
: 14/6
:1
:2
: 32
::-

Arduino Nano

Spesifikasi

Arduino Fio

Processor
:
CPU Speed Atmega168
Analog I/O
: 16 Mhz
Digital
: 8/0
IO/PWM
: 14/6
EEPROM
: 0.512
SRAM
:1
FLASH
: 16
USB
: Mini-B
UART
:1
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART

:
Atmega328
P
: 8 Mhz
: 8/0
: 14/6
:1
:2
: 32
: Mini
:1
5

Arduino Pro (328)

Spesifikasi

Arduino Pro Mini

Processor
:
CPU Speed Atmega328
Analog I/O
: 16 Mhz
Digital
: 6/0
IO/PWM
: 14/6
EEPROM
:1
SRAM
:2
FLASH
: 32
USB
:UART
:1
Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART

Arduino LilyPad

:
ATmega168
: 8 Mhz
: 6/0
: 14/6
: 0.512
:1
: 16
::1

Spesifikasi
Processor
CPU Speed
Analog I/O
Digital
IO/PWM
EEPROM
SRAM
FLASH
USB
UART

:
Atmega168
V
: 8 Mhz
: 6/0
: 14/6
: 0.512
:1
: 16
::-

1.5.PERTANYAAN
1. Apa kelebihan dan kekurangan mikrokontroler dibandingkan
mikroprosesor komputer biasa?
2. Sebutkan keuntungan menggunakan Arduino dibandingkan dengan
board sistem minimum mikrokontroler yang lain?
3. Cari perbedaan-perbedaan yang ada antar jenis board Arduino.
BAB 4.

BAB 5. ARSITEKTUR MIKROKONTROLER AVR


4.

2.1.OVERVIEW ARSITEKTUR MIKROKONTROLER AVR


5.

Jenis Arduino yang sangat banyak dipakai saat ini adalah Arduino

UNO yang berbasis chip mikrokontroler AVR. Mikrokontroler AVR merupakan


arsitektur mikrokontroler yang dibuat oleh Atmel. Arsitekur ini dirancang
memiliki berbagai kelebihan dan merupakan penyempurnaan dari arsitektur
mikrokontroler-mikrokontroler yang sudah ada. Salah satu kelebihan tersebut
adalah kemampuan In System Programming sehingga chip mikrokontroler
langsung dapat diprogram dalam sistem rangkaian aplikasi melalui aturan
tertentu.
6.

Arduino UNO menggunakan mikrokontroler dari keluarga AVR yaitu

seri ATmega328. Berikut adalah fitur-fitur mikrokontroler seri ATmega328.

7.

Kapasitas memori Flash 32 KB (0.5 KB digunakan untuk bootloader)


Kapasitas memori EEPROM 1KB
Memori SRAM 2 KB
Maksimal 20 Pin I/O (14 digital I/O (6 PWM), dan 6 Input Analog)
2 eksternal interrupt
8 Channel Analog to Digital Converter (ADC)
Satu 16-bit timer dan 2 8-bit timer
Komunikasi serial melalui SPI, I2C dan USART
Secara umum blok diagram arsitektur AVR adalah sebagai berikut.

8.
9.

Gambar 2.1. Diagram Blok AVR

10.
11.
12.
13.
14.
15.

2.2.PENJELASAN FUNGSI PIN


16.

Chip mikrokontroler AVR dapat dikemas (packaging) dalam bentuk

yang berbeda-beda. Namun pada dasarnya fungsi kaki yang ada pada IC
memiliki

persamaan.

ATmega328.

Berikut

gambar

bentuk

chip

mikrokontroler

AVR

17.

18.
19. Gambar 2.2. Konfigurasi Kaki Mikrokontroler AVR ATmega328 PDIP 28 pin

20.

Berikut adalah penjelasan fungsi tiap kaki yang ada pada seri

mikrokontroler AVR ATmega328.


A. VCC
21. VCC adalah kaki masukan tegangan bagi Digital.
B. GND
22. GND adalah kaki ground.
C. Port B
23. Merupakan 8-bit directional port I/O. setiap

pinnya

dapat

menyediakan internal pull-up resistor (dapat diatur per bit). Selain itu
Port B juga dapat memiliki fungsi alternatif seperti berikut
24.

25.

Fungsi Alternatif

ort
Pin
26.
P 27.

ICP1

B0
capture pin
28.
P 29.
OC1A

= sebagai Timer Counter 1 input


= sebagai keluaran PWM (Pulse

B1
Width Modulation)
30.
P 31.
OC1B = sebagai keluaran PWM (Pulse
B2

33.
B3
36.
B4

Width Modulation)
32.
SS
= merupakan jalur komunikasi
SPI
P 34.

OC2

= sebagai keluaran PWM (Pulse

Width Modulation)
35.
MOSI = merupakan jalur komunikasi SPI
P 37.
MISO = merupakan jalur komunikasi SPI

38.

P 39.

B5
SPI
40.
P 41.
B6

43.

SCK

= merupakan jalur komunikasi

TOSC1

sebagai

sember

clock

eksternal untuk timer


42.
XTAL1
= merupakan sumber clock
utama mikrokontroler
P 44.
TOSC2
= sebagai

B7

sember

clock

eksternal untuk timer


45.
XTAL2
= merupakan sumber clock
utama mikrokontroler

46.
D. Port C
47. Port C merupakan jalur data 6 bit yang dapat difungsikan sebaga I/O
digital.
48. Fungsi alternative PORTC antara lain sebagai berikut.
49.

50.

Fungsi Alternatif

ort
Pin
51.
P 52.
C0
53.
C1
55.
C2
57.
C3
59.
C4
61.
C5

ADC

dapat

kita

gunakan

untuk

mengubah input yang berupa tegangan analog


menjadi data digital. resolusi sebesar 10 bit
P 54.
ADC
dapat
kita
gunakan
untuk
mengubah input yang berupa tegangan analog
menjadi data digital. resolusi sebesar 10 bit
P 56.
ADC
dapat
kita
gunakan
untuk
mengubah input yang berupa tegangan analog
menjadi data digital. resolusi sebesar 10 bit
P 58.
ADC
dapat
kita
gunakan
untuk
mengubah input yang berupa tegangan analog
menjadi data digital. resolusi sebesar 10 bit
P 60.
ADC
dapat
kita
gunakan
untuk
mengubah input yang berupa tegangan analog
menjadi data digital. resolusi sebesar 10 bit
P 62.
ADC
dapat
kita
gunakan
untuk
mengubah input yang berupa tegangan analog

menjadi data digital. resolusi sebesar 10 bit


63.
E. Port D
64. Port D merupakan jalur data 8 bit yang masing-masing pin-nya juga
dapat difungsikan sebagai input/output. Sama seperti Port B dan Port C,
Port D juga memiliki fungsi alternative

65.
66.

67.

Fungsi Alternatif

ort
Pin
68.
P 69.

RXD mengirim data USART

D0
70.
P 71.

TXD menerima data USART

D1
72.
P 73.

INT0 interupsi 0

D2
74.
P 75.

INT1 interupsi 1

D3
76.
P 77.
78.
D4
79.
P 80.

XCK clock eksternal USART


T0 masukan counter eksternal timer 0
T1 masukan counter eksternal timer 1

D5
81.
P 82.

AIN0 analog input untuk komparator

D6
83.
P 84.

AIN1 analog input untuk komparator

D7
85.
F. AVcc
86. Adalah kaki masukan tegangan bagi A/D converter. Kaki ini harus
secara eksternal terhubung ke Vcc melalui lowpass filter.
G. AREF
87. Adalah kaki masukan referensi bagi A/D Converter.

Untuk

operasional ADC, suatu level tegangan antara GND dan AVcc


H. RESET
88. Berada pada Port C 6. Jika pin ini diberi masukan low selama
minimal 2 machine cycle maka sistem akan di-reset.

2.3.MEMORY MAP
89.

Program-program

mikrokontroler

disimpan

dan
pada

data-data

pada

memori.

computer

maupun

Mikrokontroler

mengimplementasikan pembagian ruang memori untuk data dan program.

AVR

90.
91.

Pada gambar diatas dapat dilihat gambaran secara lengkap dari on-

chip memory yang ada di mikrokontroler AVR ATmega328. Seperti ditunjukkan,


ruang memori dibagi menjadi memori program berupa Aplication Flash dan
Boot Flash dan memori data berupa Register File, I/O Memory, SRAM, dan
EEPROM.

Program Memory
92.ATmega328 memiliki 32 KBytes on-chip In system Programmable
Flash untuk menyimpan program. Karena semua instruksi panjangnya
16 bit atau 32 bit, maka memori program ini diorganisasikan dalam
16K x 16 bit. Yang perlu diperhatikan juga adalah bahwa beberapa
alamat awal dari memori program merupakan alamat vector interupsi.

93.

94.
95.
96.
97.
98.
99.
Data Memory
100.
32 General Purpose Working Register

101.

102.
103.
104.

Internal SRAM (Static Random Access Memory)


Internal SRAM ini memiliki ukuran 2KB. Dengan besarnya

ukuran SRAM yang dialokasikan maka diharapkan dapat meningkatkan


performa program.
105.
106.
EEPROM (Electrically Erasable Programable Read Only
Memory)
107.
Intenal memory ini memiliki ukuran 1 KB sebagai tempat
penyimpanan data permanen karena EEPROM tetap dapat menyimpan
data meskipun tidak ada catu daya.

2.4.RANGKAIAN BOARD ARDUINO

15

108.

Skematik Board Arduino UNO

16

109.

Gambar 2.3. Rangkaian Arduino UNO

17

110.

2.5.PENJELASAN BOARD ARDUINO


111.

Penjelasan fungsi tiap pin Arduino Uno.

112.
113.
114.
18

115.

Penjelasan fungsi tiap pin Arduino Mega.

19

116.

20

2.6.PERTANYAAN
1. Apa kelebihan arsitekur mikrokontroler AVR dibanding dengan arsitektur
yang lain?
2. Cari tahu seri mikrokontroler apakah yang ada di tiap jenis board
Arduino?
3. Apa perbedaan memori RAM, EEPROM dan Flash?

BAB 6.

21

BAB 7. DASAR PEMROGRAMAN ARDUINO


3.1.TAHAPAN PEMBUATAN PROGRAM
Pembuatan program mikrokontroler Arduino melalui beberapa tahapan.
Pertama adalah membuat kode programnya, kemudian kode program dicompile/diterjemahkan ke bahasa mesin oleh arduino IDE dan tahap ketiga
hasil compile di-upload ke board Arduino. Pada tahap pertama program ditulis
dalam software arduino IDE, penulisan program menggunakan bahasa C yang
telah ditambahkan library-librari dari arduino sendiri.
Tahap kedua program dapat di analisis dengan fungsi verify yang dimiliki
oleh arduino IDE, ketika ada error pada program yang telah ditulis arduino IDE
akan memberikan notifikasi pada bagian mana program ada yang salah. Disini
program dapat diperbaiki kembali setelah seluruh program dinyatakan benar
oleh arduino IDE, baru dapat melaksanakan tahap terakhir.
Pada tahap terakhir program yang telah dibuat dapat langsung di upload ke
dalam board arduino. Dalam tahap upload ini secara otomatis program akan di
compile/diterjemahkan kedalam bahasa yang dimengerti oleh mesin sekaligus
program akan dimasukkan kedalam board arduino.

3.2.BAHASA PEMROGRAMAN
Dalam pemrograman komputer dikenal dua jenis tingkatan bahasa, jenis
yang pertama adalah bahasa pemrograman tingkat tinggi (high level language)
dan jenis yang kedua adalah bahasa pemrograman tingkat rendah (low level
language). Bahasa pemrograman tingkat tinggi lebih berorientasi kepada
manusia yaitu bagaimana agar pernyataan-pernyataan yang dituliskan dalam
program mudah untuk manusia. Sedangkan bahasa tingkat rendah lebih
berorientasi ke mesin, yaitu bagaimana agar komputer dapat langsung
mengintepretasikan pernyataan-pernyataan program yang ditulis.
Untuk mengerjakan suatu tugas tertentu, program yang ditulis dalam
bahasa tingkat rendah relative lebih panjang dan lebih sulit dipahami, namun
kelebihannya adalah lebih efisien dan lebih cepat untuk dieksekusi oleh mesin.
Bahasa tingkat tinggi memerlukan compiler untuk mengkonversi instruksiinstruksi ke dalam bahasa mesin.
Bahasa C adalah bahasa pemrograman yang tingkat keefektifannya
mendekati baha assembler. Object code yang dihasilkan bahasa C sangat kecil
dan dengan cepat dapat dieksekusi. Karena itulah pemrograman hardware
menggunakan bahasa C. Bahasa C dapat digunakan didalam sistem operasi

windows atau linux bisa juga menggunakan compiler lain. Bahasa C mudah
dipelajari karena pernyataannya yang subyektif tergantung kemampuan tiap
individu. Arduino menggunakan bahasa C yang ditambahkan library-librari
yang dimiliki oleh arduino sendiri.

3.3.STRUKTUR PENULISAN PROGRAM


Struktur Program:
#include < >
[variable global]
[fungsi]

//library optional
//opsional
//opsional

void setup() {

//pengaturan I/O
}
//program utama
void loop() {

// fungsi perulangan
[deklarasi variabel local]

3.4.TIPE DATA
Tipe-tipe data dalam pemrograman C adalah sebagai berikut.

void
: tipe data yang tidak mengembalikan nilai
boolean
: benar/salah atau true/false
char
: 1 byte (-128 s/d 127)
unsigned char : 1 byte (0 s/d 255)
byte
: 1 byte (0 s/d 255)
int
: 2 byte (-32768 s/d 32767)
unsigned int
: 2 byte (0 s/d 65535)
word
: 2 byte (0 s/d 65535)
long
: 4 byte (-2147483648 s/d 2147483647)
unsigned long : 4 byte (0 s/d 4294967295)
short
: 2 byte (-32768 s/d 32767)
float
: bilangan desimal
double
: 4 byte (-2147483648 s/d 2147483647)
string (char array)
: kumpulan data dengan tipe data char
String (objek) : gabungan 1/lebih karakter
array
: kumpulan data-data yang sama tipenya

3.5.BASIS ANGKA

Biner
Desimal

: diawali dengan 0b, contoh : 0b11110011


: ditulis seperti biasa, contoh : 15, 5, 93

Hexadesimal

: diawali dengan 0x, contoh : 0xFF, 0x5B, 0x0A

3.6.PENYIMPANAN DATA

Variabel
Adalah memori penyimpanan data yang nilainya dapat diubah-ubah.
Deklarasi
: [tipe data] [nama] = [nilai];

Konstanta
Adalah memori penyimpanan data yang nilainya tidak dapat diubah.
Deklarasi
: const [tipe data] [nama] = [nilai];

Sifat dari penyimpan data :

Global

program.
Local
: variabel/konstanta yang hanya dapat diakses oleh fungsi

variabel/konstanta yang dapat diakses di seluruh bagian

tempat dideklarasikannya.

3.7.OPERASI LOGIKA DAN BINER


Logi

AND

&&
OR : ||
AND : &
OR : |

ka
Bine
r

NOT

XOR : ^
Shift left : <<

:!

Right shift : >>


Komplemen : ~

3.8.OPERASI RELASIONAL (PERBANDINGAN)

Sama dengan
Tidak sama dengan
Lebih besar
Lebih besar sama

dengan
Lebih kecil
Lebih
kecil

:
:
:
:

==
!=
>
>=

:<
sama : <=

dengan

3.9.OPERASI ARITMATIKA
Operator aritmatika bisa berupa +, -, *, /, %, +=, -=, *=, /=, ++, -

+, -, *, / tambah, kurang, bagi

:
+=, -=, *=, nilai disebelah kiri operator di tambah/kurang/kali/bagi

/= :
%

dengan nilai di sebelah kanan operator


Sisa bagi

:
++,

-- Tabmbah satu (increment), kurang satu (decrement)

:
Contoh : a = 5*6+2/1/2-1 ; maka nilai a adalah 30
a*=5
; jika nilai awal a adalah 30, maka nilai a = 30 x 5 =
150
a+=3

; jika nilai awal a adalah 30, maka nilai a = 30 + 3 =

33
a++ ; jika nilai awal a adalah 5, maka nilai a = 5 + 1 = 6
a - - ; jika nilai awal a adalah 5, maka nilai a = 5 1 = 4

3.10.

STATEMENT

Adalah setiap operasi dalam pemrograman yang diakhiri dengan ; atau }.


Statement tidak akan dieksekusi bila diawali dengan tanda // untuk satu baris.
Lebih dari satu baris menggunakan pasangan /* [statement] */. Statement
yang tidak dieksekusi disebut juga comments/komentar.

3.11.

3.12.

CONDITIONAL STATEMENT
if else
if ( [persyaratan] ){ [statement1] ; [statement2] ; }
for
for ( [nilai awal] ; [persyaratan] ; [operasi nilai] ){ [statement1] ;
[statement2] ; }
while
while ( [persyaratan] ) { [statement1] ; [statement2] ; }
do while
do ( [statement1] ; [statement2] ; ) { [persyaratan] }
switch case
switch ( [nama variable] )
{ case nilai1 : [statement] ; break ;
case nilai2 : [statement] ; break ; }

FUNCTION

Adalah sub program yang dipanggil oleh program utama atau program
lainnya.
Penulisan :
[tipe data hasil] [nama fungsi] ( [tipe data input 1] , [tipe data input 2] )
{
[statement]
}

3.13.

LATIHAN

Latihan 1
// Program Artimatika
int i,j ;
i =
j =
i++
j =

11 ;
23 ;
;
j*i-45 ;

Tentukan nilai akhir dari j

Latihan 2
// Program Artimatika
const int p=30,q=40;
int i,j,k ;
i =
j =
i++
k =

10 ;
20 ;
;
i*p-q/j ;

Berapa nilai akhir dari k?

Latihan 3
// Program dengan Looping
const faktor=3;
int i,angka=10;
for (i=0;i<3;i++) {
angka *= faktor ;
angka++;
}

Berapa nilai akhir dari angka?

Latihan 4
// Program Conditional Statement
int hasil=0x0B, faktor, sisa;
void evaluasi() {
switch (sisa) {
case 0 :
faktor=2 ;
break ;
case 1 :
faktor=1 ;
break ;
}
}

Berapa nilai akhir dari hasil?

void setup() {
hasil *= 21 ;
if ((hasil>100) && (hasil<200))
{
hasil += 50 ;
}
else {
hasil -= 50;
}
sisa = hasil % 2;
evaluasi();
hasil += faktor;
}

BAB 8. PEMROGRAMAN DENGAN ARDUINO IDE


4.1.MEMBUAT PROGRAM
Berikut penjelasan mengenai cara istalasi dan penggunaan arduino IDE.
Untuk penggunaan arduino IDE juga dijelaskan fungsi-fungsi yang ada dalam
software tersebut.
Instalasi software arduino:
1. Jalankan arduino-1.0.6-windows.exe jika tidak punya bisa didownload
secara gratis di website resmi arduino
http://arduino.cc/en/Main/Software
2. Akan muncul jendela seperti berikut, tekan tombol I Agree

3. Tekan tombol Next

4. Pilih directori penyimpanan yg diinginkan atau menggunakan directori


default C:\Program Files\Arduino\, lalu pilih Install

5. Tunggu hingga proses install selesai

6. Pilih Install

7. Jika telah selesai pilih Close

Cara menggunakan Arduino IDE :


Berikut tampilan Software Arduino IDE

Keterangan:
1. Verify
buat
2. Upload
3. New
4. Open
5. Save
6. Name File
7. Serial Monitor
8. Tab Propertis
9. Lembar Kerja
10.Result

: untuk menganalisa program yang telah kita


:
:
:
:
:
:
:
:

untuk upload program ke board arduino


membuat lembar kerja baru
membuka file program yang pernah dibuat
menyimpan program yang telah/akan dibuat
: nama file program
menampilkan komunikasi serial
menu propertis untuk Tab
tempat menuliskan program
menampilkan pesan error hasil verify/upload

program
11.Serial Port yang Terkoneksi : menampilkan board arduino dan
port yg digunakan

4.2.COMPILE DAN DOWNLOAD KE CHIP


Sebelum memasukkan program ke arduino ada beberapa pengaturan yang
harus dilakukan yaitu :

Memilih tipe board arduino yang digunakan

Memilih port serial yang digunakan

Cek port serial yang digunakan pada device manager


Klik kanan computer >> Device Manager >> Ports(Com & LPT)

Untuk memasukkan program ke dalam arduino tinggal menekan tombol


upload tunggu hingga prosesnya selesai

4.3.PEMROGRAMAN AVR UNTUK PORT I/O


Tiga register yang harus diset untuk menggunakan port I/O : DDRx, PORTx,
dan PINx. X adalah nama poert yang bersangkutan (B, C, D).

menentukan arah port (output atau input)


Contoh : pinMode( [nomorpin] , [INPUT atau OUTPUT] );
Atau menggunakan syntax berikut:
DDRD=B11111110; //pind D 1 sampai 7 sebagai output, pin D 0
sebagai input

menulis nilai ke port (1 atau 0)


Contoh : digitalWrite( [nomor pin], [HIGH atau LOW] );
digitalWrite( [nomor pin], [1 atau 0] );
Atau menggunakan syntax berikut:
PORTD=B10101000; // memberikan nilai pada pin 7,5,3 HIGH
membaca nilai port sebagai input (1 atau 0)
Contoh : digitalRead( [nomor pin] );

digitalRead( [nomor pin] );


Untuk pengaturan pin I/O di Arduino biasanya menggunakan fungsi khusus
pinMode(nomorPin, INPUT/OUTPUT). Penulisan syntax tersebut dituliskan di awal
dalam void setup().
Pengaturan Hardware:

Contoh Program :
int buttonPin = 12;
int ledPin = 13;
int var0=0;

// tombol terhubung dengan Pin 12


// LED terhubung dengan Pin 13
// memesan variable var0 dengan nilai 0

void setup()
{
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}

// pengaturan digital Pin sebagai INPUT


// pengaturan digital Pin sebagai Output

void loop()
{
var0=digitalRead(buttonPin);
buttonPin ke dalam var0
digitalWrite(ledPin,var0);

// menyimpan hasil pembacaan


// memberi logika 1/0 atau HIGH/LOW ke

dalam ledPin
}

4.4.KOMUNIKASI SERIAL
Arduino IDE menyediakan fungsi Serial Monitor, pengguna menjadi
dimudahkan untuk menggunakan komunikasi serial. Komunikasi serial pada
arduino memiliki beberapa fungsi diantaranya sebagai berikut.
Fungsi-fungsi yang tersedia untuk komunikasi serial arduino:

1. If(Serial)
: untuk memeriksa apakah Port sudah siap
2. Serial.available() : untuk memeriksa apakah data suda ada di buffer
penerima
3. Serial.begin()

: untuk memulai dan men-setting kecepatan trasmisi

data
4. Serial.end()
5.
6.
7.
8.

: untuk menon-aktifkan pin rx dan tx sebagai

fungsi serial
Serial.find()
: mencari string dalam buffer data
Serial.findUntil() : mencari buffer data sampai syarat tertentu
Serial.flush()
: menunggu data terkirim semua
Serial.parsefloat()
: mengambil data float pertama dari data di

buffer serial
9. Serial.parseInt() : mengambil data integer pertama dari data di buffer
serial
10.Serial.peek()
: mengambil data berikutnya di buffer penerima
11.Serial.print()
: mengirim data ASCII
12.Serial.println() : mengirim data ASCII + CR,LF (kode enter)
13.Serial.read()
: membaca data yang diterima
14.Serial.readBytes()
: membaca data byte yang diterima
15.Serial.readBytesUntil() : membaca data byte yang diterima sampai
syarat tertentu
16.Serial.setTimeout()

: men-setting batas maksimum waktu tunggu

transmisi data
17.Serial.write()
18.Serial.serialEvent()

: mengirim data byte(numerik)


: aktif jika data diterima, berfungsi seperti

interupsi serial.

Contoh Program:
char a;
void setup()
{
Serial.begin(9600);
serial
Serial.println("Halo Dunia");
}

//perintah untuk memulai komunikasi


//perintah untuk mengirim data

void loop()
{
while(Serial.available()){
//cek ada data yg dikirim atau tidak
a=Serial.read();
//menyimpan data yg diterima ke variabel a
Serial.println(a);
//mencetak data variable a
}

4.5.PEMROGRAMAN RELAY
Cara kerja relay hampir sama dengan LED, relay akan bekerja atau berhenti
bila diberi kondisi HIGH/LOW atau 1/0.
Pengaturan Hardware:

Contoh Program :
int buttonPin = 12;
int relayPin = 13;
int var0=0;

// tombol terhubung dengan Pin 12


// relay terhubung dengan Pin 13
// memesan variable var0 dengan nilai 0

void setup()
{
pinMode(buttonPin, INPUT);
// pengaturan digital Pin sebagai INPUT
pinMode(relayPin, OUTPUT);
// pengaturan digital Pin sebagai Output
}
void loop()
{
var0=digitalRead(buttonPin);
// menyimpan hasil pembacaan
buttonPin ke dalam var0
digitalWrite(ledPin,var0);

// memberi logika 1/0 atau HIGH/LOW ke

dalam ledPin
}

4.6.MEMBUAT DELAY
Ada beberapa cara untuk membuat delya: looping, dan fungsi delay.

Perulangan (delay tidak akurat)


Menggunakan conditional statement forto atau while
Contoh : for(int a=0;a<100;a++)
//delay selama 100 kali perulangan
Fungsi delay
Menggunakan fungsi yang sudah termasuk dalam arduino.
Syntax: delay(ms);
Contoh : delay(1000) //delay selama 1000 milisecond atau 1 detik.

Contoh Program :
int ledPin = 13;

// LED terhubung dengan Pin 13

void setup()
{
pinMode(ledPin, OUTPUT);
}

// pengaturan digital Pin sebagai Output

void loop()
{
digitalWrite(ledPin,0);
// LED nyala
for(int time=0;time<100;time++){
// delay selama 100 perulangan
}
digitalWrite(ledPin,1);
// LED mati
}
Contoh Program :
int ledPin = 13;

// LED terhubung dengan Pin 13

void setup()
{
pinMode(ledPin, OUTPUT);
}

// pengaturan digital Pin sebagai Output

void loop()
{
digitalWrite(ledPin,0);
delay(1000);
digitalWrite(ledPin,1);
}

// LED nyala
// delay selama 1 detik
// LED mati

4.7.PEMROGRAMAN LCD
Arduino menyediakan library untuk menggunakan perangkat LCD 16x2.
Beberapa fungsi LCD yang ada pada arduino :

LiquidCrystal

(RS,E,D4,D5,D6,D7)
lcd.begin(16,2);
lcd.print(halo, dunia!);

lcd(12,11,5,4,3,2);//

inisialisasi

port

yang

digunakan

// lcd yang digunakan 16x2


// mencetak tulisan halo,dunia!

lcd.setCursor(0,1);

LCD
lcd.clear();
lcd.write([karakter]);

// posisi display (kolom,baris) pada


// membersihkan tampilan LCD
// menampilak 1 karakter

Pengaturan hardware:

Untuk menggunakan fungsi-fungsi LCD, program diawali dengan #include


<LiquidCrystal.h>
Contoh Program:
#include <LiquidCrystal.h>

// library untuk LCD

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // inisialisasi port yang digunakan


(RS,E,D4,D5,D6,D7)
void setup() {
lcd.begin(16, 2);
lcd.print("hello, world!");

// lcd yang digunakan 16x2


// mencetak tulisan halo,dunia!

}
void loop() {
lcd.setCursor(0, 1);
LCD
}

// posisi display (kolom,baris) pada

4.8.PEMROGRAMAN ADC
ADC merupakan nilai analog yang diterima oleh pin analog arduino dan
diubah/diconvert menjadi digital. Untuk mendapatkan nilai ADC dari inputan
menggunakan analogRead()
Pengaturan hardware:

Contoh Program :
#include <LiquidCrystal.h>

// library untuk LCD

LiquidCrystal lcd(13,12,11,10,9,8);

// inisialisasi port yang digunakan

(RS,E,D4,D5,D6,D7)
int analogPin = A0;
int val = 0;

// pin analog yang digunakan


// variabel untuk menyimpan

pembacaan analog
void setup()
{
lcd.begin(16,2);
}

// lcd yang digunakan 16x2

void loop()
{
val = analogRead(analogPin);

// memasukkan pembacaan analog

ke variabel val
lcd.setCursor(0, 1);

// posisi display (kolom,baris) pada

LCD
lcd.print(val);
delay(1000);
lcd.clear();

// cetak val pada LCD


// delay 1 detik
// bersihkan LCD

4.9.PEMROGRAMAN KEYPAD
Berikut salah satu contoh pemrograman keypad.
Pengaturan hardware:

Contoh Program:
#include <LiquidCrystal.h> //memanggil Library lcd
#define c1 6 //mendefinisikan pin 6 Arduino untuk col1 keypad
#define c2 7 //mendefinisikan pin 7 Arduino untuk col2 keypad
#define c3 8 //mendefinisikan pin 8 Arduino untuk col3 keypad
#define r1 9 //mendefinisikan pin 9 Arduino untuk row1 keypad
#define r2 10 //mendefinisikan pin 10 Arduino untuk row2 keypad
#define r3 11 //mendefinisikan pin 11 Arduino untuk row3 keypad
#define r4 12 //mendefinisikan pin 12 Arduino untuk row4 keypad
LiquidCrystal lcd(0,1,2,3,4,5);
//Mendeklarasikan pin lcd (Rs=0;En=1;D1=2;D2=3;D3=4;D4=5 Rw+Gnd);
unsigned char key; //Variable untuk menyimpan karakter hasil penekanan
unsigned char tekan_keypad(){

//Function penekanan Keypad

key='-';
delay(10);
digitalWrite(r1,LOW);
delay(10);
if(digitalRead(c1)==LOW){key='1';}
if(digitalRead(c2)==LOW){key='2';}
if(digitalRead(c3)==LOW){key='3';}
digitalWrite(r1,HIGH);digitalWrite(r2,LOW);

delay(10);
if(digitalRead(c1)==LOW){key='4';}
if(digitalRead(c2)==LOW){key='5';}
if(digitalRead(c3)==LOW){key='6';}
digitalWrite(r2,HIGH);digitalWrite(r3,LOW);
delay(10);
if(digitalRead(c1)==LOW){key='7';}
if(digitalRead(c2)==LOW){key='8';}
if(digitalRead(c3)==LOW){key='9';}
digitalWrite(r3,HIGH);digitalWrite(r4,LOW);
delay(10);
if(digitalRead(c1)==LOW){key='*';}
if(digitalRead(c2)==LOW){key='0';}
if(digitalRead(c3)==LOW){key='#';}
digitalWrite(r4,HIGH);
delay(10);
return key;
}
void setup() {
// put your setup code here, to run once:
pinMode(c1,INPUT); //menjadikan col1 sebagai INPUT
pinMode(c2,INPUT); //menjadikan col2 sebagai INPUT
pinMode(c3,INPUT); //menjadikan col3 sebagai INPUT
pinMode(r1,OUTPUT); //Menjadikan row1 sebagai OUTPUT
pinMode(r2,OUTPUT); //Menjadikan row2 sebagai OUTPUT
pinMode(r3,OUTPUT); //Menjadikan row3 sebagai OUTPUT
pinMode(r4,OUTPUT); //Menjadikan row4 sebagai OUTPUT
//Memberi logika HIGH pada col1-col3 dan row1-row4
digitalWrite(c1,HIGH);
digitalWrite(c2,HIGH);
digitalWrite(c3,HIGH);
digitalWrite(r1,HIGH);
digitalWrite(r2,HIGH);
digitalWrite(r3,HIGH);
digitalWrite(r4,HIGH);
//Inisialisai LCD (16x2)

lcd.begin(16,2);
}
void loop() {
// put your main code here, to run repeatedly:
tekan_keypad();//Memanggil Function penekanan keypad
if(key!='-'){ //Jika isi key bukan '-'
lcd.write(key); //menampilkan hasil penekanan ke lcd
delay(200);
}
}

4.10.

PEMROGRAMAN PWM

Pulse Width Modulation (PWM). Pada Arduino UNO terdapat beberapa pin
yang support dengan fungsi PWM ini. Untuk memberikan nilai keluaran pin
PWM menggunakan analogWrite() dengan nilai 0-255, contoh analogWrite(255)
maksimum PWM yang digunakan, analogwrite(127) setengah kemampuan
PWM yang digunakan.

Pengaturan hardware:

Contoh Program:
int ledPin = ;

// led terhubung ke pin 9

int analogPin = A0; // potentiometer terhubung ke pin analog 3


int val = 0;

// variable untuk menyimpan pembacaan potensiometer

void setup()
{
pinMode(ledPin, OUTPUT); // pengaturan pin sebagai OUTPUT
}
void loop()
{
val = analogRead(analogPin); // membaca masukan pin
analogWrite(ledPin, val / 4);
// analogRead bernilail dari 0-1023,analogWrite bernilai 0-255
}