Pemrograman Arduino Untuk Pemula
Pemrograman Arduino Untuk Pemula
i
Kata Pengantar
ii
Daftar Isi
Cover ................................................................................................................................................ i
Kata Pengantar ................................................................................................................................ ii
Daftar Isi ........................................................................................................................................ iii
Daftar Gambar ................................................................................................................................ v
Bab 1 Pengenalan Arduino ......................................................................................................... 1
1.1. Pengenalan Mikrokontroler dan Arduino ......................................................................... 1
1.2. Arduino IDE ..................................................................................................................... 2
1.3. Instalasi Arduino IDE....................................................................................................... 3
Bab 2 Dasar Pemrograman Bahasa C/C++................................................................................. 6
2.1 Struktur Penulisan Bahasa C ............................................................................................ 6
2.2 Tipe-tipe data dalam Bahasa C......................................................................................... 7
2.3 Deklarasi Variabel dan Konstanta .................................................................................... 7
2.4 Pernyataan ........................................................................................................................ 8
2.5 Fungsi ............................................................................................................................... 8
2.6 Pernyataan berkondisi dan Pengulangan .......................................................................... 9
2.7 Operasi Logika dan Bilangan Biner ............................................................................... 10
2.8 Operasi Aritmatika ......................................................................................................... 11
2.9 Ekspresi Bilangan ........................................................................................................... 11
Bab 3 Pemrograman Dasar Arduino ......................................................................................... 12
3.1 Fitur-Fitur Arduino Uno ................................................................................................. 12
3.2 Pemrograman I/O Pin Digital Arduino UNO ................................................................. 14
3.2.1 Percobaan 1 – Menyalakan LED ............................................................................ 14
3.2.2 Percobaan 2 – Running LED .................................................................................. 16
3.2.3 Percobaan 3 – Membaca Input Dari Tombol .......................................................... 17
3.2.4 Percobaan 4 – Input Dua Tombol ........................................................................... 19
3.2.5 Percobaan 5 – Counter dengan Push Button ........................................................... 20
Bab 4 Analog to Digital Converter (ADC) ............................................................................... 22
4.1 Pengenalan ADC ............................................................................................................ 22
4.2 Pemrograman Analog to Digital Converter ................................................................... 23
iii
4.2.1 Percobaan 1 – Membaca Nilai ADC ....................................................................... 24
4.2.2 Percobaan 2 – Membaca Tegangan Analog............................................................ 25
4.3 Sensor Suhu Analog LM35 ............................................................................................ 26
Bab 5 Pemrograman Liquid Crystal Display (LCD) ................................................................ 29
5.1 Alphanumeric LCD 16x2 ............................................................................................... 29
5.2 Pemrograman LCD Alphanumeric 16x2........................................................................ 30
Bab 6 Pemrograman Aktuator .................................................................................................. 33
6.1 Pengendalian Motor DC Brushed .................................................................................. 33
6.2 Pengendalian Motor Servo ............................................................................................. 36
Bab 7 Penutup ........................................................................................................................... 38
iv
Daftar Gambar
v
Bab 1
Pengenalan Arduino
Buku ini dibuat dengan konsep yang sederhana sehingga pemula dapat mempelajari
Arduino dengan mudah dan menyenangkan. Dalam mempelajari arduino dari buku ini,
diperlukan pengetahuan dasar mengenai komponen elektronika serda dasar bahasa
pemrograman. Di dalam buku akan disajikan dasar-dasar dari penggunaan arduino serta modul-
modul pendukung serta komponen-komponen elektronika yang dibutuhkan.
Setiap pembahasan dalam buku ini akan diikuti dengan praktek, mulai dari pembuatan
rangkaian elektronik, pemrograman dan pemecahan masalah. Hal ini ditujukan agar pemula
dapat menguasai penggunaan arduino dengan baik dan benar. Berbagai macam projek menarik
akan digunakan sebagai latihan.
Sebelum mulai mempelajari Arduino dan pemrogrammannya, terlebih dahulu kita akan
membahas mengenai mikrokontroler. Mikrokontroler adalah sebuah komponen elektronika
berupa IC (Integrated Circuit) yang di dalamnya terdapat prosesor, memori dan perangakat I/O
(Input/Ouputt). Mikrokontroler dapat dikatakan sebagai sebuah komputer yang berukuran sangat
kecil dan dapat diisi program. Mikrokontroler sering dikenal juga dengan sebutan MCU, uC, µC.
Ada banyak sekali produsen IC yang memproduksi mikrokontroler, antara lain adalah , Atmel
(sekarang dibeli Microchip), NXP, Texas Instruements, Maxim, ST Microelectronics, Philips
dan masih banyak lagi.
Arduino sendiri adalah sebuah development board yang didalamnya terdapat sebuah
mikrokontroler sebagai komponen utama, serta beberapa komponen elektronika pendukung. Jadi
pada dasarnya, arduino bukanlah mikrokontroler, akan tetap sebuah rangkaian sistem minimum
dari mikrokontroler yang dipasang pada sebuah PCB. Dengan rangkaian system minimum ini,
maka mirkokontroler dapat diprogram dan digunakan untuk berbagai macam aplikasi
elektronika. IC Mikrokontroler buatan Atmel merupakan produk mikrokontroler yang digunakan
di Arduino. Arduino sendiri ada banyak variannya, namun dari banyak varian tersebut yang
sering digunakan adalah Arduino Uno.
1
Gambar 1.1 Board Arduino Uno
2
Interface Arduino IDE tampak seperti gambar 1.2. Dari kiri ke kanan dan atas ke bawah,
bagian-bagian IDE Arduino terdiri dari:
Verify : pada versi sebelumnya dikenal dengan istilah Compile. Sebelum aplikasi diupload
ke board Arduino, biasakan untuk memverifikasi terlebih dahulu sketch yang dibuat. Jika ada
kesalahan pada sketch, nanti akan muncul error. Proses Verify / Compile mengubah sketch ke
binary code untuk diupload ke mikrokontroller.
Upload : tombol ini berfungsi untuk mengupload sketch ke board Arduino. Walaupun kita
tidak mengklik tombol verify, maka sketch akan di-compile, kemudian langsung diupload ke
board. Berbeda dengan tombol verify yang hanya berfungsi untuk memverifikasi source code
saja.
New Sketch : Membuka window dan membuat sketch baru
Open Sketch : Membuka sketch yang sudah pernah dibuat. Sketch yang dibuat dengan IDE
Arduino akan disimpan dengan ekstensi file .ino
Save Sketch : menyimpan sketch, tapi tidak disertai mengcompile.
Serial Monitor : Membuka interface untuk komunikasi serial, nanti akan kita diskusikan
lebih lanjut pada bagian selanjutnya
Keterangan Aplikasi : pesan-pesan yang dilakukan aplikasi akan muncul di sini, misal
"Compiling" dan "Done Uploading" ketika kita mengcompile dan mengupload sketch ke
board Arduino
Konsol : Pesan-pesan yang dikerjakan aplikasi dan pesan-pesan tentang sketch akan muncul
pada bagian ini. Misal, ketika aplikasi mengcompile atau ketika ada kesalahan pada sketch
yang kita buat, maka informasi error dan baris akan diinformasikan di bagian ini.
Baris Sketch : bagian ini akan menunjukkan posisi baris kursor yang sedang aktif pada
sketch.
Informasi Port : bagian ini menginformasikan port yang dipakah oleh board Arduino.
Selain software Arduino IDE, kita juga perlu meng-instal software driver untuk arduino
board yang akan kita gunakan. Untuk driver tersebut langkah-langkahnya adalah sebagai berikut:
1. Pasang board Arduino Anda ke port USB pada komputer atau laptop, kemudian tunggu
hingga Windows mencoba untuk menginstall driver sendiri. Biasnya proses ini gagal
3
mengenali Arduino kita sebagai device yang baru. Untuk itu kita harus melakukan instalasi
driver secara manual.
2. Klik tombol start pada Windows, kemudian pada kolom search, ketikkan “device
manager”.
3. Pada Device Manager, perhatikan bagian Ports (COM & LPT), akan muncul device baru
dengan nama "Arduino UNO (COMxx)".
4. Klik kanan pada "Arduino UNO (COMxx)", kemudian pilih "Update Driver Software".
5. Selanjutnya pilih "Browse my computer for Driver software".
6. Cari folder software Arduino Anda, kemudian cari folder driver, setelah itu klik “Next”,
maka computer akan mncari driver untuk arduino secara otomatis.
7. Setelah driver terinstal, maka sekarang akan muncul nomor COM setiap kali kita tancapkan
Arduino ke USB komputer.
Setelah driver terinstal dengan baik, selanjutnya kita dapat mencoba menguload sebuah
sampel program ke dalam Arduino untuk memastikan Arduino board dan Arduino IDE siap
untuk digunakan.
1. Jalankan Aplikasi Arduino (arduino.exe), pada pojok kanan bawah akan ada tulisan "Arduino
UNO on COMxx". Berarti port yang digunakan Arduino adalah COMxx, jika tulisan tersebut
tidak muncul, berarti instalasi driver belum berhasil atau board Arduino belum
disambungkan ke komputer.
2. Selanjutnya, silakan buka sampel led flip-flop dengan cara Klik menu File > Examples >
1.Basic > Blink.
4
3. Setting board Arduino dengan cara : Klik menu Tools > Board > Arduino UNO.
4. Pilih port yang digunakan Arduino dengan cara mengklik menu Tools > Ports > (pilih yang
ada Arduino-nya).
5. Klik tombol upload (tombol denga panah ke kanan).
6. Setelah berhasil diupload, akan muncul tulisan "Done uploading" di bagian bawah. Jika
berhasil, maka LED dengan tulisan "L" pada board Arduino akan kelap-kelip
5
Bab 2
Dasar Pemrograman Bahasa C/C++
[functions] // Opsional
{
[Deklarasi local variable/constant]
[Isi Program Utama]
}
Keterangan:
Opsional artinya boleh ditulis boleh tidak, menyesuaikan kebutuhan. Tuliskan library
(pustaka) apa saja yang digunakan dan lain sebagainya.
Penulisan variabel dilakukan di awal agar aman bisa digunakan sepanjang program,
demikian juga dengan deklarasi fungsi-fungsi yang terlibat
Struktur penulisan bahasa pemrograman pada Arduino IDE tidak jauh berbeda
6
#include < [library1.h] > // Opsional
[functions] // Opsional
{
[Deklarasi local variable/constant]
[Program inisialisasi]
}
Void loop()
{
[Deklarasi local variable/constant]
[Program utama]
}
Yang perlu diperhatikan dalam bahasa C/C++ adalah, pada tiap akhir perintah /syntax
ditutup dengan tanda titik koma (;).
7
Penulisan :
Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah.
Penulisan :
const [nama] = [nilai];
Local variable atau constant hanya dapat diakses oleh fungsi tempat dideklarasikannya.
2.4 Pernyataan
Statement atau pernyataan adalah setiap operasi dalam pemrograman, harus diakhiri
dengan [;] atau [}]. Pernyataan tidak akan dieksekusi bila diawali dengan tanda [//] untuk satu
baris. Lebih dari 1 baris gunakan pasangan [/*] dan [*/]. Pernyataan yang tidak dieksekusi
disebut juga komentar.
Contoh:
2.5 Fungsi
Function atau fungsi adalah bagian program yang dapat dipanggil oleh program utama.
Penulisan :
[tipe data] [nama function]([tipe data input 1],[tipe data input2])
[pernyataan_1];
[pernyataan_2];
...
8
2.6 Pernyataan berkondisi dan Pengulangan
if ( [persyaratan] ) {
[statement1];
[statement2];
...
}
else
{
[statement3];
[statement4];
...
}
for : digunakan untuk pengulangan dengan jumlah yang sudah diketahui – berapa kali
diulang.
while: digunakan untuk pengulangan (looping) jika dan sealama memenuhi suatu kondisi
masih dipenuhi (pengulangan selama benar
while ( [persyaratan] )
{
[statement1];
[statement2];
...
}
do while: digunakan untuk pengulangan jika dan selama memenuhi syarat tertentu, namun
min 1 kali
9
do
{
[statement1];
[statement2];
...
}
while ([persyaratan])
Operator Logika:
AND : &&
OR : ||
NOT :!
Biner :
AND :&
OR : |
NOT :!
XOR :^
Shift right : >>
Shift left : <<
Lebih besar sama dengan : >=
Lebih kecil sama dengan : <=
Lebih besar/kecil :> , <
10
2.8 Operasi Aritmatika
Operator Keterangan
+, -, *, / Tambah, kurang, kali dan bagi
Nilai di sebelah kiri operator ditambah,
+=, -=, *=, /= dikurangi, dikali atau dibagi dengan nilai di
sebelah kanan operator.
% Sisa pembagian
Ditambah 1 (increment) atau dikurangi satu
++, -- (decrement)
Contoh:
a = 5 * 6 + 2 / 2 – 1 -> hasilnya 30
a *= 5 -> jika nilai awal a=30, maka hasilnya 150
a += 3 -> jika nilai awal a=30, maka hasilnya 33
a++ -> jika nilai awal a=5, maka hasilnya 6
a-- -> jika nilai awal a=5, maka hasilnya 4, dst
Biner
Ditulis dengan awalan huruf „0b‟ atau „0B‟. Contoh : 0b10101010, 0B1111000
Desimal
Ditulis langsung tanpa awalan. Contoh : 124, 325
Oktal
Ditulis dengan awalan angka „0‟. Contoh: 075, 035
Hexadesimal
Ditulis dengan awalan „0x‟ atau „0X‟. Contoh: 0xff, 0XF4
11
Bab 3
Pemrograman Dasar Arduino
Pada bab ini, kita akan mulai mempelajari cara pemrograman Arduino. Sebelum memulai
alangkah baiknya mengenal lebih detail mengenai fitur-fitur serta karakteristik dari arduino,
sehingga kita dapat menggunakan arduino dengan resiko kesalahan sekecil mungkin. Setelah itu
dilanjutkan dengan membuat program-program sederhana untuk mengendalikan rangkaian
elektronik sederhana.
Dalam buku ini kita akan lebih banyak menggunakan board Arduino Uno sebagai media
untuk belajar. Pada board Arduino Uno, mikrokontroler yang digunakan adalah seri
ATmega328P, yang merupakan salah satu produk dari perusahaan Atmel. Berikut ini adalah fitur
yang dimiliki oleh ATmega328P yang digunakan oleh Arduino Uno :
12
Speed Grade:
• 0 - 20 MHz @ 1.8 - 5.5V
Selain itu, pada board Arduino Uno, terdapat komponen elektronik lain yang mendukung
kinerja dari Arduino tersebut. Komponen tesebut antara lain IC regulator, USB to serial
converter, led indicator pin analog dan digital dan beberapa komponen pasif pendukung. IC
regulator yang terpasang di Arduino Uno mampu menurunkan tegangan dari Vin 12 Volt
menjadi 5 V. Tegangan 5 Volt inilah yang diperlukan untuk mengoperasikan mikrokontroler
ATmega328P. Devaive USB to serial converter berfungsi untuk mengupload program dari
komputer ke arduino serta digunakan sebagai jalur komunikasi serial antara komputer dan
arduino. Pada arduino uno terdapat total 13 pin digital dan 6 pin analog yang masing masing pin
mampu mensuplay arus sebesar 20 mA. Lebih jelasnya dapat dilihat pada gambar berikut.
13
3.2 Pemrograman I/O Pin Digital Arduino UNO
Arduino uno memiliki total 13 pin digital yang dapat digunakan sebagai INPUT ataupun
OUTPUT. Sesuai dengan namanya, pin digital ini hanya dapat mengeluarkan ataupun menerima
inputan logika digital 1 dan 0 atau 5 dan 0 volt. Jika pin digital ini digunakan sebagai output,
masing-masing pin hanya mampu mengeluarkan tegangan maksimal 5 volt dengan arus
maksimal 20 mA. Hal ini perlu diperhatikan terutama bagi pemula, agar tidak membebani pin
digital ini lebih dari rating tegangan dan arus tersebut, karena dapat merusak arduino.
Sebagai latihan pertama, kita akan coba menyalakan lampu LED melalui pin digital. Perlu
diketahui bahawa LED merupakan komponen elektronika yang jika diberi tegangan kan
menghasilkan cahaya dengan warna tertentu. Dalam percobaan ini LED dihubungkan ke pin
digital arduino dan diseri dengan resistor pada masing-masing LED. Fungsi dari resistor ini
untuk mengamankan LED dari resiko putus atau terbakar. Berikut adalah daftar alat dan bahan
yang diperlukan:
14
Langkah Kerja
1. Rangkai komponen-komponen yang diperlukan pada project board seperti pada skema
2. Jalankan Aduino IDE dan buat program baru untuk mengendalikan LED seperti contoh
berikut:
#define LED 12
void setup() {
void loop() {
3. Pastikan jenis board serta port COM sesuai dengan COM arduino yang terdeteksi di device
manager.
4. Upload program dengan meng-klik tombol upload. Jika tidak ada masalah, maka program
akan di upload ke arduino uno dan akan segera dijalan setelah proses upload selesai
Modifikasi Program
Modifikasi program diatas dengan tambahan syntak „delay()‟ untuk mengatur waktu
nyala dan mati dari LED. Kemudian upload dan amati apa yang terjadi.
#define LED 12
void setup() {
void loop() {
15
Penjelasan Program
Syntak „#define LED 12‟, digunakan untuk memberi nama bagi pin 12 dengan nama
LED. Sehingga kita tinggal memanggil pin 12 dengan nama „LED‟
Syntak „pinMode(LED,OUTPUT); ‟, digunakan untuk membuat pin LED (pin 12) arduino
menjadi mode output. Semua program yang ditulis di dalam struktur void setup() hanya
akan dieksekusi sekali saja.
Syntak „digitalWrite(LED,HIGH);‟, digunakan untuk mengirimkan sinyal logika HIGH
/ logika 1 ke pin LED. Logika 1 setara dengan tegangan 5 Volt. Dikarenakan pin LED
terhubung ke kutup positif dari LED dan kutup negatifnya terhubung ke GND (0 volt ),
maka LED akan menyala. Sebaliknya, jika yang diberikan adalah logika LOW, maka LED
akan mati, karena pin LED menjadi berlogika 0 atau setara dengan tegangan 0 volt.
Syntak „delay(1000);‟ , digunakan untuk menunda eksekusi program. Angka didalam
kurung adalah lama waktu penundaan dengan satuan mili detik, sehingg 1000 mdetik setara
dengan 1 detik.
Latihan
Dengan alat dan bahan sama seperti pada percobaan 1 buatlah rangkaian untuk
menyalakan 8 buah LED. Kemudian buatlah program baru di Arduino IDE seperti berikut
void setup() {
void loop() {
16
Lanjutan program
//================================================================
// Fungsi
void led_array(int data){
char dataout ;
for(char a=0 ; a<8 ; a++){
dataout = (data >> a) & 0x01 ;
if(dataout == 0){ digitalWrite(LEDs[a], LOW);}
else if (dataout == 1) {digitalWrite(LEDs[a], HIGH) ;}
}
}
Program diatas akan membuat nyala satu persatu secara bergantian denyan rentang waktu
100 mili detik. Penentuan pin digital yang terhubung ke arduino, dijadikan satu kelompok ke
dalam array LEDs[8], sehingga untuk memanggil pin digital tertentu tinggal memanggil nama
LEDs[x], dengan x adalah nomor urutan led dari 0 s/d 7. Pada inisialisasi, digunakan
perulangan for untuk membuat tiap pin digital yang terhubung ke LED menjadi output. Fungsi
led_aray() digunakan untuk menyalakan atau mematikan ke-delapan LED.
Bualah rangkaian seperti pada gambar di bawah pada sebuah project board. Pada
dasarnya rangkaian berikut masih menggunakan rangkaian pada percobaan 1 hanya saja
ditambahi sebuah saklar push button (PB) yang berfungsi sebagai input. Pada percobaan ini,
input untuk pin digital 7 dihubungkan ke GND melaluI PB. Sebenarnya semua pin I/O di arduino
uno dapat digunakan sebagai input, jadi programmer dapat dengan bebas memilih pin mana yang
akan digunakan, selam pin tersebut belum digunakan untuk keperluan lainnya.
17
Gambar 3.3 Skema pengendali LED dengan push button
Buatlah program baru atau program pada percobaan 1 yang dimodifikasi dengan
menambahkan perintah untuk membaca input digital dari tombol.
void setup() {
pinMode(LED, OUTPUT);
pinMode(PB, INPUT_PULLUP); // Membuat pin PB jadi input /membaca
void loop() {
18
Program diatas akan membuat LED menjadi mati ketika tombol tidak ditekan, dan akan
menyala jika tombol ditekan. Silahkan dicoba-coba apa yang terjadi jika kondisi yang
dibandingkan adalah HIGH bukan LOW.
Setelah sukses pada percobaan 3, selanjutnya tambahi rangkaian dengan satu tombol.
Kemudian buat atau modifikasi program sebelumnya agar bisa menyakan led dengan tombol 1
dan mematikan led dengan tombol 2.
char kondisi_led ;
void setup() {
pinMode(LED, OUTPUT);
pinMode(PB1, INPUT_PULLUP); // Membuat pin PB jadi input /membaca
pinMode(PB2, INPUT_PULLUP);
void loop() {
digitalWrite(LED, kondisi_led);
}
Pada program diatas terdapat variable kondisi_led yang berfungsi untuk menyimpan
kondisi terakhir dari led (nyala/mati). PB1 digunakan untuk menyalakan led dan PB2 digunakan
untuk mematikan led.
Latihan : Gabungkan program led berjalan dengan tombol sebagai pemicu on/off-nya !
19
3.2.5 Percobaan 5 – Counter dengan Push Button
Counter atau penghitung jumlah suatu kejadian bisa dilakukan dengan menggunakan
arduino. Dalam percobaan ini, kita akan mencoba menghitung berapa kali tombol ditekan, dan
pada hitungan tertentu maka akan menyalakan led. Masih menggunakan rangkaian led dan push
button seperti sebelumnya.
char hitung ;
void setup() {
pinMode(LED, OUTPUT);
pinMode(PB, INPUT_PULLUP); // Membuat pin PB jadi input /membaca
}
void loop() {
Penjelasan:
char hitung adalah variable dengan tipe char yang digunakan untuk menyimpan hasil
perhitungan.
Pada void loop(), terdapat syntak if yang akan membaca logika dari tombol. Jika
tombol ditekan, maka nilai variable hitung akan bertambah 1 dengan menggunakan syntak
hitung++.
delay(200)digunakan untuk anti bouncing.
Pada syntak if yang berikutnya, digunakan untuk membandingkan nilai yang ada di
variable hitung dengan nilai yang kita inginkan (contoh 10). Jika variable hitung sudah
bernilai 10, maka led akan menyala.
Jadi hasil akhirnya, led akan menyala ketika tombol dipencet sebanyak 10 kali.
20
Latihan
Buatlah program yang digunakan untuk menyalakan 2 buah led, dengan aturan :
1. Jika tombol 1 ditekan sebanyak 5 kali maka led 1 menyala.
2. Jika tombol 2 ditekan sebanyak 8 kali maka led 2 menyala.
21
Bab 4
Analog to Digital Converter (ADC)
Pada bab ini kita akan mempelajari, penggunaan Analog to Digital Converter (ADC) yang
merupakan salah satu fitur yang ada pada Arduino. ADC biasa digunakan mengubah tegangan
analog 0 – 5 volt menjadi logika digital 1 dan 0 (5 dan 0 volt) yang dimengerti oleh arduino.
ADC sering digunakan sebagai digital voltmeter dengan teganan input maksimal 5 volt, dan
dapat digunakan juga untuk membaca sensor-sensor yang keluarannya masih analog.
Dalam penggunaan ADC, tegangan yang terbaca pada pin analog diubah menjadi kode
desimal antara 0 – 1023. Untuk itu perlu dikonversi ke dalam bilangan yang menunjukkan nilai
tegangan yang sebenarnya, berikut rumus untuk mengkonversinya
Dari hasil perhitungan diatas dapat disimpulkan bahwa tegangan terkecil yang mampu
dibaca ADC jika tegangan refesensinya sebesar 5 volt adalah 0,004887 volt atau 4,887 milivolt.
Kemudian kita dapat mengkonversi hasli pembacaan ADC menjadi nilai tegangan dengan
menggunakan cara sebagai berikut:
22
Vout = Nilai tegangan sebenarnya yang dibaca ADC
Sebagai contoh, arduino digunakan untuk membaca tegangan baterai AAA. Setelah
dimasukkan ke pin ADC, arduino membaca nilai dari baterai adalah 512. Berapakah tegangan
sebenarnya baterai tersebut jika arduino menggunkana tegangan referensi AVCC 5 volt.
Jawab :
= 2,5004
2, 5 volt.
Untuk meningkatkan akurasi pembacaan tegangan, misa untuk membaca tegangan yang
kecil, maka kita dapat memperkecil tegangan referensinya melalui pin AVCC, atau dapat
menggunaka tegangan referensi internal sebesar 1,1 volt. Yang perlu diperhatikan saat
mengganti nilai tegangan referensi adalah, kita harus menghitung ulang berapa tegangan terkecil
yang mampu dibaca ADC. Selain itu, tegangan input maksimal yang bisa dibaca ADC adalah
sebesar tegangan referensi yang digunakan.
Untuk mempelajari cara penggunaan ADC di arduino, kita akan membuat rangakaian
sederhana untuk membaca tegangan. Tegangan yang akan dibaca adalah tegangan dari VCC, dan
dilewatkan pada sebuah potensiometer agar tegangan dari VCC dapat diubah-ubah. Nilai dari
hasil pembacaan ADC ini natinya akan ditampilkan ke Serial Monitor pada Arduino IDE.
23
4.2.1 Percobaan 1 – Membaca Nilai ADC
Buatlah rangkaian seperti pada gambar dibawah pada project board.
Kemudian buatlah program untuk membaca nilai ADC menggunakan Arduino IDE.
Berikut contoh programnnya.
#define potensio 0
int nilai_ADC ;
void setup() {
Serial.begin(9600);
void loop() {
nilai_ADC = analogRead(potensio);
24
Penjelasan:
Pin analog 0 (ADC 0) yang digunakan diberi nama potensio dengan di-define-kan. Untuk
pembacaan analog cukup ditulis nomornya saja, tapi jika digunakan untuk I/O digital ditulis
dengan huruf “A” diikuti nomor urut pin (misal A0, A1, dst).
Serial.begin(9600) , digunakan untuk membuka jalur komunikasi serial arduino dan
komputer (melalui USB), dengan kecepatan 9600 bps (bit per second).
nilai_ADC = analogRead(potensio), digunakan untuk membaca input analog
pada pin potensio (A0).
Serial.print & Serial.println , digunakan untuk menampilkan data teks ke
serial monitor melalui USB port. Tambahan huruf “ln” , digunakan untuk pindah baris
pada serial monitor.
Delay(500) digunakan untuk memperlambat pengiriman data, agar mudah dibaca. Data
dikirim setiap 500 mili detik.
Pada percobaan sebelumnya, kita sudah bisa membaca nilai ADC dari suatu input
tegangan analog, akan tetapi informasi yang diperoleh masih sulit untuk dimegerti oleh manusia.
Maka dari itu pada percobaan kali ini, kita akan membuat arduino bisa menampilkan nilai
tegangan sebenarnya dari nilai ADC yang sudah terbaca, dengan menggunakan rumus yang
sudah dijelaskan sebelumnya.
#define potensio 0
int nilai_ADC ;
float volt ;
void setup() {
Serial.begin(9600);
void loop() {
nilai_ADC = analogRead(potensio);
25
Serial.print("Nilai ADC : ");
Serial.println(nilai_ADC);
Serial.print("Tegangan = ");
Serial.print(volt,2);
Serial.println(" volt");
Serial.println();
delay(500);
Program diatas akan menampilkan nilai tegangan yang terbaca oleh ADC ke serial
monitor arduino. Coba putar-putar potensiometer dan lihat apa yang terjadi. Coba ukur tegangan
yang keluar dari potensiometer dengan menggunakan multi meter analog, dan bandingkan
dengan hasil pembacaan arduino.
Catatan:
Variabel untuk menampung nilai ADC menggunakan tipe data int (integer). Tipe data
integer hanya bisa menampung nilai bilangan bulat, tidak bisa dipakai untuk bilangan decimal.
Sedangkan tipe data float yang dipakai untuk menampung nilai volt, bisa digunakan untuk
bilangan desimal. Dikarenakan volt dikalikan dengan bilangan decimal (0,004887) maka
variable penampungnya harus float.
Latihan
Buatlah rangkaian dan program untuk mengukur tegangan analog dari dua sumber yang
berbeda. Bisa menggunakan dua buah potensiometer atau menggunakan baterai. Tampilkan hasil
pembacaan tegangan pada serial monitor.
Salah satu sensor yang sering digunakan untuk proyek mikrokontroler adalaha sensor suhu
LM35. Sensor ini dapat mengukur suhu tanpa kontak 0 – 150o Celcius, sehingga bisa digunakan
untuk mengukur suhu ruangan. LM35 termasuk sensor analog, karena output dari sensor ini
berupa tegangan analog yang linear dengan perubahan suhu sekitar. LM35 akan mengeluarkan
tegangan 10 mili Volt tiap kenaikan suhu 1o Celcius. Untuk menggunakan sensor ini cukup
membaca tegangan keluaran dari sensor melalui ADC arduino. Sumber tegangan yang
diperlukan oleh LM35 adalah 5 Volt DC.
26
Gambar 4.2 Sensor suhu LM35
Pada percobaan berikutnya kita akan mengukur suhu ruangan dengan menggunakan
sensor LM35. Buatlah rangkaian seperti pada gambar berikut
27
Kemudian buatlah program arduino untuk membaca sensor LM35 dan menampilkannya
di Serial Monitor, seperti pada contoh berikut :
#define LM35
int adc_lm35 ;
float suhu ;
void setup() {
Serial.begin(9600);
}
void loop() {
adc_lm35 = analogRead(LM35);
suhu = adc_lm35 * 0.4887 ;
28
Bab 5
Pemrograman Liquid Crystal Display (LCD)
LCD atau Liquid Crystal Display merupakan salah satu perangakat elektronis yang
berfungsi untuk menampilkan karakter, teks, angka maupun simbol. Pada buku ini akan
dipelajari cara pemrograman LCD tipe alphanumeric yang mampu menampilkan teks dan angka
dengan panjang karakter 16 dan 2 baris (16x2).
Jenis LCD yang sering digunakan dalam proyek arduino adalah tipe alphanumeric 16x2 ic
kontroler HD44780. LCD ini menggunakan tegangan kerja 5 volt, sehingga dapat dihubungkan
langsung ke pin VCC arduino tanpa tambahan komponen lain. Untuk menggunakannya
diperlukan 2 jalur perintah dan 4 jalur data yang dapat dihubungkan ke pin I/O arduino mana
saja. Antarmuka dari LCD ini melalui 16 pin deret yang dapat dilihat pada gambar berikut:
29
Berdasarkan karakteristik tersebut, maka semua pin akan digunakan kecuali pin D1 – D3
sebab kita akan menggunakan jalur data untuk transfer 4 bit atau 8 bit. Penjelasan singkat tentang
RS, R/W, dan E:
RS merupakan kependekan dari Register Selector, pin ini berfungsi untuk memilih
register control atau register data. Register control digunakan untuk mengkonfigurasi
LCD, sedangkan register data digunakan untuk menuliskan data berupa karakter untuk
ditampilkan di LCD.
R/W atau Read/Write, digunakan untuk memilih aliran data mikrokontroller akan
membaca data yang ada di LCD atau menuliskan data ke LCD. Jika LCD hanya
digunakan untuk menulis / menampilkan data, maka pin ini bisa langsung disambungkan
ke GND sehingga logika bisa diset menjadi L (Low).
E atau Enable, digunakan untuk mengaktifkan LCD ketika proses penulisan data ke
register control dan regiter data.
Untuk memprogram LCD diperlukan 6 pin digital pada arduino. Komponen tambahan yang
diperlukan untuk merangkai LCD antara lain beberapa kabel jumper dan sebuah potensiometer.
Potensiometer ini berfungsi untuk mengatur kontras backlight LCD. Berikut langkah-langkah
yang perlu dilakukan :
Untuk lebih jelasnya mengenai rangkaian LCD, dapat dilihat pada gambar rangkaian
berikut:
30
Gambar 5.2 Rangkaian Arduino dan LCD alphanumeric 16x2
Program berikut ini berfungsi untuk membaca nilai ADC dari potensiometer, kemudian
meenampilkan hasil pembacaannya ke LCD.
#include <LiquidCrystal.h>
#define RS 2
#define RW 3
#define D4 4
#define D5 5
#define D6 6
#define D7 7
#define pot 0
int nilai_adc ;
void setup() {
lcd.begin(16, 2);
31
void loop() {
nilai_adc = analogRead(pot);
lcd.setCursor(0, 0);
lcd.print("ADC: ");
lcd.print(nilai_adc);
Latihan
1. Buatlah rangkaian untuk membaca sensor suhu LM35, serta buatlah program untuk
menampilkan hasilnya ke dalam LCD !
2. Buatlah percobaan yang serupa untuk jenis-jenis sensor yang lain seperti LDR, PTC,
NTC dll !
32
Bab 6
Pemrograman Aktuator
Aktuator dalam ilmu elektronika merupakan sebuah komponen yang berfungsi untuk
mengubah energi listrik menjadi energi gerak. Aktuator yang akan dibahas pada bab ini adalah
motor dc dan motor servo.
Motor merupakan salah satau perangkat yang berguna untuk mengubah energy listrik
menjadi energi gerak berputar. Berdasarkan sumber listriknya motor listrik dibagi menjadi motor
DC dan motor AC. Pembahasan kita akan fokus pada motor DC tipe brushed, atau sering disebut
motor dc saja. Motor ini disebut motor brushed karena di dalam mekaniknya masih terdapat sikat
yang menjepit rotornya.
33
Motor DC pada umumnya memiliki rating tegangan maupun arus yang lebih tinggi dari
pada arduino. Untuk itu diperlukan rangkaian khusus yang dapat membantu arduino untuk
mentransferkan energi yang besar ke motor. Biasanya digunakan IC khusus untuk men-drive
motor DC, salah satunya adalah IC L298. IC ini dapat mengendalikan motor dengan tegangan
mencapai 12 volt dan arus hingga 2 A. Untuk mempermudah dalam mempelajari pengendalian
motor DC maka kita akan menggunakan modul driver motor yang sudah banyak terdapat
dipasaran.
Modul driver motor L298 mampu mengendalikan 2 buah motor DC sekaligus, dan sudah
disertai komponen-komponen pendukung. Untuk mengendalikan tiap motor, diperlukan 3 pin (2
pin digital, 1 pin analog pwm), sehingga total terdapat 6 pin pada modul driver ini. Power suplai
yang digunakan antara 5-12 volt dc. Untuk merangkainya cukup hubungkan pin IN1 – IN4 ke
pin digital arduino dan pin Enable A dan B, dihubungkan ke pin pwm arduino. Pada bagian
bawah PCB modul ini sudah disertakan petunjuk tiap-tiap pin yang digunakan.
Untuk mengatur kecepatan motor DC, digunakan teknik Pulse Width Modulation
(PWM). Teknik ini cara kerjanya adalah men-switch pin digital PWM dengan frekuensi tinggi,
34
kemudian diatur lebar pulsanya (duty cycle). Semakin lebar pulsanya maka tegangan keluaran
semakin besar (mendekati 5 volt), sehingga kecepatan motor yang terhubung ke driver L298,
bisa lebih tinggi, dan sebaliknya. Pin PWM pada arduino tidak terdapat pada semua pin digital,
hanya pada pin-pin khusus yang ada simbol “ ~ “ saja. Pin PWM pada arduino biasa disebut juga
pin analog, dan dapat dihubungkan ke pin Enable A/B pada driver motor L298.
int nilai_pot ;
int kecepatan ;
void setup(){
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA, OUTPUT);
}
void loop() {
nilai_pot = analogRead(pot);
kecepatan = map(nilai_pot, 0,1023,0,255);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, kecepatan);
Program diatas berfungsi untuk mebaca data analog dari potensiometer, kemudian nilai
yang terbaca digunakan untuk mengontrol kecepatan motor melalui pin analog output (PWM).
Nilai PWM yang digunakan oleh arduino adalah 0 – 255, sedangkan nilai ADC adalah 0 – 1023,
sehingga perlu dikompresi dengan menggunakan perintah map(). Untuk menyalakan motor
cukup memberi logika yang berbeda pada pin IN1 dan IN2, kemudian mengatur kecepatan
motornya dengan menggunakan perintah analogWrite().
Latihan
Coba modifikasi program agar putaran motor dapat beputar kearah sebaliknya dari
percobaan sebelumnya.
35
6.2 Pengendalian Motor Servo
Jenis motor lain yang sering digunakan untuk projek arduino adalah motor servo. Motor
jenis ini termasuk motor DC, hanya saja sudah terdapat rangkaian khusus didalam motor servo.
Rangkaian ini berfungsi untuk mengendalikan servo agar bisa diatur sudutnya sesuai keinginan
programmer. Servo dapat berputar ke kanan dan ke kiri dengan sudut 0 - 180 derajat. Karena
sudutnya dapat diatur sudutnya dengan presisi, maka motor ini cocok digunakan untuk apalikasi
lengan robot dan projek yang membutuhkan ketepatan sudut.
Untuk memprogram servo tidak dibutuhkan driver motor tambahan, karena driver
motornya sudah tertanam di dalam servo itu sendiri. Kita cukup memberi power supply dengan
arus yang cukup pada pin VCC servo. Pada motor servo terdapat 3 pin, yaitu GND, VCC dan
Signal. Pin VCC 5 volt dan GND dapat dihubungkan langsung ke pin VCC dan GND arduino,
sedangkan pin signal dapat langsung dihubungkan ke pin I/O arduino bebas.
Gambar diatas, menampilakan koneksi wiring antara servo ke arduino. Servo pada
gambar tersebut termasuk servo ukuran standar. Untuk ukuran servo yang lebih kecil biasa
disebut dengan mikro servo. Untuk bahannya sendiri ada yang terbuat dari metal da nada yang
terbuat dari plastic. Untuk yang tipe metal gear biasanya memiliki torssi yang lebih besar
daripada yang plastic gear.
36
Percobaan 2 – Mengendalikan motor servo
Buatlah rangkaian seperti pada gambar 6.3, kemudian buatlah program seperti contoh
berikut
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup() {
myservo.attach(9);
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
delay(15);
}
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(15); }
}
Program diatas akan menggerakkan servo dari sudut 0 ke sudut 180 derajat, kemudian
kembali lagi ke sudut 0 derajat, dan akan berulang terus-menerus. Posisi sudut servo ditentukan
oleh perintah myservo.write(). Yang mana „myservo‟ adalah nama dari servo yang
kita tentukan sendiri. Dan perintah myservo.attach() digunakan untuk menentukan pin
digital arduino yang terhubung ke pin signal arduino.
Latihan
37
Bab 7
Penutup
Arduino adalah salah satu perangkat elektronika yang sangan berguna untuk diterapkan
di sistm otomatis, robotika, instrumentasi, telemetri dan lain sebagainya. Dengan bahasa
pemrograman yang relatif mudah untuk dipelajari dibandingkan bahasa mikrokontroler lainnya.
Kunci utama untuk menguasai pemrograman arduino adalah latihan yang rutin. Dengan
menerapkan arduino ke dalam kehidupan sehari-hari akan membuat pengalaman belajar arduino
menjadi semakin menarik. Jika menemui masalah dalam belajar arduino, bisa memanfaatkan
artikel-artikel yang banyak terdapat di internet. Saat ini arduino cukup populer dikalangan
penggemar elektronika, sehingga tidak sulit mencari tutorial di internet.
Untuk saat ini, arduino mulai banyak diterapkan di system berbasis internet atau yang
lebih dikenal dengan istilah IoT (Internet of Things). Dengan menambah modul-modul yang
dapat berkoneksi dengan internet, maka arduino dapat mengirim dan menerima data melalui
koneksi internet. Selain itu juga banyak tersedia aplikasi- aplikasi online yang mendukung
teknologi IoT, mulai dari yang berbasis web sampai yang berbasis Android.
Yang terpenting adalah jangan pernah menyerah untuk belajar arduino. Tidak ada sesuatu
yang didapat dengan instan.
38