[Link].
com
Pengenalan Arduino
Disertai dengan contoh penggunaan sensor dan aktuator
Oleh: Muhammad Hasan Abdul Malik
2018
[Link]
Kata Pengantar
Sistem otomatis tentunya tidak dapat dipisahkan dari
penggunaan mikrokontroler sebagai pengendalinya, hal ini
dikarenakan mikrokontroler dapat diprogram untuk
menjalankan suatu perintah, selain itu mikrokontroler dapat
berinteraksi dengan lingkungan sekitar melalui sensor yang
digunakan.
Arduino adalah sebuah perangkat yang sudah terintegrasi
dengan mikrokontroller dan rangkaian-rangkaian elektronik
pendukungnya. Arduino memiliki bahasa pemrograman sendiri
yang mudah dipahami karena sudah disediakan contoh-contoh
programnya, Harga yang relatif murah juga menjadi salah satu
kelebihan Arduino.
Membuat sistem otomatis sendiri merupakan hal yang
menarik untuk dipelajari, untuk itu penulis dengan senang hati
menulis Ebook pengenalan Arduino yang disertai dengan
penggunaan sensor dan aktuator, ebook ini ditujukan untuk
pemula, isi dari ebook ini membahas dasar-dasar penggunaan
dan pemrograman Arduino, cara menggunakan sensor serta
beberapa contoh projek otomatisasi sederhana seperti sistem
penyalaan lampu otomatis, penyalaan kipas otomatis, dan
beberapa projek lain.
Anda dapat dengan bebas menyebar luaskan ebook dan juga
mengubah-nya untuk tujuan mengembangkan/memperbaiki,
bukan untuk komersil. Semoga ebook ini dapat bermanfaat dan
dapat membantu anda untuk belajar Arduino, diharapkan anda
juga dapat mengembangkan sistem-sistem yang lebih canggih
lagi dari pada contoh projek yang terdapat dalam buku ini.
Garut, 24 Maret 2018
Muhammad Hasan Abdul Malik
[Link]
Daftar Isi
Bagian 1. Pengenalan dan Instalasi Arduino 6
1.1 Pengenalan Arduino 7
1.2 Pin pada Arduino 10
1.3 Instalasi Arduino IDE 12
1.3.1 Instal Arduino IDE di Windows 12
1.3.2 Instal Arduino IDE di Linux 14
Bagian 2. Syntax 17
2.1 Further Syntax 19
2.2 Syntax Dasar 19
2.3 Percabangan 23
2.4 Perulangan 25
2.5 Operator 29
2.6 Type Data 32
Bagian 3. Memulai program 33
3.1 Program pertama 35
3.2 Rangkaian pertama 38
3.2.1 Running LED 39
3.2.2 Mengontrol LED dengan Push-button 41
3.2.3 Mengendalikan Lampu AC 220V 44
3.3 Membuat Alarm 45
Bagian 4. Penggunaan Serial Monitor 49
4.1 Menampilkan Hasil perulangaan di serial monitor 52
4.2 Counter-up dengan Button 54
4.3 Membaca Tegangan 56
4.4 Menyalakan Lampu Melalui Serial Monitor 57
4.5 Serial Plotter 58
Bagian 5. Mulai Menggunakan Sensor 60
5.1 Sensor Analog 61
5.1.1 Sensor Cahaya LDR 61
5.1.2 Membaca Suhu Ruangan Menggunakan IC LM35 64
5.1.3 Sensor Pendeteksi Gas (MQ-5) 68
5.2 Sensor Digital 72
5.2.1 Sensor HC-SR04 72
Bagian 6. Penggunaan Library di Arduino IDE 76
6.1 Pengenalan Library 77
[Link]
6.2 Mulai Menggunakan Library 78
6.3 Menampilkan Informasi di LCD 16x2 80
6.3.1 Membuat Karakter di LCD 83
6.4 Menambahkan Library kedalam Arduino IDE 87
Bagian 7. Menggerakkan Motor 93
7.1 Motor DC (Direct Current) 94
7.1.1 H-bridge Transistor 95
7.1.2 Driver Motor Menggunakan Relay 97
7.1.3 Driver Motor Menggunakan IC L293D 99
7.2 MotorServo 103
Referensi 107
[Link]
Bagian 1
Pengenalan Board Arduino
dan
Instalasi Artduino IDE
Pada Bagian ini akan membahas :
• Pengenalan Arduino
• Mikrokontroler apa yang digunakan?
• Pin yang terdapat pada Arduino
• Cara instalasi Driver
• Cara instalasi Arduino IDE
[Link]
1.1. Pengenalan Arduino
Arduino is an open source physical computing
platform based on a simple input/output (I/O) board
and a development environment that implements
the Processing language ([Link]).
Arduino can be used to develop standalone
interactive objects or can be connected to software
on your computer (such as Flash, Processing, VVVV,
or Max/MSP). The boards can be assembled by
hand or purchased preassembled; the open source
IDE (Integrated Development Environment) can be
downloaded for free from [Link].
Arduino dikatakan sebagai sebuah platform dari
physical computing yang bersifat open source. Physical
computing adalah membuat sebuah sistem atau
perangkat fisik dengan menggunakan software dan
hardware yang sifatnya interaktif yaitu dapat menerima
rangsangan dari lingkungan dan merespon balik.
Physical computing adalah sebuah konsep untuk
memahami hubungan yang manusiawi antara
lingkungan yang sifat alaminya adalah analog dengan
dunia digital. Pada prakteknya konsep ini diaplikasikan
dalam desain- desain alat atau projek-projek yang
menggunakan sensor dan microcontroller untuk
menerjemahkan input analog ke dalam sistem software
untuk mengontrol gerakan alat-alat elektro-mekanik
seperti lampu, motor dan sebagainya (Djuandi.F, 2011).
Dalam ebook ini, Arduino yang digunakan adalah Arduino
dengan basis Mikrokontroller Atmega328P, diantaranya
adalah Arduino Uno R3, Arduino NanoV3 dan Arduino Pro.
Bentuk fisik dari Arduino in ini dapat dilhat pada Gambar
berikut.
[Link]
Gambar : Bentuk fisik Arduino Nano (Atas kiri), Pro Mini (Atas
kanan) dan Uno (Bawah)
Arduino jenis ini dibuat dengan basis mikrokontroller Atmega
328P, diagram blok dari Mikrokontroller Atmega 328P dapat
dilihat pada Gambar berikut
[Link]
Gambar, Diagram blok Atmega 328P
[Link]
AVR (Alf and vegard’s Risc processor) berteknologi RISC
(Reduced Instruction Set Computing) Mikrokontroler AVR
merupakan bagian dari keluarga mikrokontroler CMOS 8-bit
buatan Atmel. AVR memiliki arsitektur 8-bit, dimana semua
instruksi dikemas dalam kode 16-bit dan sebagian besar
instruksi dieksekusi dalam 1 Siklus Clock . Mikrokontroler AVR
memiliki arsitektur Harvard, yaitu memisahkan memori untuk
kode program dan memori data. AVR berteknologi RISC,
sedangkan seri MCS51 berteknologi CISC (Complex Instruction
Set Computing). AVR dapat dikelompokkan menjadi empat
kelas, yaitu keluarga AT tiny, keluarga AT 90Sxx, keluarga
ATmega dan AT86RFxx. Pada dasarnya yang, membedakan
masing-masing kelas adalah memori, peripheral, dan fungsinya.
1.2. Pin pada Arduino
Pin pada Arduino yang berbasis Mikrokontroller atmega328,
(uno, nano-v3, pro) mempunyai 8 pin Analog yaitu pin A0
sampai pin A7, pin Analog ini hanya bisa digunakan sebagai
input saja, dengan menggunakan ADC (Analog to Digital
Converter) tidak bisa dijadikan sebagai output. Kemudian
mempunyai 14 pin Digital yaitu pin D0 sampai pin D13, hanya
saja pin D0 & D1 sudah ditetapkan sebagai pin RX dan TX,
sehingga tidak bisa digunakan sebagai I/O.
Beberapa pin pada Arduino mempunyai fungsi khusus,
diantaranya:
1. PWM (Pulse Width Modulation), pin tersebut yaitu pin D3,
D5, D6, D9, D10 dan D11. PWM bisa digunakan dengan
menggunakan perintah analogWrite (pin yang digunakan,
nilai PWM) PWM sering digunakan untuk mengatur
kecerahan LED, kecepatan motor DC dan untuk
mengatur putaran motor servo.
2. SPI (Serial Peripheral Interface) : pin tersebut yaitu pin
D10 (SS/ Select slave), D11 (MOSI/ Master Output Slave
In), D12 (MISO/ Master Input Slave In) dan D13 (SCK/
Serial Clock).
3. I2C (Inter Integrated Circuit) : pin tersebut yaitu Pin A4
(SDA) dan pin A5 (SCL). Pin SDA dan SCL mendukung
komunikasi I2C menggunakan library Wire.
4. LED_BUILTIN, pin yang memiliki fungsi LED_BUILTIN
adalah pin 13. LED_BUILTIN biasa diberi simbol dengan
huruf L.
5. External interupt, yang terdapat pada Pin D2 dan D3
[Link]
Pin lain yang terdapat pada Arduino adalah
1. Pin Reset, yang dapat digunakan dengan
menghubungkan ke ground
2. Pin AREF (analog referensi)
pin Arduino dapat dilihat pada Skema Gambar berikut
Gambar : Pin pada Arduino
Dari gambar diatas terlihat pin D2 sampai D13 adalah pin
digital, beberapa diantaranya mempunyai fungsi khusus, seperti
pin D3, D5, D6, D9, D10, D11 yang bisa sebagai PWM ( pulse
width modulation), kemudian pin D10 (SS), D11 (MOSI), D12
(MISO), D13(SCK) merupakan pin yang digunakan untuk SPI
(Serial Peripheral Interface), D0 (RX0), D1 (TX1). Pin A0 sampai
pin A7 merupakan pin analog, beberapa pin analog juga
mempunyai fungsi khusus, diantaranya A4 (SDA), A5 (SCL).
[Link]
1.3. Instalasi Arduino IDE
Pada bagiani ini akan dibahas cara instalasi Arduino IDE di
Windows dan Linux. IDE (Integrated Development Environment)
adalah sebuah software yang sangat berperan untuk menulis
program, meng-compile menjadi kode biner dan meng-upload
ke dalam memory microcontroller. untuk melakukan
pemrograman Arduino.
1.3.1 Instal Arduino IDE di Windows
Untuk mulai menginstal Arduino IDE, terlebih dahulu
download software-nya di halaman resmi Arduino
[Link]. Pilih versi terbaru (pada saat tulian ini dibuat,
IDE yang digunakan adalah versi 1.6.13). Kemudian pilih sesuai
OS yang digunakan.
Untuk pengguna windows mungkin lebih mudah, ketika file
sudah di download, ekstrak file tersebut kemudian buka file
[Link]. lakukan instalasi driver nya terlebih dahulu, yang
tersedia didalam folder driver>klik 2x [Link] (untuk
pengguna windows 32 bit), untuk pengguna windows 64 bit,
pilih yang [Link].
Gambar : Directory driver Arduino
Setelah diinstal, kemudian cek apakah Arduino sudah terbaca
atau belum, dengan masuk ke Device manager, dengan cara
mengklik Windows+R kemudian ketik [Link]
[Link]
Gambar, Driver yang berhasil diinstal
Umumnya Arduino menggunakan chip atmega16u2 untuk
melakukan interfacing nya dengan PC dan untuk mengupload
program ke Arduino, sehingga driver yang digunakan juga sudah
tersedia pada paket instalasi Arduino, yang sudah dijelaskan
diatas. Akan tetapi pada beberapa jenis Arduino clone,
terkadang chip yang digunakan adalah ch340, sehingga
drivernya juga berbeda. anda bisa mencarinya sendiri di
internet dengan kata kunci driver ch340 untuk Arduino.
Kemudian pada beberapa jenis Arduino terkadang tidak
menyediakan chip untuk bisa berkomunikasi dengan komputer,
jenis Arduino tersebut misalnya Arduino Pro
Gambar, Arduino pro
Untuk menggunakan Arduino pro tersebut dibutuhkan USB to
Serial, salah satunya adalah PL-2303, untuk menggunakan USB
to Serial PL-2303 dibutuhkan drivernya supaya dapat terbaca
pada PC. Untuk mendownload nya anda dapat mencari pada
link [Link]
[Link]
Gambar, Update driver PL-2303
Kelemahan dari PL-2303 ini adalah saat mengupload program
ke Arduino pro, dimana pada saat mengupload program,
Arduino harus di reset manual dengan menekan tombol reset
pada Arduino pro.
1.3.2 Instalasi Arduino di Linux
Linux yang digunakan oleh penulis adalah linux mint 17,
instalasi Arduino di linux dapat dilakukan melalui terminal
dengan menuliskan perintah $ sudo apt-get install Arduino, atau
kita dapat mendownload-nya melalui pengelola perangkat
lunak, dengan cara membuka pengelola perangkat lunak,
kemudian pada kolom pencarian ketikkan Arduino, dan instal
semuanya
Gambar. Instal Arduino lewat pengelola perangkat lunak
Dengan menggunakan cara diatas, terdapat beberapa
kekurangan, diantaranya Arduino yang didownload tidak update
(versi lama), sehingga dibutuhkan cara manual (instalasi secara
offfline), untuk caranya dapat dilakukan sebagai berikut:
[Link]
1. pertama kita download terlebih dahulu Arduino IDE nya,
disitus resminya
[Link] silahkan pilih
Arduino IDE sesuai versi OS linux yang digunakan (32
atau 64 Bit). Format file yang didownload biasanya
berupa .[Link] file tersebut berupa file hasil kompresi
sama seperti .zip atau .rar
2. jika sudah di download, silahkan extract filenya,
kemudian simpan hasil kompresi tadi pada drive sistem
berkas, saya sendiri menyimpannya di folder opt,
Gambar. Copy Arduino kedalam folder opt
3. Jika file tidak bisa dipaste pada directory ini, silahkan
masuk dengan menggunakan mode root dengan cara klik
kanan, kemudian pilih buka sebagai root
Gambar. Masuk ke mode root
[Link]
Kemudian masukkan password root anda. Setelah masuk
pada mode root, kemudian pastekan file hasil ekstrak
tadi disini.
4. Masih pada mode root klik kanan kemudian pilih buka di
terminal dan masukkan perintah chmod -R 777 Arduino-
1.6.13. Perintah ini digunakan untuk memberikan hak
akses pada folder Arduino-1.6.13 sehiingga dapat dibuka
walaupun tanpa mode root.
5. Jika sudah selesai, keluar dari mode root dan masuk
pada folder Arduino-1.6.13, kemudian klik kanan dan
pilih buka di terminal. Setelah itu ketik perintah
sudo chmod 777 * R
kemudian ketik perintah
sudo ./[Link]
6. setelah selesai, biasanya shortcut yang telah dibuat tidak
mempunyai icon, atau hanya menampilkan icon kunci
atau 'x'. Untuk membuka shortcutnya, kita harus masuk
terlebih dahulu ke mode root untuk merubah hak
aksesnya dengan menggunakan perintah
sudo chmod R 777 nama file Arduino di desktop
7. tunggu sampai selesai proses pembuatan shortcut-nya,
sampai ada tulisan done. Perintah sudo ./[Link] ini
digunakan untuk membuat shortcut pada desktop.
8. selesai, Sekarang anda dapat menggunakan Arduino IDE
di linux.
[Link]
Bagian 2
Syntax
Bagian ini akan membahas :
• Syntax-syntax dalam pemrogaman.
• Syntax dasar
• Type data
• Fungsi
• Percabangan
• Perulangan
[Link]
Syntax adalah aturan menulis sebuah 'kalimat' agar dapat
dimengerti dengan benar oleh bahasa pemrograman. Dalam
pembahasan syntax ini hanya akan ditulis beberapa saja, yaitu
syntax yang biasa digunakan, untuk lebih jelasnya mengenai
syntax yang digunakan di Arduino dapat mengunjungi
[Link] dengan memilih
menu help pada Arduino IDE, kemudian pilih reference.
Gambar, Referensi pemrogramraman Arduino
[Link]
Referensi program Arduino akan terbuka dibrowser anda,
karena referensi disimpan dalam Webpage offline yang
tersimpan dalam directory instalasi Arduino.
2.1 Further Syntax
Further syntax berisi syntax-syntax yang menjadi
dasar dan biasa digunakan dalam sketch Arduino,
seperti komentar, titik-koma untuk mengakhri
pernyataan. Lebih jelasnya dapat dilihat pada Tabel
berikut.
Tabel, Further syntax
Name Penjelasan
; (titik-koma) Digunakan diakhir pernyataan program.
{ } (kurung Menetapkan sebuah blok dari kode,
kurawa) (sering kali digunakan sebagai sebuah
fungsi yang mengikuti IF, ELSE, While,
Switch-Case atau FOR
// Digunakan untuk komentar satu baris
/* */ Digunakan untuk komentar lebih dari satu
baris
#define
#include Menambahkan library kedalam sketch
2.2 Syntax dasar
Dalam pemrogaman Arduino terdapat dua fungsi yang
harus ada ketika membuat sebuah program, yaitu setup() dan
loop(). Fungsi ini akan otomatis ada ketika membuat program
baru / pertama kali.
a. Setup ()
Setup dilakukan untuk menentukan fungsi pin digital yang
digunakan dengan perintah pinMode, memulai menggunakan
library, mengatur baudrate untuk komunikasi serial dan lain
sebagainya. Fungsi setup() hanya dipanggil sekali saja ketika
arduino pertama kali dinyalakan atau di reset. Contoh
penggunaan program
[Link]
Void setup() {//konfigurasi pin digital yang digunakan, apakah
sebagai input/output}
void loop() { //program yang akan diulang }
b. Loop ()
Fungsi ini dilakukan untuk megontrol kerja Arduino atau
mengontrol aksi dari perangkat – perangkat output Arduino,
misalnya membuat lampu pada Arduino berkedip-kedip, atau
mnegontrol kecepatan putaran motor yang terdapat pada pin
output arduino. Program yang dibuat di dalam fungsi ini akan
diulang secara terus – menerus, sampai arduino dimatikan /
direset.
c. pinMode()
perintah pinMode() digunakan untuk mendefinisikan pin yang
digunakan apakah akan digunkan sebagai INPUT atau sebagai
OUTPUT, perintah pinMode() hanya berlaku untuk pin digital
saja, tidak berlaku untuk pin analog karena pin analog hanya
dapat digunakan sebagai input saja sehingga tidak perlu lagi
didefinisikan fungsinya.
Perintah ini disimpan pada bagian fungsi setup. Secara umum
penulisann pinMode adalah sebagai berikut
pinMode (pin_digital_yang digunakan, INPUT atau OUTPUT);
contohnya seperti
void setup(){
pinMode (2, OUTPUT);
}
jika pin digital dideklarasikan dengan variable, misalnya pin
digital 2 dimasukkan kedalam variable LED maka penulisann-
nya
int LED = 2;
void setup(){
pinMode (LED, OUTPUT);
}
d. digitalWrite()
digitalWrite() digunakan untuk menentukan kondisi pin digital
yang dijadikan sebagai OUTPUT, kondisi yang digunakan hanya
[Link]
ada dua yaitu HIGH atau LOW (on atau off). Secara umum,
penulisann perintah digitalWrite adalah
digitalWrite(pin,HIGH/LOW)
misalnya kita akan menyalakan sebuah Lampu yang
dihubungkan dengan pin 13, maka penulisannnya adalah:
digitalWrite (13, HIGH);
e. digitalRead()
digitalRead() adalah perintah yang digunakan untuk
membaca nilai dari pin digital, untuk menggunakan perintah ini
dibutuhkan sebuah variable untuk menyimpan hasil dari
pembacaan pin. digitalRead() secara umum dapat dituliskan
sebagai berikut
variable = digitalRead(pin digital yang digunakan sebagai Input)
misalnya kita ingin membaca nilai sensor dari pin Digital 3,
maka penulisann-nya:
int dataPin = digitalRead(3);
f. analogWrite()
berbeda dengan digitalWrite, analogWrite() adalah perintah
yang digunakan untuk mengatur PWM (Pulse Width Modulation),
Secara umum, PWM adalah cara memanipulasi lebar sinyal atau
tegangan yang dinyatakan dalam suatu perioda, yang dapat
digunakan untuk mengontrol daya keluaran dari mikrokontroler.
Sinyal PWM merupakan sinyal digital yang amplitude / lebarnya
tetap tetapi mempunyai lebar pulsa HIGH dan LOW yang
berbeda – beda dalam satu perioda. Seperti pada Gambar
berikut.
Gambar : Pulsa PWM
[Link]
Dalam PWM dikenal istilah Duty Cycle, yaitu lebar pulsa/sinyal
HIGH dalam satu perioda , dimana satu perioda adalah hasil
penjumlahan antara sinyal High (sH) dan sinyal Low (sL). sTotal
= sH + Sl
untuk mengetahui nilai duty cycle dapat digunakan rumus
sebagai berikut:
Penjelasan:
D = Duty Cycle
sL= sinyal Low
Vout = tegangan keluaran
sH = sinyal High
sTotal= sinyal total dalam satu perioda Tegangan masukan
Dengan menggunakan rumus ini, kita dapat menghitung nilai
PWM yang dikeluarkan jika diketahui grafiknya seperti Gambar
diatas. Dari Gambar tersebut, lebar sinyal High per periodenya
adalah 20%, sedangkan lebar sinyal Low nya lebih besar, yaitu
80%. Sehingga Vout (tegangan yang dikeluarkan) dari PWM
tersebut adalah
Vout = (5 X 20) / 100 = 100 / 100 = 1V
Dari rumus diatas, dapat diketahui bahwa nilai PWM yang
dikeluarkan adalah 1 V.
analogWrite() secara umum ditulis sebagai berikut:
analogWrite (pin, Value);
Value atau nilai yang dapat diberikan melalui analogWrite
adalah 0 sampai 255.
g. analogRead()
analogRead mempunya fungsi yang sama dengan
digitalRead, yaitu untuk membaca nilai dari sebuah pin,
digitalRead digunakan untuk membaca nilai dari pin digital, dan
analogRead berfungsi untuk membaca nilai dari dari pin analog.
Penulisan analogRead() secara
[Link]
h. delay(ms)
delay adalah perintah untuk menunggu berapa lama program
akan dijalankan atau dalam penggunaan lain delay juga
digunakan untuk waktu tunggu sebelum prose berikutnya
dijalankan. Secara default satuan waktu yang digunakan dalam
delay adalah mili second.
2.3 Percabangan
Disebut dengan percabangan karena berfungi untuk
memisahkan kondisi- kondisi tertentu sehingga disebut dengan
percabangan. Contoh sederhana-nya dalam memisahkan jenis-
jenis buah, jika buah jenis anggur maka disimpan bersama
dengan jenis anggur, jika buah adalah jenis jeruk maka
disimpan dengan jenis jeruk yang sama.
Syntax-syntax dalam percabangan diantaranya adalah sebagai
berikut:
a. IF
Fungsi if umumnya digunakan untuk membaca kondisi pin,
misalnya seperti pseudocode dibawah inin.
Button = digitalRead (D9);
If (button==HIGH) {
//Do something
}
If bisa juga digunakan untuk melakukan perbandingan, seperti
lebih dari ( >= ), kurang dari, dan lain sebagainya, oleh karena
itu kita harus mengetahui operator pembanding yang terdapat
pada arduino. Tabel berikut akan menjelaskan operator
pembanding yang terdapat pada Arduino IDE dan fungsinya.
Operpator Fungsi Contoh
== Sama dengan .... A == A
>= Lebih besar dari sama B >= A
dengan....
<= Lebih kecil dari sama A <= B
dengan.....
> Lebih besar B>A
< Lebih kecil A<B
!= Tidak sama dengan A != B
[Link]
b. If.... Else
Penggunaan If..Else umunya digunakan untuk menangani
beberapa kondisi, cakupan if ... else lebih luas dibandindingkan
penggunaan if saja. Misalnya
If (kondisi == A) { //lakukan perintah A }
Else if (kondisi == B) { // lakukan aksi B }
Else if (kondisi == C) { // lakukan aksi C }
Else { /* lakukan aksi lain jika kondisi tidak sama dengan kondisi
A, B atau C */
}
c. Switch ... case
Penggunaan switch .. case hampir mirip dengan if .. else.
Switch .. case umumnya digunakan dalam operasi pilihan menu
karena penulisann programnya yang relatif sederhana, switch
merupakan bagian utama yang berisi suatu variable, yang akan
dibandingkan dengan nilai yang terdapat pada statement case.
Berikut adalah contoh programnya
Switch (variable) {
Case 1: //lakukan suatu perintah ketika nilai variable = 1
Break;
Case 2: //lakukan suatu perintah ketika nilai variable = 2
Break;
Case 3: //lakukan suatu perintah ketika nilai variable = 3
Break;
Default:
/* lakukan suatu perintah ketika nilai variable tidak sama
dengan 1, 2, atau 3. */
Break;
}
Dalam setiap statement case selalu diakhiri dengan break,
break berfungsi sebagai pemisah antara setiap case, tanpa
penggunaan break, statement switch akan terus mengeksekusi
program sampai pada break.
Diakhir pernyatan switch case terdapat default, perintah
tersebut hampir sama dengan perintah else, yang berarti bila
tidak ada yang cocok dengan setiap data pada case maka
dilaksanakan perintah yang terdapat pada default.
[Link]
2.4. Perulangan
Didalam perulangan, perintah akan dijalankan secara
berulang sampai kondisi yang diinginkan terpenuhi. Misalnya
sebuah variabel mempunyai nilai 0, kondisi yang diinginkan
adalah 8, kemudian perulangaan yang dijalankan adalah += 1,
maka hasilnya nilai variable akan terus ditambah dengan 1
sampai kondisi yang diinginkan tercapai, yaitu 18. jika dituliskan
maka akan menjadi 0+1+1+1+1+1+1+1+1=8.
a. FOR
Perulangan for digunakan untuk menjalankan kondisi suatu
pernyataan dari sebuah blok, sampai pernyataan tersebut
terpenuhi, umumnya pengulangan dilakukan dengan proses
increment atau decrement. Pernyataan for sering kali digunakan
dalam operasi array untuk menjalankan beberapa data/pin.
Terdapat 3 bagian pada pernyataan FOR
For ( inisialisasi; kondisi; perintah (increment/decrement) ) {
//pernyataan (s); }
Gambar, bagian pada perulangan For
Inisialisasi dilakukan untuk membaca atau menentukan
kondisi awal, kemudian pengujian dilakukan untuk
membandingkan/menentukan nilai akhir yang harus dicapai,
selanjutnya dilakukan proses increment (penambahan 1 angka)
atau decrement (pengurangan 1 angka) sampai tercapainya
nilai pengujian (nilai akhir yang harus dicapai).
Penggunaan perulangan for menjadikan program lebih
sederhana, dengan menggunakan for kita tidak perlu
menuliskan satu persatu nilai yang akan ditampilkan, misalnya
jika kita ingin menampilkan angka 1 sampai 100, kita tidak
perlu menulis satu persatu angka tersebut seperti print(1);
print(2); print(3); dan seterusnya.......... kita hanya tinggal
menuliskan perintah
[Link]
for (int i = 0; i<=100; i ++){
print (i) ;} }
b. While
Perulangan While akan mengulangi secara terus menerus
sampai ungkapan yang terdapat dalam tanda kurung menjadi
terpenuhi.
penulisan while secara umum adalah
While (expression) { //Statement }
Contoh penggunaan-nya dapat dilihat pada Pseudocode berikut:
while (i<100){
i++;
print(i);
}
Setelah dijalankan, program tersebut akan menampilkan angka
dari 1 sampai 100,
c. Do-while
Cara kerja perulangan do, hampir sama dengan perulangan
while, perbedaannya jika dalam perulangan while, satement
dijalankan setelah expresi disebutkan terlebih dahulu. Maka
dalam perulangan do, statement ditulis terlebih dahulu sebelum
pengujian kondisi. penulisann program secara umum adalah
sebagai berikut
do{
// statement block
} while (test condition);
contoh pengunaannya,
do{
i++;
print(i);
}while (i<100);
perintah diatas akan mencetak angka 1 sampai 100.
d. Break
Break umumnya digunakan pada switch-case, tetapi
penggunaan break bisa juga digunakan pada perulangan for, do,
[Link]
atau while. Penggunaan break pada perulangan akan
menghentikan sementara proses perulangan, misalnya seperti
pseudocode berikut:
for (int i=1; i<=255; i++) {
print(i);
if (i==20) {
print("break");
break;
}
}
Perulangan yang diharapkan adalah 0 sampai 255, akan tetapi
karena menggunakan perintah break pada bilangan ke 20,
dengan kata lain jika nilai variable i mencapai 20, maka
program diulang lagi dari awal. maka perulangan berhenti
sampai 20 saja, dan akan diulangi lagi dari awal. Jika dituliskan,
maka hasil dari pseudocode diatas adalah
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 break 1 2 3
4 5 dan seterusnya.....
e. Continue
Berbeda dengan break yang menghentikan proses perulangan
ketika sampai pada kondisi yang ditetapkan kemudian
memulainya lagi dari awal, Statement continue berfungsi untuk
melewati atau memotong sisa dari perulangan yang sedang
berjalan, . Continue dapat digunakan pada perulangan do,
while, dan for. Untuk lebih jelasnya dapat dilihat pada
pseudocode berikut:
for (i=0;i<255;i++){
if (i > 40 && i < 120) { //Nilai yang terdapat diantara 40 dan
120 akan dilewati
continue; }
print(i);
}
hasilnya adalah sebagai berikut
[Link]
f. return
return berfungsi untk mengakhiri suatu fungsi dan
mengembalikan suatu nilai dari fungsi ke fungsi panggilan.
Contohnya
int i;
do{
i++;
print(i);
if (i > 50) {
return;
}
}while (i<100);
Hasilnya adalah ketika perulangan mencapai 51, maka
perulangan akan dihentikan. Jika dilihat dari hasil program yang
dijalankan, return ini agak mirip dengan break.
Program yang diuji adalah
for (int i=0; i<50; i++){
print(i);
delay (100);
if (i >= 25) {
print ('_');
return;
}
}
[Link]
Gambar, Pengujian return pada perulangan FOR
Ketika perulangan sudah mencapai 25, maka perulangan
dihentikan diulangi lagi dari awal.
2.5 Operator
Operator adalah syntax yang digunakan untuk melakukan suatu
operasi, misalnya untuk operasi penjumlahan maka digunakan
operator +.
a. Operator untuk perhitungan
Operator-operator yang digunakan dalam melakukan
perhitungan dapat dilihat pada Tabel berikut.
Tabel, Operator perhitungan
Operator Penjelasan
= (sama Operator untuk penetapan atau penugasan,
dengan)
+ (tambah) Operator penjumlahan, dapat digunakan juga
untuk increment
- (kurang) Operator pengurangan, dapat digunakan juga
digunakan untuk decrement.
* (kali) Operator untuk perkalian
/ (bagi) Operator untuk pembagian, biasanya tipe
data yang digunakan untuk hasil keluarannya
adalah float, karena karena terkadang hail
dari pembagian bukan bilangan bulat
% (modulo) Operator ini digunakan untuk mengetahui sisa
dari pembagian. Misalnya 5%2 == 1
[Link]
b. Boolean Operator
Boolean umumnya berkaitan dengan logika pemrograman
yang mempunyai dua kondisi, misalnya Lampu indicator akan
menyala jika tombol 1 ditekan dan tombol 2 ditekan. Operator-
operator boolean dapat dilihat pada Tabel berikut.
Tabel boolean Operator
Contoh
Operator Penjelasan
penggunaan
Logika AND, (bernilai benar jika
(A>=10 &&
&& kondisi A dan B benar,
B<=15)
sebaliknya bernilai salah
Logika OR, (Bernilai benar jika
salah satu, atau keduanya
|| (A>10|| B>8) bernilai benar. Dan akan
bernilai salah jika keduanya
bernilai salah.
Logika NOT, (bernilai benar jika
! !(A<10) kondisi A Salah, sebaliknya
bernilai salah).
c. Operator Gabungan
Gabungan berarti menggabungkan data kedalam sebuah
variable, contoh sederhananya seperti pseudocode berikut
int i = 0
i += 5
print (i),
Ketika variable i dicetak, maka hasilnya menjadi 5 bukan lagi
0, karena digunakan perintah i += 5. Operator gabungan
umumnya digunakan pada perulangan, misalnya perulangan
for, dalam perulangan perintah gabungan akan terus dijalankan
sampai tercapai nilai yang diinginkan, contohnya perintah for
(int i=0; i<100; i+=1){} Vaiable i akan terus ditambah 1
( 0+1+1+1+1+1........... ) sampai mencapai 100.
[Link]
Tabel, Operator gabungan
Operator Contoh Arti
++ i++ penggunaannya sama Increment
dengan i=i+1
-- i-- penggunaannya sama Decrement
adengan i=i-1
+= i +=3 penggunaannya sama Gabungan
dengan i=i+3 penjumlahan
-= i -=3 penggunaannya sama Gabungan
dengan i=i-3 pengurangan
*= z *=2 penggunaannya sama Gabungan
dengan z= z*2 perkalian
/= z /=4 penggunaannya sama Gabungan
dengan z= z/4 Pembagian
Untuk gabungan yang lainnya, penulisannnya sama saja,
misalnya untuk gabungan logika AND, penulisannnya z &=2
artinya sama dengan z= z&2.
[Link]
2.6 Type Data
Masing-masing type data mempuyai nilai minimun dan
maksimum yang dapat ditampung, juga menangani data yang
berbeda-beda. Misalnya Integer yang dapat menangani
bilangan bulat, float yang dapat menangani bilangan pecahan,
dan lain sebagainya. Untuk lebih jelasnya dapat dilihat pada
Tabel berikut
Tabel, Type data
Nama Penjelasan Singkat
Void Digunakan hanya dalam pernyataan sebuah
fungsi.
boolean Menangai salah satu dari dua kondisi, yaitu true
atau false
Char -127 sampai 127
Unsigned 0 sampai 255
char
byte Sama seperti unsigned char
int -32,7678 sampai 32,767
Unsigned 0 sampai 65,555
int
word Sama seperti unsigned int
long -2,147,483,648 sampai 2,147,483,647
Unsigned 0 sampai 4,294,967,295
long
float -3.4028235E+38 to 3.4028235E+38
double Sama seperti float
string Susunan dari karakter, di definisakan sebagai
char strName [5];
array Adalah kumpulan dari variable, lebih jelasnya
akan dijelaskan pada bagian berikutnya
[Link]
Bagian 3
Memulai Program
Pada bagian ini akan membahas:
• Cara mengupload program
• Memilih port Arduino
• Menghubungkan Button
• Membuat Alarm
• Mengontrol LED
• Menyalakan Lampu AC 220V (Bohlam)
[Link]
Pemrograman Arduino dilakukan pada IDE Arduino, source code
pada Arduino biasa disebut dengan istilah sketches/sketch.
Tampilan dari Arduino IDE dan fungsi-fungsi menunya dapat
dilihat pada Gambar dibawah ini.
Gambar, Arduino IDE
Fungsi –fungsi pada toolbar Arduino:
Tombol verify, berfungsi untuk mengcompile program yang
telah dibuat, penggunaan compile dilakukan untuk
mengecek program kita
[Link]
Tombol upload, digunakan untuk mengupload program
kedalam Arduino. Sebelum program di upload, otomatis
program akan di compile terlebih dahulu.
Tombol new, berfungsi untuk membuat jendela baru, untuk
membuka jendela baru bisa juga dilakukan dengan
menngunakan kombinasi tombol CTRL+N
Tombol open, berfungsi untuk membuka program yang
ada/sudah dibuat.
Tombol save, berfungsi untuk menyimpan sketch/program.
Dapat juga dengan menggunakan kombinasi keyboard
Ctrl+S
Tombol untuk membuka Serial monitor, tombol ini
berfungsi untuk melihat informasi dari Arduino yang
ditampilkan pada serial monitor, informasi yang
ditampilkan disini berupa text dan angka. Untuk
mengaktifkan Serial monitor, digunakan perintah
[Link]().
Serial monitor dapat juga dibuka dengan menggunakan
kombinasi keyboard Ctrl+Shift+M.
3.1 Program pertama
Sekarang kita akan mencoba membuat sebuah program yang
dapat menyalakan dan mematikan LED (LED blinking), dalam
board Arduino umumnya sudah terdapat LED bawaan (Built-in)
yang terhubung dengan pin Digital 13. untuk mengakses-nya
dapat digunakan perintah LED_BUILTIN,
Gambar, LED built-in Arduino
[Link]
Sketch yang dibuat untuk membuat LED blinking ini adalah
sebagai berikut
void loop() {
pinMode(LED_BUILTIN, OUTPUT);
// menetapkan LED built in (LED yang sudah teredia pada
Arduino) sebagai output
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); //menyalakan LED dengan
memberikn perintah HIGH
delay(1000); //tunggu selama 1 detik
digitalWrite(LED_BUILTIN, LOW); /*memadamkan LED dengan
memberikan perintah LOW*/
delay(1000); //tunggu selama 1 detik
}
Penjelasan program
- Void Setup () : program yang berada dalam fungsi ini
hanya akan dijalankan sekali saja, yaitu ketika program
Arduino pertama kali dijalankan, karena fungsi void setup
hanya untuk mengatur saja, misalnya menetapkan pin
yang digunakan, apakah sebagai input, atau sebagai
output.
- pinMode : digunakan untuk mengatur mode pin digital,
apakah sebagai input atau output. Secara umum,
penulian pinMode adalah
pinMode(pin yang digunakan, Mode);
- Void loop () : semua program yang berada dalam fungsi
loop akan dijalankan secara berulang – ulang, sampai
Arduino dimatikan atau di reset.
- digitalWrite () : merupakan perintah untuk memberikan
nilai pada pin digital yang digunakan sebagai Output,
apakah diberi nilai HIGH (aktif) atau LOW (padam).
Secara umum, penulisann perintah digitalWrite adalah
digitalWrite(pin yang digunakan sebagai output,
HIGH/LOW)
- delay () : digunakan untuk berhenti selama sekian
milidetik.
[Link]
Untuk mengupload program kedalam Arduino, pertama
sambungkan Arduino ke PC/laptop terlebih dahulu, kemudian
buka IDE Arduino untuk mengecek apakah Arduino sudah
terdeteksi atau belum, dengan memilih menu tools > port. Jika
sudah maka klik tombol upload
Gambar, Memilih port yang digunakan oleh Arduino
Setelah di-upload, coba perhatikan LED yang terdapat pada
Board Arduino, LED tersebut akan berkedip-kedip dengan durasi
menyala selama 1 detik, dan akan padam selama 1 detik.
Selain kedua fungsi yang sudah dijelaskan diatas, kita juga
dapat mencoba membuat fungsi lain, misalnya kita
menambahkan fungsi serial dari program yang sudah kita buat
diatas tadi.
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
blink(); //memanggil fungsi blink
}
void blink() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
[Link]
Program ini sama saja dengan program sebelumnya, hanya
saja perintah untuk blinking LED disimpan pada fungsi yang lain
yaitu blink(), pemanggilan fungsi dilakukan dengan menulis
nama fungsi itu sendiri, calam contoh ini adalah blink().
3.2 Rangkaian Pertama LED
Rangkaian pertama ini adalah menghubungkan sebuah LED
dengan Arduino, kita akan membuat sebuah LED dimmer,
dimana kecerahan LED akan diatur oleh Arduino. Untuk
mengatur kecerahan LED. Dalam contoh program ini kita juga
akan belajar mengenai PWM
maka harus menggunakan pin PWM (Pulse Width Modulation)
yang terdapat pada pin digital nomor 3,5,6,9,10 dan 11.
pengaturan PWM dapat dilakukan dengan menggunakan
perintah analogWrite. Rangkaian LED dapat dilihat pada
Gambar dibawah
Gambar : Skema rangkaian LED
Program yang dibuat adalah sebagai berikut
int led = 3; // pin PWM yang digunakan
int kecerahan = 0; // nilai awal kecerahan LED
int nilaipudar = 5; // nilai untuk perubahan kecerahan
[Link]
void setup() { pinMode(led, OUTPUT); }
//menetapkan pin led(3) sebagai output
void loop() {
analogWrite(led, kecerahan); //memberikan nilai kecerahan LED
//perubahan kecerahan ditambah 5
kecerahan = kecerahan + nilaipudar;
// untuk perulangan, ubah nilai pudar menjadi(-5) ketika
// nilai kecerahan = 0 atau 255)
if (kecerahan <= 0 || kecerahan >= 255) {
nilaipudar = -nilaipudar; }
//waktu jeda untuk perubahan kecerahan
delay(30); }
Penjelasan program
Cara kerja dari program ini adalah, pertama LED diberi nilai 0,
yang berarti keadaan awal LED adalah padam, kemudian untuk
melakukan pemudaran (merubah kecerahan LED) maka nilai
kecerahan ditambah dengan 5 (nilai pudar). Untuk melakukan
perulangan, maka ketika nilai kecerahan lebih besar dari 255,
nilai pudar akan dirubah menjadi minus (-5), sehingga
perhitungannya sama dengan 255 + (-5).
Perubahan nilai kecerahan bisa dilakukan juga dengan
menggunakan perulangan for, berikut adalah programnya
int led = 3; int kecerahan = 0;
void setup() { pinMode(led, OUTPUT); }
void loop() {
for (kecerahan = 0; kecerahan <= 255; kecerahan += 5){
analogWrite(led, kecerahan);
delay (50);}
for (kecerahan = 255; kecerahan >= 0; kecerahan -= 5){
analogWrite(led, kecerahan);
delay (50);} }
3.2.1 Running LED
Untuk contoh penerapan penggunaan for, kita akan
menerapkannya pada rangkaian Running LED, sebelum lanjut
ke pembahasan program, pertama rangkailah terlebih dahulu
LED seperti Skema dibawah
[Link]
Gambar Skema LED
Kemudian buat program seperti berikut.
void setup(){
for (int pin = 2; pin<=8; pin +=2){
pinMode(pin, OUTPUT);} }
void loop() {
/* lampu akan menyala secara berurutan mulai dari pin 2,4,6
dan 8 */
for (int pin = 2; pin<=8; pin +=2){
digitalWrite(pin, HIGH);
delay (100); }
/* lampu akan padam secara berurutan mulai dari pin 8,6,4,
dan 2 */
for (int pin = 8; pin>=2; pin -=2){
digitalWrite(pin, LOW);
delay (100);
}
Pembahasan program
pada bagian for terdapat perintah +=2, sehingga setiap
perulangan kondisi pertama (2) akan ditambah dengan dua, hal
ini karena kita menggunakan angkan genap untuk pin yang
digunakan, sehingga perhitungannya adalah
2+2=4+2=6+2=8+2=10.
delay (100) merupakan waktu tunggu untuk setiap penyalaan.
[Link]
Anda dapat merubah program diatas, jika pin yang digunakan
adalah 2 sampai 7, maka perintah perulangannya adalah
for (int pin = 2; pin<=7; pin +=1){
pinMode(pin, OUTPUT);
} }
3.2.2 Mengontrol LED dengan Push Button
Terdapat beberapa teknik dalam pemasangan push-button ini,
diantanranya adalah:
1. Pull-down resistor
Pull-down adalah membuat nilai default button menjadi 0
(LOW) Dengan menggunakan Resistor yang dihubungkan dari
ground ke pin yang digunakan untuk input push button,
rangkaian dari resistor pulldown adalah sebagai berikut
Gambar : Pull-down resistor
Dengan menggunakan resistor pull-down, maka kondisi awal
pembacaan push-button adalah 0, karena ketika tombol dilepas
[Link]
maka daya dari ground akan mengalir menuju pin input melalui
resitor. Fungsi lain resistor sendiri yaitu untuk mencegah
terjadinya korsleting pada saat push-button ditekan.
2. Pull-UP resistor
Dengan menggunakan Resistor pull-up, penggunaan resistor
pull-up merupakan cara yang paling sederhana dan terbilang
efisien, karena tidak memerlukan komponen tambahan, cara ini
memanfaatkan resistor yang terdapat di-Mikrokontroller. skema
dari penggunaan push-button menggunakan resistor pull-up
Gambar : Pull-UP Push button
Terdapat sedikit perbedaan antara pemrograman push-button
yang menggunakan resistor pull-down dengan pull-up,
perbedaannya terdapat pada bagian pinMode (pin,
INPUT_PULLUP).
Untuk mengetahui perbedaan input dengan menggunakan
resitor Pull-down dan resistor Pull-up, pertama kali buatlah
rangkaian seperti Gambar berikut.
[Link]
Gambar , Cek perbedaan Pull-down dan pull-up
Kemudian buat sketches seperti dibawah, kemudian upload
kedalam Arduino.
int led1 = 2;
int led2 = 3;
int PBPU = 6; // button yang menggunakan INPUT_PULLUP
int PBPD = 7; // button yang menggunakan INPUT_PULLDOWN
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(PBPU, INPUT_PULLUP);
pinMode(PBPD, INPUT); }
void loop() {
int BtnPU = digitalRead(PBPU);
int BtnPD = digitalRead(PBPD);
if (BtnPU == LOW){ // ketika button PULLUP ditekan
digitalWrite(led1, HIGH); }
else { digitalWrite(led1, LOW); }
[Link]
if (BtnPD == HIGH){ // ketika button PULLDOWN ditekan
digitalWrite(led2, HIGH);}
else { digitalWrite(led2, LOW); }
}
kemudian setelah di-upload, coba perhatikan ketika push-button
sebelah kiri ditekan (yang menggunakan resistor pull-down)
maka lampu yang dihubungkan dengan pin 3 akan menyala
(LED sebelah kiri), kemudian jika push-button sebelah kanan
ditekan (yang menggunakan resistor pull-UP), maka lampu yang
dihubungkan dengan pin 3 (LED sebelah kanan) akan menyala.
3.2.3 Mengendalikan Lampu AC 220 Volt
Pada beberapa kasus, Mikrokontroller (Arduino) dituntut
untuk dapat mengendalikan perangkat listrik dengan daya yang
tinggi, semisal bohlam / lampu dengan arus AC 220 Volt,
Sedangkan tidak mungkin mengandalkan daya dari Arduino
sendiri, karena maksimal tegangan keluaran dari pin Arduino
hanya 5 Volt. Maka untuk mengatasi permasalahan tersebut
dibutuhkan sebuah relay.
Relay merupakan saklar mekanik, yang kondisinya berubah
berdasarkan kondisi coil nya, bila coil nya diberikan tegangan,
maka relay pun akan aktif, bila tidak maka relay nya pun tidak
akan aktif. Skema dari pengendalian relay dengan Arduino
adalah sebagai berikut
Gambar, Skema relay
Pada kasus lain, adakalanya relay yang tersedia dipasaran tidak
sesuai, misalnya relay yang tersedia adalah 12 Volt, sehingga
untuk mengaktifkan relay tersebut dibutuhkan kembali
pengendali, ada banyak komponen yang bisa digunakan untuk
mengendalikan relay tersebut, misalnya ic optocoupler ,
[Link]
transistor, dan lain sebagainya. untuk kasus ini, transistor NPN
dan PNP digunakan sebagai pengendali relay, karena transistor
lebih mudah didapatkan, dan banyak dijual di toko – toko
elektronik. Transitor merupakan sebuah komponen yang
memiliki 3 pin, yaitu basis, collector, dan emitter.
Skema pengendali relay menggunakan transistor dapat dilihat
pada gambar berikut
Gambar, Pengendali relay menggunakan transistor NPN
3.3 Membuat Alarm
Untuk membuat alarm dengan menggunakan Arduino, kita
tidak bisa menggunakan perintah digitalWrite atau analogWrite
untuk memberikan nilai High / menyalakan suara, tetapi ada
perintah khusus untuk menyalakan nada, yaitu digunakan
perintah tone(), perintah ini akan menghasilkan sebuah
gelombang frequency tertentu yang membuat bunyi yang
[Link]
dikeluarkan dapat berbeda – beda. Perintah untuk tone,
umumnya ditulis sebagai berikut:
tone (pin, frekuensi suara);
atau bisa juga dengan menambahkan durasi, seperti berikut
tone (pin, frekuensi suara, durasi);
Untuk membuat alarm ini kita membutuhkan komponen
tambahan yaitu buzzer / speaker kecil. Kemudian silahkan
hubungkan buzzernya dengan Arduino anda, saya membuat
rangkaian-nya seperti berikut:
Gambar : Rangakain Buzzer
Program Yang dibuat
int pinbuzz = 3;
//array untuk menghasilkan nada yang berbeda - beda
int song[]= {500,1000,1500,2000,1500,1000,500};
//array untuk mengatur durasi
int durasi[]= {80,180,280,380,500,1000,1500};
[Link]
void setup() {pinMode (pinbuzz, OUTPUT);}
void loop() {
for (int note = 0; note <7; note ++){
// nyalakan buzzer dengan nada berurutan sesuai array (song),
// dengan durasinya sesuai dengan array (durasi)
tone(pinbuzz, song[note], durasi[note]);
delay(durasi[note]);
}}
Silahkan Upload program diatas, kemudian dengarkan nada
yang dikeluarkan oleh buzzer. Untuk merubah nadanya dapat
dilakukan dengan merubah angka/nilai yang berada pada array
song[]. Untuk merubah durasi setiap nada-nya dapat dilakukan
dengan merubah angka/nila yang berada pad Array durasi[].
kemudian, apabila kita menggunakan 2 pin untuk buzzer,
maka harus digunakan perintah noTone(),perintah ini digunakan
untuk mematikan suara dari buzzer atau dengan kata lain
memberikan nilai LOW pada buzzer sehingga buzzer berhenti
menyala. Penulisan noTone() secara umum dapat ditulis sebagai
berikut:
noTone(pin);
mialnya kita ingin mematikan buzzer yang dihubungkan dengan
pin digital 5, maka penulisannya
noTone(5);
Pada contoh penggunaan noTone ini, kita akan menggunakan 2
buah alarm yang akan dinyalakan secara berurutan, buzzer
pertama akan dinyalakan selama 100 ms kemudian selanjutnya
buzzer kedua dinyalakan selama 100 ms, begitu seterusnya.
Contoh rangkaian-nya adalah sebagai berikut:
[Link]
Gambar : Rangakain dua buah Buzzer
program-nya adalah sebagai berikut:
int buzz1 = 6;
int buzz2 = 7;
void setup(){
pinMode (buzz1, OUTPUT);
pinMode(buzz2, OUTPUT);
}
void loop(){
noTone(buzz2);
tone (buzz1, 980);
delay (100);
noTone(buzz1);
tone(buzz2, 880);
delay(100);
}
sebagai latihan, silahkan berikan nada pada masing-masing
buzzer seperti pada progrram sebelumnya.
[Link]
BAGIAN 4
Penggunaan Serial Monitor
Bagian ini akan membahas:
• Menampilkan Data di Derial Monitor
• Menampilkan Hasil Counter-up
• Mengendalikan Lampu di Serial Monitor
• Serial Plotter
[Link]
Serial monitor digunakan untuk menampilkan
informasi yang dikirimkan oleh Arduino Secara
serial. Hal yang harus diperhatikan dalam
komunikasi serial adalah pemberian nilai
baudrate, dan pastikan bahwa nilai baudrate
yang diberikan kedalam Arduino sama dengan
baudrate yang digunakan pada Serial monitor.
Satuan yang digunakan untuk baudrate adalah BPS
(Bit per Second), yang berarti mengindikasikan
seberapa cepat data dapat dikirimkan melalui
komunikasi serial dalam setiap detiknya. Standar
kecepatan baudrate yang diediakan oleh Arduino
adalah 300, 1200, 2400, 4800, 9600, 19200,
38400, 57600, 115200, 230400, dan 250000.
pemberian nilai baudrate yang umum digunakan
adalah 9600. semakin tinggi nilai baudrate maka
semakin tinggi pula kecepatan transfer, akan tetapi
meskipun demikian komunikasi yang melibatkan sinyal
elektrik dan proses sinkronisasi data sangat rentan error
dan derau, maka baudrate disarankan tidak melebihi
115200 bps untuk komunikasi Arduino. (Wardana, K.
Tutorkeren..com, 2015).
Tampilan Serial monitor Arduino dapat dilihat pada Gambar
dibawah ini.
[Link]
Gambar: Serial Monitor Arduino
Serial monitor pada Arduino dapat diakses dengan
mengunakan kombinasi keyboard CTRL+SHIFT+M. Untuk
menampilkan data atau informasi kedalam Serial monitor maka
harus digunakan perintah [Link]() pada bagian void
setup(){}. Contohnya seperti program berikut.
void setup(){
[Link](9600); //mengaktifkan Serial monitor
[Link] (“Hello World”);
}
void loop(){
}
Pembahasan program
Pada progam diatas, baudrate diatur ke 9600, kemudian
untuk mencetak karakter digunakan perintah [Link]();
seperti bahasa C pada umumnya, jika ingin menuliskan karakter
lebih dari 1 kata maka digunakan tanda kutip 2, misalnya
seperti program diatas adalah (“Hello World ”). Jika karakter
yang dicetak hanya 1 kata saja, maka dapat menggunakan
tanda kutip 1, seperti ('_').
[Link]
Perintah [Link] sengaja disimpan didalam fungsi setup(),
ini dimaksudkan supaya perintah tersebut tidak diulang-ulang
dan hanya akan dijalankan sekali saja. Jika program diatas
dijalankan maka hasilnya menjadi seperti Gambar dibawah
Gambar: Hello World di Serial monitor Arduino
Serial monitor ini dapat dimanfaatkan sebagai pengganti dari
pada LCD (Liquid Crystal Display), dengan serial monitor kita
bisa melihat hasil dari perulangan yang dijalankan, pembacaan
sensor dan lain sebagainya. Hanya saja jika untuk sistem yang
portable, kita tetap saja membutuhkan LCD sebagai penampil
informasi nya. Lewat komunikai Serial, Arduino juga dapat
dihubungkan dengan Software (seperti Visual Basic) atau
Borland delphi untuk Interfacing.
4.1 Menampilkan Hasil Perulangan di Serial Monitor
Pembahasan sebelumnya telah menjelaskan tentang jenis –
jenis perulangan yang dapat digunakan dalam Arduino dan
Pseudocode program-nya, akan tetapi belum sempat dibahas
bagaimana tampilan yang dihasilkan bila perulangan tersebut
digunakan di Arduino.
Contoh perulangan yang akan ditampilkan adalah perulangan
FOR, berikut adalah contoh sketch-nya,
[Link]
void setup(){ [Link](9600); //mengaktifkan Serial monitor
}
void loop(){
[Link]("\n Perulangan For");
for (int k=0; k<=50; k++){
[Link](k); //menampilkan angka 0 sampai 50
[Link]('_');
delay(100); }
[Link]("\n Perulangan For Gabungan");
for (int l=0; l<=5; l++){ for (int m=10; m<=15; m++){
[Link](l);
[Link]('_');
[Link](m);
[Link]();
delay(100); }}}
Sketch yang dibuat merupakan contoh perulangan for tunggal
dan for gabungan (membuat perulangan didalam perulangan),
dalam perulangan pertama perulangaan yang diinginkan adalah
0 sampai 5, kemudian pada perulangaan kedua perulangaan
yang diinginkan adalah 10 sampai 15. hasil dari perulangan
tersebut dapat dilihat pada Gambar dibawah.
Gambar : Hasil perulangan FOR
[Link]
4.2 Counter Up dengan button
Counter up atau dapat juga disebut penghitung, artinya
ketika tombol ditekan maka nilai akan terus bertambah.
Pengaplikasian counter-up ini cukup banyak, terlebih bila
digantikan dengan sensor, salah satu pengaplikasian-nya
adalah untuk menghitung barang. Untuk pembahasan
mengenai sensor akan dijelaskan pada bagian yang lain.
Untuk memulai mencoba membuat counter-up, terlebih dahulu
buat rangkaian-nya seperti Gambar berikut, hubungkan button
dengan pin D6.
Gambar: Rangkaian Button untuk counter-up
Pada bagian ini kita akan mencoba menggunakan Serial
monitor untuk menampilkan hasil penghitungan nya. Dalam
program ini, ketika button ditekan makass akan dilakukan
proses count dengan kenaikan 1, jika nilai sudah mencapai 18,
maka Lampu LED akan menyala dan proes counter akan direset
kembali menjadi 0. lebih jelasnya dapat dilihat pada listing
program dibuat sebagai berikut
[Link]
int led1 = 13;
int count = 0; /* variable untuk menampung data counter
dengan nilai awal counter = 0 */
void setup() {
[Link](9600); //mengaktifkan serial monitor,
pinMode(led1, OUTPUT);
pinMode(6, INPUT_PULLUP); } //pin 6 digunakan untuk button
void loop() {
//membaca nilai D6, dan diberi nama 'btn'
int btn = digitalRead(6);
if (btn == LOW) //ketika button ditekan
{ count ++; //untuk menaikkan nilai
delay (100); //menjeda proses counter
[Link] (count); //menampilkan proses penambahan
//jika nilai count mencapai 18, maka akan direset menjadi 0
if (count == 18){
count = 0;
[Link](count);
digitalWrite (led1, HIGH);
delay (300);
digitalWrite (led1, LOW);}} }
Hasil yang ditampilkan dari program diatas dapat dilihat pada
Gambar berikut.
Gambar: Hasil counter
[Link]
Dari Gambar terebut dapat dilihat bahwa ketika nilai counter
sudah mencapai 18, maka akan kembali direset menjadi 0.
Sesuai dengan perintah yang diberikan kedalam program.
if (count == 18){
count = 0;
4.3 Membaca Tegangan
Mikrokontroler Atmega328P jenis DIP (Dual In Package) yang
digunakan pada Arduino Uno R3 mempunyai 6 pin ADC (Analog
Digital Converter) yaitu A0 sampai A5, sedangkan untuk jenis
QIP (Quad In Package) mempunya 8 pin ADC yaitu pin A0
sampai A7. pin ini dapat digunakan membaca tegangan analog
yang kemuidian dirubahnya menjadi digital, sehingga kita dapat
menampilkan hasil pembacaan dari pin analog ini kedalam
serial monitor.
Untuk mencoba membaca tegangan dari pin Analog ini, kita
akan mencoba menggunakan rotary potensiometer yang akan
dihubungkan dengan pin Analog dan output 5V di Arduino.
Pin Wiper (tengah) rotary potensiometer dihubungkan dengan
pin A0 Arduino, kemudian 2 pin lagi dihubungkan dengan 5V
dan GND, untuk contoh Sketch-nya adalah sebagai berikut.
[Link]
void setup(){ [Link](9600); }
void loop(){
int Potensio = analogRead (A0);//membaca nilai dari pin A0
[Link](Potensio); //menampilkan hasil pembacaan A0
delay (100); }
Setelah di-upload, maka pada Serial monitor akan
menampilkan nilai dari potensiometer, nilai yang ditampilkan
berada diantara 0 sampai 1023, 0 sama dengan LOW, 1023
sama dengan HIGH. Nilai tersebut akan berubah-ubah ketika
kita memutar-mutar potensiometer, ketika rotary potensio
diputar kearah pin 5V maka nilai akan bertambah, kemudian
jika potensio diputar kearah Ground maka nilai akan berkurang.
4.4 Menyalakan Lampu melalui Serial monitor
Seperti yang sudah disebutkan sebelumnya, bahwa
penggunaan Serial monitor bukan hanya untuk menampilkan
informasi saja, tetapi dapat juga digunakan untuk memberikan
perintah.
Kita akan mencoba mengendalikan LED Built-in arduino
melalui serial monitor, nantinya pada saat kita mengirimkan
angka 1 melalui Serial monitor, maka LED akan menyala,
kemudian jika kita mengirimkan angka 0 maka LED akan
padam. Sketch Arduino-nya adalah:
const int LED = 13;
void setup(){
[Link](9600);
pinMode (LED, OUTPUT); }
void loop(){
if ([Link] ()>0){
char inputS = [Link]();
if (inputS == '1') {
//jika mengimkan angka 1, maka LED akan menyala
[Link](inputS);
digitalWrite(LED, HIGH); }
if (inputS == '0') {
//jika mengimkan angka 0, maka LED akan padam
[Link](inputS);
digitalWrite(LED, LOW); }
if (inputS == 'a'){
[Link](inputS);
[Link]
digitalWrite(LED, LOW);
delay(500);
digitalWrite(LED, HIGH);
delay (3000);
digitalWrite(LED, LOW); } } }
Pembahasan program
• if ([Link]()>0)
perintah ini digunakan untuk memastikan apakah
komunikasi Serial tersedia/dapat dilakukan?, dengan kata
lain apakah perintah [Link]() sudah diberikan?.
• char inputS = [Link]();
perintah ini digunakan untuk membaca data yang
dikirimkan, selanjtnya data yang dikirim akan
dimasukkan kedalam variabel inputS.
• If (inputS == '1')
jika data yang dikirimkan adalah 1, maka lampu akan
menyala.
4.5 Serial Plotter
Dalam penggunaan-nya Serial plotter sama saja dengan serial
monitor, yaitu untuk menampilkan informasi dari Arduino yang
dikirim secara Serial, cara menggunakan-nya pun sama, yaitu
dengan menggunakan perintah [Link](), hanya saja pada
Serial plotter informasi yang ditampilkan berupa Grafik
sehingga hanya cocok ketika menampilkan informai berupa
angka saja.
Untuk membuka Serial plotter dapat dilakukan dengan
menggunakan kombinasi keyboard CTRL+SHIFT+L. Berikut
adalah tampilan dari Serial plotter.
[Link]
Gambar, Serial plotter
Dalam serial plotter kita juga tidak bisa memberikan perintah
kedalam Arduino, karena tidak disediakan input text.
[Link]
BAGIAN 5
Memulai Menggunakan Sensor
Bagian ini akan membahas tentang penggunaan sensor, sensor yang
akan digunakan diantaranya adalah:
• Sensor Cahaya LDR (Light Dependent Resistor)
• Sensor Suhu IC LM35
• Sensor Gas (MQ-5)
• Sensor Digital HC-SR04 (Ultrasonic)
[Link]
Pada perangkat Mikrokontroller, sensor berguna
supaya Mikrokontroller dapat berinteraksi dengan
lingkungan disekitarnya, sehingga Mikrokontroller
dapat melihat, mendengar, merasakan sentuhan,
dan lain sebagainya. Umumnya sensor hampir
sama dengan button atau potensio yaitu memiliki 2
kondisi High / LOW.
5.1 Sensor Analog
Sensor analog dapat juga didefinisikan sebagai sensor yang
dapat menggunakan pin analog untuk pin inputnya.
5.1.1 Menggunakan sensor cahaya LDR ( Light Dependent
Resistor)
Sensor LDR bekerja berdasarkan cahaya yang diterimanya,
cahaya tersebut dapat mempengaruhi resistansi LDR, dalam
kondisi gelap, resistansi LDR bisa mencapai 10 M ohm, tapi
dalam kondisi terang, resistansi LDR turun hingga 1 K ohm
bahkan bisa kecil lagi.
Gambar, Sensor LDR
LDR ini dapat kita jadikan sebagai saklar lampu otomatis,
karena sifat resistansinya yang dapat berubah berdasarkan
cahaya yang ia terima. Rangkaian LDR dengan menggunakan
Arduino dapat dilihat pada Gambar berikut.
[Link]
Program untuk Arduino
const int led1 = 13;
const int led2 = 5;
void setup() {
[Link](9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
int LDR = analogRead(A0);
[Link](LDR);
/*
//--------contoh kondisi penyalaan lampu----------//
[Link]
* if (LDR < 700){
digitalWrite (led1, HIGH);
digitalWrite (led2, LOW);
} if (LDR < 600) {
digitalWrite (led2, HIGH);
digitalWrite (led1, LOW);
} else {
digitalWrite (led1, LOW);
*
*/
}
Gambar dibawah ini adalah hasil yang ditampilkan di serial
plotter Arduino IDE setelah dijalankan
Gambar: Data LDR yang di tampilkan di Serial plotter
Nilai yang dihasilkan padasaat kondisi normal berkisar antara
900 sampai 950, sedangkan pada saat kondii redup nilai-nya
kurang lebih 700, dan pada kondisi gelap (LDR ditutup) nilainya
berkisar di 500.
[Link]
5.1.2 Sensor Suhu IC LM35
Gambar IC LM35
IC LM35 bekerja dengan merubah besaran suhu menjadi
besaran tegangan, Karakteristik dari IC ini sendiri yaitu setiap
kenaikan 10 mV pada kaki output menandakan kenaikan 1
derajat Celcius, tegangan keluaran maksimal dari kaki output
adalah 1500 mV (1,5 V). itu berarti suhu maksimal yang dapat
dibaca oleh IC ini adalah 150 derajat Celcius, nilai ini didapat
dari perhitungan 1500 / 10 = 150.
Lalu bagaimana jika kita ingin menampilkan informasi suhu dari IC ini
di Arduino ??, sedangkan kita tau bahwa keluaran dari IC ini berupa
tegangan listrik.
Untuk mengatasi permasalahan tersebut, sebenarnya cukup
sederhana. Tetapi sebelumnya kita harus tau terlebih dahulu
bahwa jika pin analog Arduino diberikan tegangan sebesar 5V
(5000 mV), maka informasi yang akan ditampilkan (pada serial
monitor) oleh Arduino adalah 1024, 1024 sendiri menandakan
nilai HIGH (1).
Selanjutnya hitunglah berapa nilai yang ditampilkan oleh
Arduino jika tegangan yang diberikan sebesar 1V, dengan cara
1024/5 =204.8. kemudian hitung nilai 204.8 / 2, maka hasilnya
adalah 102.4.
jika tegangan maksimal dari LM35 adalah 1.5V, itu berarti nilai
yang dapat ditampilkan oleh Arduino adalah 307.2 (nilai ini
didapat dari 102.4*3).
kemudian yang kita butuhkan selanjutnya adalah bagaimana
cara menampilkan informasi suhu dari IC ini, ketika tegangan
[Link]
outputnya mencapai 1.5V informasi yang ditampilkan oleh
arduino adalah 150 derajat celcius. Untuk mengatasi
permasalahan tersebut, dapat digunakan rumus sebagai berikut
(nilai output dari IC LM35 * 500) /1024
Dengan menggunakan rumus diatas, maka pada saat nilai
output dari IC LM35 mencapai 307.2 (1.5V), maka informasi
yang akan ditampilkan oleh arduino adalah 150, nilai ini didapat
dari perhitungan (307.2*500) / 1024 = 150.
Rangkaian Arduino dan LM35 dapat dilihat pada Gambar
berikut.
Gambar, Rangkaian LM35
Kemudian untuk contoh programnya adalah sebagai berikut.
void setup() { [Link](9600); }
void loop() {
float inLM35 = analogRead(A0); //membaca tegangan IC LM35
float suhu = (inLM35*500) / 1024;
[Link]("Suhu ruangan: ");
[Link](suhu);
[Link]();
delay(100);
}
[Link]
kita juga dapat menggunakan IC LM35 ini untuk mengatur
penyalaan kipas secara otomatis, misalnya pada suhu 23°C
maka kipas akan menyala, dan jika suhu normal maka kipas
akan berhenti. Untuk ke-stabilan suhu, kita juga dapat
menggunakan IC ini untuk mengatur penyalaan dan
pemadaman penghangat ruangan, misalnya jika suhu ruangan
kurang dari 18°C maka pemanas ruangan akan menyala.
Kita akan membutuhkan relay untuk mengontrol Kipas atau
pemanas ruangan ini menggunakan Arduino, karena umumnya
kipas angin dan pemanas ruangan menggunakan Arus AC 220V.
Jika ingin menggabungkan kipas dan pemanas ruangan untuk
menjaga kestabilan suhu, dapat dilakukan dengan ilustrasi
sebagai berikut
Gambar, Konsep kondisi penyalan/pemadaman kipas
pengertian dari Gambar diatas adalah, jika suhu ruangan
terdeteksi kurang dari 18°C, maka kipas akan dipadamkan dan
pemanas ruangan akan dinyalakan, jika suhu lebih besar dari
23°C maka kipas akan dinyalakan dan pemanas ruangan akan
dipadamkan. Jika suhu berada diantara 18°C dan 23°C maka
kipas dan pemanas ruangan akan dipadamkan. Skema
rangkaian dari Kipas angin dan pemanas ruangan otomatis
dapat dilihat pada Gambar berikut
[Link]
Gambar, Penstabil suhu ruangan otomatis
Pada Gambar diatas terdapat duia motor yang diasumsikan
sebagai motor kipas (Motor1) dan pemanas ruangan (Motor2).
Kemudian untuk programnya dapat dilihat pada Pseudocode
dibawah
Input suhu
Output Heater, Kipas
if (suhu < 18){
heater ON
Kipas OFF
} else if (suhu > 23){
heater OFF
Kipas ON
} else {
heater OFF
kipas ON
}
Sebagai Latihan, silahkan rubah pseudocode diatas kedalam
sketch Arduino.
[Link]
5.1.3 Sensor pendeteksi gas (MQ-5)
Gambar: Sensor MQ-5
Sensor MQ-5 adalah sensor universal yang mampu
mendeteksi berbagai jenis gas, seperti Hidrogen (H2), Karbon
monoksida (CO), metana (CH4), etanol (CH3CH2OH), propana
(C3H8), butana (C4H10), dan gas hidrokarbon lainnya (Sumber:
[Link]/2014/05/mq-5-universal-gas-sensor_76.html?
m=1).
Spesifikasi dari sensor MQ-5 adalah:
• power supply 5V.
• Output / data keluaran tersedia dua pilihan, Analog atau
digital.
• Sensitivitas tinggi terhadap LPG, gas alam.
Untuk mengatur sensitivitas sensor, terdapat potensiometer
pada bagian belakang sensor, kita dapat memutar potensio
tersebut (kekiri atau kekanan) menggunakan obeng, tapi yang
harus diingat, jangan putar terlalu kanan, sampai lampu sensor
menyala. Karena kalau kita putar terlalu kanan, indicator sensor
menyala terus. kita tidak akan tau kondisi sensor apakah
sedang membaca atau tidak.
[Link]
Seperti spesifikasi yang sudah disebutkan diatas, bahwa
sensor MQ-5 dapat digunakan untuk mendeteksi Gas, kita akan
mencoba membuktikannya. Gas yang akan coba dideteksi
adalah gas dari bensin/cricket. mungkin memang banyak jenis
gas yang dapat dideteksi menggunakan sensor ini, tapi karena
gas dari bensin/cricket lebih mudah kita temui, sehingga akan
lebih mudah untuk di praktekan. Untuk pengaplikasiannya,
sensor ini dapat juga digunakan untuk mendeteksi kebocoran
gas LPG.
Bahan-bahan yang akan kita gunakan untuk membuat alat
pendeteksi ini adalah sebagai berikut:
1. Sensor MQ-5.
2. Arduino.
3. Speaker atau buzzer untuk alarm.
4. Bensin cricket (bensin yang biasa digunakan untuk
menyalakan merokok).
5. kabel secukupnya (untuk menghubungkan sensor
dengan Arduino).
seperti Gambar berikut:
[Link]
kemudian program yang digunakan adalah sebagai berikut:
const int buzzer = 3;
void setup() {
[Link](9600);
pinMode(buzzer, OUTPUT);
}
void loop() {
int mq5=analogRead(A0);
[Link] (mq5);
if (mq5 >= 100){ tone(buzzer, 90); delay (100); }
if (mq5 >= 300){ tone(buzzer, 500); delay (80); }
if (mq5 >= 500){ tone(buzzer, 2000); delay (50); }
else{ noTone(buzzer); }
}
[Link]
untuk melihat hasil program ini, bukalah serial plotter pada
Arduino IDE (Ctrl+Shift+L) maka didapkan hasil sebagai berikut
Pada program diatas, terdapat beberapa kondisi
percabangan, yang pertama adalah ketika nilai yang dibaca
sensor lebih besar dari 100, kemudian lebih besar dari 400, dan
lebih besar dari 500, hal ini dimaksudkan untuk indikasi
pencegahan dini saja. Nilai yang dapat ditampilkan berkisar
antara 0 sampai 1024.
Dari hasil percobaan yang telah saya lakukan, ketika cricket
didekatkan dengan sensor mq-5 nilai yang ditampilkan yaitu
lebih besar dari 500 (Kurang lebih sekitar 700). karena sensor
ini merupakan sensor universal yang dapat membaaca berbagai
jenis gas, saya coba menggunakan sensor ini untuk mendeteksi
parfum yang mempunyai kandungan alkohol, dan hasil yang
didapatkan yaitu lebih dari 110.
[Link]
5.2 Sensor Digital
Pada dasarnya sensor digital tidak terlalu berbeda jauh
dengan sensor analog, hanya saja pada senso digital pin yang
digunakan harus menggunakan pin digital, tidak bisa
menggunakan pin analog. Sedangkan untuk jenis sensor analog,
pin yang digunakan tidak ditentukan, artinya bisa menggunakan
pin input analog dan bisa juga menggunakan pin digital.
5.2.1 Sensor Ultrasonic HC-SR04
Gambar: Sensor HC-SR04
Gambar diatas adalah bentuk dari sensor HC-SR04, sensor ini
merupakan salah satu jenis sensor ultrasonic digital, yang
umumnya digunakan sebagai sensor jarak. Bila kitaperhatikan,
disana terdapat 2 benda yang mirip dengan speaker kecil,
benda tersebut berfungsi sebagai pemancar dan penerima
bunyi ultrasonic. Speaker kecil pada bagian kiri berfungsi
sebagai transmitter/pemancar yang mengeluarkan bunyi, biasa
disebut dengan trigger. Pada sisi sebelah kanan berfungsi
sebagai Receiver/penerima bunyi, biasa disebut echo.
Bunyi dapat merambat melalui udara, zat padat dan zat cair.
Cepat rambat bunyi pada zat padat lebih cepat dibandingkan
[Link]
dengan zat cair dan gas. Untuk lebih jelasnya dapat dilihat
pada tabel berikut
Tabel, Cepat rambat bunyi
Medium Cepat rambat
bunyi (m/s)
Udara (0°C) 331
Udara (15°C) 340
Air (25°C) 1490
Air Laut (25°C) 1530
Alumunium (20°C) 5100
Tembaga (20°C) 3560
Besi (20°C) 5130
Sumber: [Link]/cepat-rambat-bunyi
Pada saat suara dari trigger mengenai sebuah benda, maka
benda tersebut akan memantulkan kembali suara tersebut,
yang kemudian akan diterima oleh echo. Ilustrasinya seperti
pada Gambar berikut:
Gambar: Ilustrasi cara kerja HC-SR04
Cepat rambat bunyi dapat diselesaikan dengan menggunakan
rumus yang dibuat oleh van beek dan moll, rumus tersebut
yaitu:
[Link]
V= s/t
Dimana
V = Kecepatan (m/s).
s = jarak (m)
t = waktu (s)
Selanjutnya kita akan mencoba menerapkan rumus ini untuk
memprogram Arduino, untuk itu rangkailah terlebih dahulu
sensor HC-SR04 dan Arduino seperti pada Gambar dibawah
Gambar: Konfigurasi pin Arduino dan HC-SR04
Kemudian upload program dibawah ini melalui Arduino IDE
const int trigPin = 2;
const int echoPin = 3;
int led= 13;
int duration = 0; //variable untuk menyimpan hasil inputan echo
//variable untuk menyimpan hasil dari perhitungan jarak
int jarak = 0;
void setup(){
[Link](9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
[Link]
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
jarak = (duration*0.034)/2;//rumus
[Link](jarak);
[Link](" cm");
[Link](duration);
if (jarak<=70) {
digitalWrite(led, HIGH);
} else { digitalWrite(led, LOW);
}
}
Pembahasan program.
Untuk mulai menggunakan sensor, maka pin trigger harus di
matikan terlebih dahulu, tujuannya adalah supaya bunyi yang
dikirimkan tidak tercampur dengan bunyi sebelumnya, oleh
karena itu pada program diatas diberikan perintah
digitalWrite(trigPin, LOW); kemudian diberi jeda selama 2
Microseconds, setelah itu barulah trigger dihidupkan.
Echo berfungsi untuk membaca suara yang dipantulkan, oleh
karena itu diberikan perintah PulseIn(), yang berfungsi untuk
membaca pulse (HIGH atau LOW) pada pin echo. Selanjutnya
untuk membaca jarak, digunakan rumus sebagai berikut:
jarak = (duration*0.034)/2; atau sama dengan s=v.t/2
Dimana:
• duration (t) adalah waktu yang dibutuhkan untuk
menangkap suara yang dipantulkan.
• 0.034 (v) didapat dari cepat rambat suara di udara(15°C)
yang sudah dijelaskan pada tabel diatas. Karena satuan
waktu yang digunakan dalam program adalah
Microseconds, maka dilakukan perhitungan 340/10000 =
0.034, hal ini karena 1 seconds = 10000 Microseconds.
• Kemudian hasilnya dibagi 2, karena suara akan
dikirimkan kemudian dipantulkan kembali (Pulang pergi).
sehigga harus dibagi 2.
[Link]
Bagian 6
Penggunaan Library di Arduino IDE
Untuk beberapa perangkat I/O membutuhkan library supaya dapat
digunakan, seperti misalnya LCD dan keypad. Oleh karena itu maka
pada bagian ini akan membahas mengenai penggunaan Library di
Arduino IDE.
[Link]
6.1 Pengenalan Library
Library adalah sebuah program yang umumnya
berupa file .h (header) dan file .cpp. Didalam file .h
berisi tentang fungsi-fungsi dan class-class yang
nantinya akan dijelaskan pada file .cpp.
Dinamakan sebagai Library karena fungsinya yang
mirip dengan perpustakaan, dimana didalam
perpustakaan sendiri berisi tentang buku-buku yang
dapat kita jadikan sebagai referensi, sehingga ketika
kita menulis sebuah buku atau karya ilmiah, umumnya
nama buku dan pengarang akan kita tulis pada
buku/karya ilmiah kita.
Penggunaan library membuat program yang dibuat
menjadi lebih pendek/sederhana, karena yang kita butuhkan
hanya memanggil fungsi-fungsi yang telah dijelaskan pada
library, untuk itu dalam penggunaan library kita harus
mengetahui fungsi-fungsi apa yang dapat kita gunakan
dalam pemrograman. pada bahasa C, library dapat
digunakan dengan menggunakan perintah #include<nama
file library> diawal progam.
Dalam Arduino IDE, terdapat beberapa library yang sudah
disediakan, kita dapat melihatnya dengan memilih menu
Sketch->Include library.
Gambar : Melihat library di Arduino IDE
[Link]
6.2 Mulai menggunakan Library
Pada pembahasan ini kita akan mencoba membaca menulis
dan membada data pada EEPROM menggunakan library yang
sudah tersedia di Arduino IDE. EEPROM (Electrically Erasable
Programmable Read-Only Memory) adalah jenis chip memori
yang digunakan dalam komputer atau alat elektronik lain, data
yang disimpan didalam EEPROM tidak akan terhapus walaupun
sumber daya dimatikan atau mikrokontroller di reset, dan hanya
akan terhapus melalui perintah/program yang ditentukan.
Penggunaan EEPROM dalam dunia nyata misalnya Ketika kita
membuat suatu sistem untuk menghitung barang, kemudian
terjadi pemadaman listrik ketika sitem tersebut sedang bekerja,
sedangkan barang yang sudah dihitung sudah banyak,
bagaimana caranya supaya ketika listrik kembali lagi menyala,
penghitungan dilanjutkan dari data terakhirnya ?. misalnya
penghitungan terakhir adalah 100, kemudian ketika diulang
kembali maka penghitungannya dimulai dari 101.
kapasitas dari EEPROM sendiri berbeda-beda sesuai dengan
mikrokontroler yang digunakan, kapasitas EEPROM yang dimiliki
oleh atmega328P adalah 1 KB, yang berarti mempunyai 1023
blok penyimpanan EEPROM.
Contoh program yang dapat digunakan untuk membaca
EEPROM adalah sebagai berikut:
#include <EEPROM.h> //Memasukkan library EEPROM
int address = 0;
byte value;
void setup() { [Link](9600); }
void loop() {
// Membaca data EEPROM dari alamat pertama
value = [Link](address);
[Link](address);
[Link]("\t");
//menampilkan hasil pembacaan EEPROM ke Serial monitor
[Link](value, DEC);
[Link]();
address = address + 1;
//jika pembacaan EEPROM sudah sampau dialamat terakhir
//maka ulangi lagi dari awal
if (address == [Link]()) { address = 0;
} delay(100); }
[Link]
Setelah program dijalankan kita akan melihat data-data yang
terdapat didalam EEPROM, Hasil dari pembacaan EEPROM
dapat dilihat pada Serial monitor.
Gambar : Pembacaan nilai EEPROM
kita dapat melihat contoh-contoh penggunaan EEPROM lain
yang sudah tersedia di Arduino IDE dengan memilih menu file-
>example->EEPROM. Disana kita dapat melihat contoh menulis
data kedalam EEPROM, menulis karakter kedalam EEPROM, dan
lain sebagainya.
[Link]
6.3 Menampilkan Informasi Di LCD (Liquid Crystal Display)
LCD (Liquid Crystal Display) umumnya digunakan untuk
menampilkan berbagai informasi, baik berupa Gambar atau
hanya karakter saja. LCD yang akan dibahas disini adalah LCD
karakter 16x2 (16 kolom x 2 baris). Pengaplikasian dari LCD ini
sangat banyak, diantaranya untuk menampilkan waktu ketika
kita membuat jam digital, atau suhu ruangan jika kita ingin
membuat suatu alat penampil suhu, dan masih banyak lagi. hal
lain yang dapat kita lakukan dengan menggunakan LCD ini.
Bentuk fisik dan Pin dari LCD 16x2 dapat dilihat pada Gambar
dibawah ini.
Gambar : Bentuk fisik LCD 16x2
Dalam LCD karakter 16x2 terdapat pin-pin yang nantinya
akan kita hubungkan dengan Arduino, tetapi tidak semua pin
LCD yang akan kita hubungkan dengan Arduino, hanya
beberapa saja. Pin tersebut diantaranya dapat dilihat pada
Tabel berikut.
[Link]
Tabel : Konfigurasi Pin LCD dengan Arduino
Pin Fungsi Pin
LCD Arduino
VSS Untuk Ground modul LCD dan lampu LED GND
LED - (Background)
VCC Untuk masukan tegangan positif LCD dan 5V
LED + lampu LED (Background)
V0 Contrast adjusment, untuk mengatur Potensio
kontras karakter
RS Register Select 6
RW Read/Write GND
E Enable 7
DB 1 Data bus untuk transfer data 8 bit NC (Not
sampai Connected)
DB 5
DB 4 Data bus untuk transfer data 4 & 8 bit 9
DB 5 Data bus untuk transfer data 4 & 8 bit 10
DB 6 Data bus untuk transfer data 4 & 8 bit 11
DB 7 Data bus untuk transfer data 4 & 8 bit 12
Alasan kenapa kita menggunakan pin DB4 sampai DB7 pada
LCD sebagai pin data yang dihubungkan dengan Arduino yaitu
karena pin ini dapat digunakan untuk mentransfer data 4 dan 8
bit, berbeda dengan pin DB1 sampai DB5 yang hanya dapat
mentransfer data 8 bit saja.
Untuk pin V0, pin tersebut harus dihubungkan dengan rotary
potensio, fungsi pin terebut untuk mengatur contrast dari
karakter LCD. Untuk lebih jelasnya dapat dilihat pada Gambar
skema berikut.
[Link]
Gambar: Skema Arduino dan LCD 16x2
Untuk contoh program-nya, kita akan mencetak karakter dari
a sampai z dengan contoh program-nya dapat dilihat pada
Sketch berikut.
// include the library code:
#include <LiquidCrystal.h>
//Pin ini disesuaikan dengan Skema dan tabel diatas.
LiquidCrystal lcd(6, 7, 9, 10, 11, 12);
int thisChar = 'a';
void setup() {
// set up the LCD's number of columns and rows:
[Link](16, 2);
[Link]
// turn on the cursor:
[Link]();
}
void loop() {
// print the character
[Link](thisChar);
// wait a second:
delay(1000);
// Cetak karakter dari a sampai z
thisChar++;
// tulis karakter dari kanan ke kiri ketika karakter = 'k'
if (thisChar == 'k') {
//posisi kursor dimulai pada kolom 10, baris ke 2
[Link](9,1);
//mulai menulis dari kanan ke kiri
[Link]();
}
//Tulis karakter dari kiri ke kanan, ketika karakter = 'u'
if (thisChar == 'u') {
//posisi dimulai pada kolom 11 baris 1.
[Link](10,0);
//Mulai menulis dari kiri ke kanan
[Link]();
}
// reset at 'z':
if (thisChar > 'z') {
//Membersihkan LCD
[Link]();
// go to (0,0):
[Link]();
//Mulai lagi dari awal
thisChar = 'a';
}
}
6.3.1 Membuat Karakter di LCD
Selain dari karakter atau angka yang sudah tersedia pada
library LCD, kita juga dapat membuat karakter sendiri sesuai
dengan kreatifitas kita, caranya adalah dengan menambahkan
sebuah array yang berisi angka-angka biner 0 dan 1, dimana 0
[Link]
mewakili off (tidak tampil) dan 1 mewakili on (tampil). Contoh
array nya adalah
byte Underscore[8] = {
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b11111
};
Pada array diatas, dapat dilihat bahwa array berisi 8 baris,
dimana pada setiap baris berisi 5 digit angka, sedangkan 0b
adalah identitas bahwa nilai tersebut adalah biner. Jika array
diatas dicetak pada LCD maka akan menghasilkan underscore
(garis bawah) karena biner yang bernilai 1 hanya garis bawah
saja. Jika dilihat pada blok LCD, blok tersebut terdiri dari 8 baris
dan 5 kolom, sehingga pada array diatas berisi 5 digit angka,
dan 8 baris data array
Gambar : Blok pada LCD 16x2
Jika Array diatas digambarkan, maka hasilnya menjadi seperti
berikut.
Gambar: Hasil Karakter
[Link]
Kita juga dapat membuat karakter heart seperti berikut,
Gambar : Karakter Heart
untuk membuat karakter heart seperti Gambar diatas, kita
harus membuat array seperti berikut:
byte Heart[8] = {
0b00000,
0b11011,
0b10101,
0b10001,
0b10001,
0b01010,
0b00100,
0b00000
};
Selajutnya kita akan menerapkan pada program, untuk contoh
program membuat karakter dapat dilihat pada sketch berikut:
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
byte Heart[8] = { //array untuk membuat karakter
0b00000,
0b11011,
0b10101,
0b10001,
0b10001,
0b01010,
[Link]
0b00100,
0b00000
};
void setup() {
[Link](16, 2);
[Link](10, Heart);//perintah untuk membuat karakter baru
}
void loop() {
//karakter bergerak sebanyak 8 step
for (int she = 0; she < 8; she++){
[Link](0,0);
[Link]("i ");
[Link](10);
[Link](" She ");
[Link](); //Membuat karakter bergerak kekanan
delay(1000);
}
delay(2000);
[Link]();
for (int she = 0; she < 8; she++){
[Link](15,0);
[Link]("i ");
[Link](10);
[Link](" She ");
[Link]();//Membuat karakter bergerak ke kiri
delay(1000);
}
delay(2000);
[Link]();
}
Setelah di Upload, maka LCD akan menampilkan karakter
seperti Gambar dibawah
Gambar : Tampilan karakter heart di LCD
[Link]
Jika ingin menampilkan nilai pembacaan sensor, kita dapat
menulis nama variable-nya langsung pada bagian [Link],
misalnya seperti pseudocode berikut.
Int sens = readpin;
[Link](sens);
6.4 Menambahkan Library kedalam Arduino IDE
Pada beberapa situasi kita akan membutuhkan library
tambahan yang tidak disediakan oleh Arduino IDE, hal tersebut
mengharuskan kita untuk menambahkan sendiri library yang
dibutuhkan, di internet sudah banyak disediakan library-library
tambahan untuk Arduino, seperti library untuk RFID reader,
library untuk keypad, sensor gyroscope dan lain sebagainya.
Untuk contohnya, anda dapat mendownload library keypad dari
google drive saya di [Link]
id=1wU5WiwDRcuaGn6C6PExBu5JriOD4oQP0 Kemudian jika kita
sudah mendownload library yang dibutuhkan selanjutnya
adalah menambahkan-nya kedalam IDE, Langkah-langkah untuk
menambahkannya adalah pilih menu Sketch->Include library-
>menambahkan [Link]
Gambar: Menambahkan library
[Link]
Format library yang didownload umumnya menggunakan
format .zip, selanjutnya cari file library yang sudah didownload
tersebut, kemudian double click file tersebut untuk
menambahkan.
Jika file library berhasil ditambahkan, maka akan terdapat
informasi bahwa file sudah berhasil ditambahkan, seperti pada
Gambar berikut:
Gambar : Informasi berhasil menambahkan Library
setelah library keypad di-download kemudian kita akan
mencoba mengendalikan Arduino dengan keypad, keypad yang
digunakan adalah keypad matrix 4x4 seperti berikut
Gambar: Keypad 4x4 matrix
Keypad ini mempunyai 16 tombol yang berupa angka 1 sampai
9, Huruf A sampai D dan karakter * dan #, bentuk dari keypad
ini sangat tipis, selain itu terdapat perekat dibagian belakang
yang akan memudahkan keypad pada jenis pengaplikasian.
Spesifikasi dari Keypad ini adalah:
1. Maximum Rating : 24 Vdc, 30 mA.
2. Antarmuka: 8 pin untuk mengakses keypad 4x4 matrix.
[Link]
3. Suhu operasi: 32 sampai 122 derajat F (0 sampai 50
derajat Celcius).
4. Ukuran: 6.9 x 7.6 cm
Penggunaan keypad seringkali digunakan pada embedded
sistem, seperti untuk memasukkan password, memasukkan
jumlah liter yang dikeluarkan pada mesin SPBU, dan lain
sebagainya. Penggunaan Push-button terkadang menjadi
alternatif lain selain keypad, akan tetapi karena
pemasangannya yang cukup rumit menjadikan push-button
bukan menjadi pilihan utama, salah satu keuntungan
penggunaan push-button adalah ia dapat menggunakan pin
analog untuk inputnya, sedangkan keypad tidak bisa, keypad
umumnya hanya bisa menggunakan pin digital, karena sudah
ketentuan library-nya. Seperti keypad 4x4 ini yang
menggunakan 8 pin digital yaitu pin digital 2 sampai 9. progam
yang dibuat untuk keypad ini adalah sebagai berikut
#include <Keypad.h>
const byte ROWS = 4; //jumlah kolom
const byte COLS = 4; //jumlah baris
char keys[ROWS][COLS] = { //Array dari nilai keypad
{'1','4','7','*'},
{'2','5','8','0'},
{'3','6','9','#'},
{'A','B','C','D'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //pin untuk kolom
byte colPins[COLS] = {9, 8, 7, 6}; //pin untuk baris
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins,
ROWS, COLS );
void setup(){ [Link](9600); }
void loop(){
char key = [Link]();
if (key){
[Link](key);
}
}
Pembahasan program
[Link]
#include <Keypad.h> adalah perintah untuk menambahkan
library keypad, kemudian kita membuat sebuah variable untuk
jumlah kolom dan baris, karena keypad yang digunakan adalah
keypad 4x4 yang mempunya 16 tombol, maka variabel ROWS
dan COLS diisi dengan 4.
Setelah itu, dibuat sebuah array yang berisi nilai-nilai dari
keypad ketika nantinya ditekan. Urutan dalam Array-nya
memang tidak sama dengan urutan tombol keypad-nya, tapi ini
tidak menjadi masalah.
If (key) adalah perintah untuk membaca tombol yang ditekan,
yang berarti jika tombol ditekan maka lakukan suatu aksi yaitu
menampilkannya di serial monitor.
setelah program tersebut di upload, kemudian coba tekan
tombol keypad-nya satu persatu, maka hasilnya akan terlihat
seperti Gambar berikut:
Gambar: Hasil pembacaan Keypad 4x4
Bila kita lihat pada Gambar diatas, maka setiap kali kita
menekan keypad maka hasilnya langsung ditampilkan diserial
[Link]
monitor. Dari sini timbul permasalahan, bagaimana jika kita
ingin memasukkan/menampilkan beberapa angka sekaligus,
misalnya kita ingin menampilkan angka 1994 atau 53AD. Untuk
mengatasi permasalahan tersebut, kita bisa menggunakan
perintah isDigit atau isAlpha, lebih jelasnya saya menggunakan
program sebagai berikut:
#include <Keypad.h>
String inString="";
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','4','7','*'},
{'2','5','8','0'},
{'3','6','9','#'},
{'A','B','C','D'} };
byte rowPins[ROWS] = {5, 4, 3, 2};
byte colPins[COLS] = {9, 8, 7, 6};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins,
ROWS, COLS );
void setup(){ [Link](9600); }
void loop(){
char inChar = [Link]();
if (inChar){
/* periksa apakah nilai yang diinputkan berupa angka */
if (isDigit(inChar)) { inString += inChar; }
/*periksa apakah nilai yang diinputkan berupa huruf Alphabet */
if (isAlpha(inChar)) { inString += inChar; }
/* jika tombol * ditekan, maka tampilkan nilai yang diinputkan. */
if (inChar == '*') {
[Link]("nilai yang anda memasukkan :");
[Link](inString);
inString = "";
}
}
}
Pembahasan program
perbedaan program ini dengan program sebelumnya adalah
penambahan percabangan untuk mendeteksi apakah nilai yang
[Link]
diinputkan adalah karakter atau angka, hal ini dapat dilihat dari
bagian program if (isDigit(inChar)) dan if (isAlpha(inChar))
kemudian nilai yang diinputkan akan dimasukkan kedalam
variable inString, dengan menggunakan operator gabungan, ini
dapat dilihat pada bagian program inString += inChar;
setelah program tersebut upload, maka hasilnya menjadi
seperti berikut:
Gambar: Pembacaan multi karakter dari keypad 4x4
Sebagai bahan untuk latihan, silahkan buat sebuah project
membuka pintu dengan menggunakan password, komponen
yang digunakan adalah keypad 4x4 ini, untuk programnya
dapat menggunakan percabangan if......else atau
switch........case.
[Link]
Bagian 7
Menggerakkan Motor
Pada bagian ini, kita akan mencoba menggerakkan sebuah aktuator.
aktuator adalah sebuah peralatan mekanis untuk menggerakkan atau
mengontrol sebuah mekanisme atau sistem ([Link]).
[Link]
Aktuator terdiri dari 2 jenis, yaitu aktuator elektrik dan
aktuator pneumatik dan jhidrolik. Pada bagian ini hanya akan
dibahas mengenai aktuator elektrik yang sering digunakan,
diantaranya adalah Motor DC dan motor Servo.
7.1 Motor DC ( Direct Current )
Motor DC atau motor arus searah adalah suatu mesin yang
berfungsi untuk mengubah energi listrik arus searah menjadi
energi mekanik/gerak. Motor DC pada umumnya terdiri dari 2
bagian utama, yaitu stator dan rotor, stator adalah bagian yang
tidak bergerak dari motor yang magnet permanen, sedangkan
rotor adalah bagian yang bergerak/berputar dari motor, yang
berupa sebuah kumparan yang dililitkan pada besi dimana arus
listrik dapat mengalir.
Gambar: Konstruksi Motor DC
Untuk menggerakkan motor DC, kita tidak bisa langsung
menghubungkannya dengan Arduino, karena arus dari pin
Arduino tidak akan mampu menggerakkan motor DC ini,
terlebih bila motor DC yang digunakan membutuhkan daya
lebih bersar dari 5V, seperti misalnya motor DC 12V atau lebih.
Untuk itu dibutuhkan sebuah driver/pengendali motor DC,
[Link]
komponen-komponen yang dapat dijadikan sebagai driver
motor DC diantaranya adalah:
7.1.1 H-Bridge Transistor
Rangkaian driver motor dengan menggunakan transistor ini
biasa disebut dengan istilah H-Bridge, karena mungkin
bentuknya yang menyerupai huruf H. Untuk skema nya H-bridge
transistor dapapt dilihat pada Gambar berikut:
Gambar: Motor berputar berlawanan arah jarum jam
Pada gambar diatas, terdapat switch (saklar) yang ditandai
dengan Pin 1 dan Pin 2, pin tersebut dapat dihubungkan dengan
pin digital Arduino. Cara kerja dari rangkaian ini adalah pada
saat pin 1 diberikan tegangan, transistor NPN B akan aktif, dan
menjadikan motor berputar berlawanan arah jarum jam.
[Link]
Gambar: Motor berputar searah jarum jam
pada saat pin 2 aktif, maka akan mengaktifkan transistor NPN
A, hal ini akan membuat motor berputar searah jarum jam
untuk rangkaian ini, saya menggunakan 6 transistor yang
terdiri dari 4 buah transistor NPN dan 2 buah transistor PNP.
Kemudian jika kita lihat Gambar diatas (pada bagian pin Output
MC), disana terdapat pin yang dapat kita hubungkan dengan
Microcontroller untuk mengendalikan arah putaran motor
(berputar searah jarum jam atau berputar berlawanan arah
jarum jam).
Cara kerja dari rangkaian ini adalah pada saat transistor NPN
A diberikan arus listrik, maka arus dari Vs 20V (battery sebelah
kanan) akan mengalir melalui transistor PNP 1 dan NPN 2, hal
tersebut akan membuat arus listrik mengalir dari sisi kiri motor
menuju sisi kanan motor, sehingga motor akan berputar searah
jarum jam. Kemudian jika transistor NPN B diberikan arus listrik,
maka arus akan mengalir melalui transistor PNP 2 dan transistor
NPN 1, hal tersebut akan membuat motor berputar berlawanan
arah jarum jam, karena arus mengalir dari sisi kanan motor
menuju sisi kiri motor. Secara sederhananya, perubahan arah
putaran motor disebabkan karena perubahan polaritas arus dan
[Link]
tegangan yang melalui motor. Untuk lebih jelasnya mengenai
rangkaian Arduino dan H-bridge transistor, dapat dilihat pada
Skema berikut ini.
Gambar : Menghubungkan Arduino dengan H-Bridge
7.1.2 Driver motor menggunakan Relay
Relay yang digunakan untuk membuat driver motor ini adalah
relay dengan daya 5 volt, karena tegangan keluaran
mikrokontroller adalah 5 volt. Untuk Skema dari rangkaian yang
saya buat, dapat dilihat pada Gambar berikut
[Link]
Gambar: Driver motor menggunakan relay
Cara kerja rangkaian
Pada saat pin 1 aktif, maka Relay 4 (RL4) akan aktif, pada
relay 4 saya menempatkan tegangan positif disebelah kiri dan
tegangan negatif sebelah kanan, sehingga pada saat Relay 4
aktif, maka arus akan mengalir dari sisi kiri motor menuju sisi
kanan motor, hal ini akan menyebabkan motor berputar searah
jarum jam.
Pada saat pin 2 aktif, maka Relay 5 (RL5) akan aktif, pada
relay 5 saya menempatkan tegangan negatif sebelah kiri dan
tegangan positif di sebelah kanan. Ketika relay ini aktif maka
arus akan mengalir dari sisi kanan menuju sisi kiri motor,
sehingga motor akan berputar secara berlawanan dengan arah
jarum jam.
Kita juga bisa menggunakan rangkaian seperti ini
[Link]
Gambar: Driver motor menggunakan relay V2
Dengan menggunakan rangkaian seperti diatas, kita dapat
mengatur arah putaran motor dengan mengatur keadaan pin
out 1, jika pin out 1 aktif, maka akan mengaktifkan relay, dan
keadaan saklar pada relay akan otomatis berubah.
7.1.3 menggunakan IC L293D
Gambar : IC L293D
[Link]
IC L293D merupakan IC half H-bridge yang berguna sebagai
pengendali motor. IC ini dapat mengendalikan 2 Motor DC,
Karakteristik IC L293D adalah sebagai berikut:
- Tegangan Masukan maksimum= 4,5 sampai 36 volt.
- Tegangan Logic Maksimum = 4,5 – 36 volt.
- arus keluaran maksimum perkanal = 1 ampere.
- dispasi daya maksimum = 5 volt.
- Masukan suply dan logic terpisah.
- Kemasan = PDIP-16
Penggunaan IC ini merupakan cara yang paling sederhana,
karena kita tidak perlu merakit komponen untuk membuat
sebuah driver motor, kita hanya perlu menyambungkan motor
dan pin arduino dengan pin IC ini, Untuk menghubungkan
Arduino dan IC L293D, dapat dilihat pada Tabel berikut:
Tabel: Konfigurasi Pin Arduino dan L293D
Pin Arduino Pin IC L293D Fungsi
Digital 5 Pin Nomor 3 (In 1) Input untuk mengontrol
pergerakan Motor 1, Ke-kiri
Digital 6 Pin Nomor 7 (In 2) atau ke kanan.
Digital 9 Pin Nomor 15 (In 3) Input untuk mengontrol
pergerakan Motor 2, Ke-kiri
Digital 10 Pin Nomor 10 (In 4) atau ke kanan.
Pin Nomor 1 dan 9 Untuk mengaktifkan/enable
Digital 11
(Enable) Motor 1 dan 2.
Pin Nomor 4,5,12 dan
13 dihubungkan
Untuk memberi tegangan
Gnd dengan Ground
negatif atau Ground
Arduino dan Ground
power Supply motor
Pin Nomor 3 dan 6
dihubungkan denga Pin Output untuk Motor 1
Motor 1
Pin Nomor 11 dan 14
dihubungkan dengan Pin Output untuk Motor 2
Motor 2
Untuk Skemanya dapat dilihat pada Gambar berikut:
[Link]
Gambar: Driver motor menggunakan IC L293D
Untuk pin enable kita dapat menghubungkankan langsung
dengan pin Output 5V Arduino. Pada dasarnya program yang
digunakan untuk mengontol motor DC sama dengan
pengontrollan LED seperti yang sudah dijelaskan pada bagian
awal pembahasan. Kemudian untuk mengontol kecepatan
motor DC, kita dapat menggunakan fungsi analogWrite yaitu
perintah untuk mengatur PWM, dengan syarat kita
menghubungkan pin driver motor DC dengan pin PWM Arduino.
Contoh program untuk mengendalikan motor DC.
//Pin untuk Motor Left (kiri)
const int ML1 = 5; const int ML2 = 6;
//Pin untuk Motor Right (Kanan)
const int MR1 = 10; const int MR2 = 9;
void setup(){
pinMode(ML1, OUTPUT);
pinMode(ML2, OUTPUT);
pinMode(MR1, OUTPUT);
pinMode(MR2, OUTPUT);
}
void loop(){
[Link]
off();
//Mengatur kecepatan motor secara bertahap untuk berputar
for (int i = 50; i <= 255; i+=5){
analogWrite(ML1, i); analogWrite(MR1, i);
delay (500);
}
// Motor bergerak maju dengan kecepatan penuh selama 1 detik
digitalWrite(ML1, HIGH); digitalWrite(MR1, HIGH);
delay (1000);
off();
// Berputar kearah kanan
digitalWrite(ML1, HIGH); digitalWrite(MR2, HIGH);
delay(1000);
off();
// Berputar kearah kiri
digitalWrite(ML2, HIGH); digitalWrite(MR1, HIGH);
delay(1000);
off();
// Motor bergerak mundur dengan selama 1 detik
digitalWrite(ML2, HIGH); digitalWrite(MR2, HIGH);
delay (1000);
//Mengatur kecepatan motor secara bertahap untuk berhenti
for (int s = 255; s <= 5; s-=5){
analogWrite(ML2, s); analogWrite(MR2, s);
delay (500);
}
}
void off(){ //fungsi untuk mematikan Motor
digitalWrite(ML1, LOW);
digitalWrite(ML2, LOW);
digitalWrite(MR1, LOW);
digitalWrite(MR2, LOW);
delay(1000);
}
[Link]
7.2 Motor Servo
Motor servo merupakan sebuah motor DC dengan konstruksi
yang lebih kompleks, karena didalam motor servo sudah
dilengkapi dengan sistem kontrol yang berfungsi untuk
mengontrol kecepatan dan derajat putaran dari motor servo.
Didalam sebuah motor sevo terdapat gearbox, yang menjadikan
torsi motor servo lebih besar, sebuah IC / chip yang digunakan
untuk membaca perintah dan mengendalikan putaran motor,
dan sebuah potensio yang terhubung dengan roda gigi untuk
membaca putaran dari motor,
potensio
Motor servo dibedakan menjadi 2, yang pertama yaitu
continuous servo motor yaitu motor servo yang dapat
berputar hingga 360o, sehingga memungkinkan untuk bergerak
rotasi. dan yang kedua adalah uncontinuous servo motor
merupakan type motor standar yang hanya berputar 180 o,
Gambar diatas merupakan bentuk dari motor Servo mini
Tower pro, Yang mempunyai daya 5v, sehingga untuk dayanya
dapat dihubungkan langsung dengan pin 5V pada
mikrokontroler.
Prinsip utama pengontrolan motor servo adalah pemberian nilai
PWM pada kontrolnya, perubahan duty cycle akan menentukan
perubahan posisi dari motor servo. Sistem pengkabelan pada
motor servo terdiri dari 3, yaitu Vcc, Gnd dan kontrol/PWM.
Penggunaan PWM pada motor servo berbeda dengan
penggunaan PWM pada motor DC, pemberian nilai PWM pada
motor servo berguna untuk mengatur posisi putaran dan
kecepatan putaran motor servo.
Tampilan fisik Servo dan Arduino dapat dilihat pada Gambar
berikut.
[Link]
Gambar : Servo dan Arduino
Dalam Arduino IDE sudah disediakan library Servo.h yang dapat
digunakan ketika kita ingin mengontol motor servo. Contoh
program yang dibuat untuk mengontol motor servo.
#include <Servo.h>
Servo ser; //mendeklaraikan ser sebagai servo
int posisi = 0; //variable untuk meyimpan posisi servo
void setup() {
[Link](3); //pin yang digunakan untuk servo
}
void loop() {
// berputar dari 0 sampai 180 derajat
for (posisi = 0; posisi <= 180; posisi ++) {
// menggerakkan servo sesuai denga variable posisi
[Link](posisi);
delay(5); // delay / mengatur kecepatan servo
}
// berputar dari 0 sampai 180 derajat
for (posisi = 180; posisi >= 0; posisi --) {
[Link](posisi);
delay(5);
}}
[Link]
kita juga dapat menggunakan rotary potensio untuk mengatur
putaran motor Servo. Contoh rangkaian-nya dapat dilihat pada
Gambar dibawah.
Gambar : Mengatur servo dengan potensio
kemudian untuk memprogram-nya dapat menggunakan
program berikut.
#include <Servo.h>
Servo Ser;
int val; //Variable untuk menyimpan hasil pembacaan potensio
int potensio = 0; //potensio dihubungkan dengan pin Analog 0
void setup() {
[Link](3);
}
void loop() {
val = analogRead(potensio); //membaca nilai dari pin potensio
(antara 0 sampai 1023)
val = map(val, 0, 1023, 0, 180); //membuat skala dari 0 - 1023
menjadi 0-180
[Link](val); //memberikan nilai pada servo berdasarkan nilai
potensio
delay(8);
}
[Link]
[Link]
Referensi
Budiharto, Widodo. 2007. Robotika Modern, Jakarta: Andi
publisher
Djuandi, Feri. 2011. Arduino pengenalan, Jakarta:
[Link]
Malik, Muhamad Hasan Abdul, 2017. Perancangan pengendali
keamanan pintu lift otomatis berbasis Arduino nano, Garut:
STT-Garut
Santoso, Hari. 2015. Panduan Praktis Arduino untuk pemula V1,
Trenggalek: [Link]
Smith, Alan G. 2011. Introduction to Arduino,
Arifiano, Deni. 2011. Kamus Komponen Elektronika. Jakarta:
Kawan Pustaka
[Link]
[Link]
[Link]