Anda di halaman 1dari 33

MODUL PEMBELAJARAN MIKROKONTROLER ARDUINO

1. Pengenalan Mikrokontroler Arduino

mikrokontroler adalah komputer yang berukuran mikro dalam satu chip IC (integrated
circuit) yang terdiri dari processor, memory, dan antarmuka yang bisa diprogram. Sedangkan
Arduino adalah sebuah platform dari physical computing yang berbasis open-source. Untuk
memahami Arduino, terlebih dahulu kita harus memahami terlebih dahulu apa yang dimaksud
dengan physical computing. 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 merupakan sebuah konsep
untuk memahami hubungan 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.

Saat ini komunitas Arduino berkembang dengan pesat dan dinamis di berbagai belahan
dunia. Bermacam-macam kegiatan yang berkaitan dengan projek-projek Arduino bermunculan
dimana-mana, termasuk di Indonesia. Hal yang membuat Arduino dengan cepat diterima oleh
orang-orang adalah karena:

 Murah, dibandingkan platform yang lain.


 Lintas platform, software Arduino dapat dijalankan pada system operasi Windows,
Macintosh OSX dan Linux
 Sangat mudah dipelajari dan digunakan. Processing adalah bahasa pemrograman yang
digunakan untuk menulis program di dalam Arduino. Processing adalah bahasa
pemrograman tingkat tinggi yang dialeknya sangat mirip dengan C++ dan Java, sehingga
pengguna yang sudah terbiasa dengan kedua bahasa tersebut tidak akan menemui
kesulitan dengan Processing.
 Sistem yang terbuka, baik dari sisi hardware maupun software-nya.
 Dapat diprogram melalui kabel USB, bukan serial port. Fitur ini sangat berguna karena
kebanyakan komputer modern tidak memiliki serial port.

Arduino terdiri dari 2 komponen utama yaitu board Arduino, komponen hardware dari
Arduino tempat kita mengerjakan proyek dan Arduino IDE (Integrated Development
Environment), software yang bekerja di komputer. Kita menggunakan IDE untuk membuat
sketch (Program Arduino) yang kemudian di upload ke board Arduino.

1
1.1 Board Arduino

Komponen utama di dalam board Arduino adalah sebuah mikrokontroler 8 bit dengan
merk ATmega yang dibuat oleh perusahaan Atmel Corporation. Berbagai board Arduino
menggunakan tipe ATmega yang berbeda-beda tergantung dari spesifikasinya, sebagai
contoh Arduino Uno menggunakan ATmega328 sedangkan Arduino Mega 2560 yang lebih
canggih menggunakan ATmega2560. Untuk memberikan gambaran mengenai apa saja yang
terdapat di dalam sebuah mikrokontroler, pada gambar berikut ini diperlihatkan contoh
diagram blok sederhana dari mikrokontroler ATmega328 (dipakai pada Arduino UNO).

Gambar 1 Diagram Blok ATmega328

Blok-blok di atas dijelaskan sebagai berikut:

 Universal Asynchronous Receiver/Transmitter (UART) adalah antar muka yang


digunakan untuk komunikasi serial seperti pada RS-232, RS-422 dan RS-485.

 2KB RAM pada memory kerja bersifat volatile (hilang saat daya dimatikan),
digunakan oleh variable-variabel di dalam program.

 32KB RAM flash memory bersifat non-volatile, digunakan untuk menyimpan


program yang dimuat dari komputer. Selain program, flash memory juga
menyimpan bootloader. Bootloader adalah program inisiasi yang ukurannya kecil,

2
dijalankan oleh CPU saat daya dihidupkan. Setelah bootloader selesai dijalankan,
berikutnya program di dalam RAM akan dieksekusi.

 1KB EEPROM bersifat non-volatile, digunakan untuk menyimpan data yang tidak
boleh hilang saat daya dimatikan. Tidak digunakan pada board Arduino.

 Central Processing Unit (CPU), bagian dari microcontroller untuk menjalankan


setiap instruksi dari program.

 Port input/output, pin-pin untuk menerima data (input) digital atau analog, dan
mengeluarkan data (output) digital atau analog.

Dengan mengambil contoh sebuah board Arduino UNO, bagian-bagiannya dapat


dijelaskan sebagai berikut.

Gambar 2 Bagian-bagian di dalam Board Arduino UNO

3
4
1.2 Arduino IDE

Untuk memprogram board Arduino, kita butuh aplikasi IDE (Integrated


Development Environment) bawaan dari Arduino. Aplikasi ini berguna untuk membuat,
membuka, dan mengedit source code Arduino (Sketches). Sketch merupakan source code
yang berisi logika dan algoritma yang akan diupload ke dalam IC mikrokontroller
(Arduino).

Gambar 3 Tampilan Arduino IDE

Interface Arduino IDE tampak seperti gambar 3. Dari kiri ke kanan dan atas ke
bawah, bagian-bagian IDE Arduino terdiri dari:

 Verify : Proses Verify / Compile mengubah sketch ke binary code untuk diupload
ke mikrokontroller. Sebelum program di upload, biasakan untuk
memverifikasi terlebih dahulu untuk mengetahui adanya kesalahan pada
program.

 Upload : tombol ini berfungsi untuk mengupload sketch ke board Arduino.

 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.

5
 Save Sketch : menyimpan sketch.

 Serial Monitor : Membuka interface untuk komunikasi serial.

 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.

2. Jenis-jenis Board Arduino


Saat ini ada bermacam-macam bentuk board Arduino yang disesuaikan dengan
peruntukannya seperti diperlihatkan berikut ini:

ARDUINO USB

Menggunakan USB sebagai antar muka pemrograman atau komunikasi komputer, contohnya
Arduino Uno, Arduino Duemilanove, Arduino Diecimila, Arduino NG Rev. C, dan lain-lain.

Gambar 4 Arduino USB

6
ARDUINO SERIAL

Menggunakan RS232 sebagai antar muka pemrograman atau komunikasi komputer,


contohnya Arduino Serial dan Arduino Serial v2.0.

Gambar 5 Arduino Serial

ARDUINO MEGA

Papan Arduino dengan spesifikasi yang lebih tinggi, dilengkapi tambahan pin digital, pin
analog, port serial dan sebagainya. Contohnya Arduino Mega dan Arduino Mega 2560

Gambar 6 Arduino Mega

7
ARDUINO NANO DAN ARDUINO MINI

Papan berbentuk kompak dan digunakan bersama breadboard. Contohnya Arduino Nano 3.0,
Arduino Nano 2.x, Arduino Mini 04, Arduino Mini 03, dan Arduino Stamp 02

Gambar 7 Arduino Nano & Mini

3. Programming Arduino
Berikut ini merupakan penjelasan singkat mengenai beberapa struktur, variabel serta fungsi
yang sering digunakan untuk memprogram Arduino.

Struktur
Setiap program Arduino mempunyai dua buah fungsi yang harus ada.
 void setup( ) { }
Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika
program Arduino dijalankan untuk pertama kalinya.

 void loop( ) { }
Fungsi ini akan dijalankan setelah setup (fungsi void setup) selesai. Setelah
dijalankan satu kali fungsi ini akan dijalankan lagi, dan lagi secara terus menerus sampai
catu daya (power) dilepaskan.

Syntax
Berikut ini adalah elemen bahasa C yang dibutuhkan untuk format penulisan.
 // (komentar satu baris)
Digunakan untuk memberi catatan untuk kode-kode yang dituliskan. Apapun yang kita
ketikkan dibelakangnya akan diabaikan oleh program.

 /* */ (komentar banyak baris)

8
Jika anda punya banyak catatan, maka hal itu dapat dituliskan pada beberapa baris
sebagai komentar. Semua hal yang terletak di antara dua simbol tersebut akan diabaikan
oleh program.

 { } (kurung kurawal)
Digunakan untuk mendefinisikan kapan blok program mulai dan berakhir

 ; (titk koma)
Setiap baris kode harus diakhiri dengan tanda titik koma (jika ada titik koma yang hilang
maka program tidak akan bisa dijalankan).

Variabel
Berikut ini beberapa contoh variabel yang terdapat dalam pemograman Arduino.
 int (integer)
Digunakan untuk menyimpan angka dalam 2 byte (16 bit). Tidak mempunyai
angka desimal dan menyimpan nilai dari -32,768 sampai 32,767.

 long (long)
Digunakan ketika integer tidak mencukupi lagi. Memakai 4 byte (32 bit) dari
memori (RAM) dan mempunyai rentang dari -2,147,483,648 sampai 2,147,483,647.
 boolean (boolean)
Variabel sederhana yang digunakan untuk menyimpan nilai TRUE (benar) atau
FALSE (salah). Sangat berguna karena hanya menggunakan 1 bit dari RAM.
 float (float)
Digunakan untuk angka desimal (floating point). Memakai 4 byte (32 bit) dari RAM dan
mempunyai rentang dari -3.4028235E+38 sampai 3.4028235E+38.
 char (character)
Menyimpan 1 karakter menggunakan kode ASCII (misalnya 'A' = 65). Hanya memakai 1
byte (8 bit) dari RAM.

Operator Aritmatika
Operator yang digunakan untuk melaksanakan operasi aritmatika.

Operator Deskripsi
= Operator Penugasan
% Modulo (sisa hasil bagi)
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian

9
Operator Pembanding
Operator pembanding digunakan untuk membandingkan dua buah nilai.

Operator Deskripsi
== Sama dengan
!= Tidak sama dengan
< Lebih kecil
> Lebih besar
<= Lebih kecil atau sama dengan
>= Lebih besar atau sama dengan

Struktur Pengaturan
Program sangat tergantung pada pengaturan apa yang akan dijalankan berikutnya,
berikut ini adalah elemen dasar pengaturan.

 if…else, dengan format sebagai berikut:

if (kondisi) { // action A}
else {// action B}

Dengan struktur seperti di atas, program akan menjalankan action A jika kondisi
memenuhi, tetapi jika kondisi tidak terpenuhi, maka action B akan dijalankan.

 for, dengan format sebagai berikut :

for (statemen; kondisi; statemen) { }

Statemen yang pertama berisi tentang kondisi awal, biasanya inisialisasi suatu
variabel atau data (misal, a=0). Sedangkan statemen yang terakhir adalah perubahan yang
akan terjadi pada variabel pada statemen awal (misal a=a+1). Sedangkan kondisi
merupakan kondisi dimana perulangan akan terjadi, ketika kondisi sudah tidak sesuai,
maka perulangan akan berhenti. untuk lebih jelasnya tentang for, berikut contoh
sederhananya:

Gambar 8 Contoh Penggunaan for

10
 while, dengan format sebagai berikut :

while( kondisi ){
// eksekusi code }
Perintah while merupakan perintah untuk melakukan perulangan berdasarkan suatu
kondisi jadi banyaknya perulangan tidak bisa ditentukan dengan pasti dan program tidak
akan berhenti sebelum kondisi yang ditentukan menjadi FALSE.

Digital
 pinMode()
Digunakan untuk menetapkan mode dari suatu pin sebagai input atau output. Format
penulisannya adalah sebagai berikut :
pinMode(pin, mode)

contohnya, pinMode(13, OUTPUT); maka pin 13 akan menjadi output.

 digitalWrite()
Digunakan untuk menuliskan nilai HIGH atau LOW untuk sebuah pin digital.
Format penulisannya adalah sebagai berikut :
digitalWrite(pin, value)

Ketika sebuah pin ditetapkan sebagai OUTPUT, tegangannya dapat diatur


sebagai berikut : 5 V (atau 3.3 V untuk board yang mempunyai tegangan 3.3 V) untuk
HIGH dan 0 V untuk LOW.

 digitalRead(pin)
Digunakan untuk membaca nilai dari suatu pin digital apakah HIGH atau LOW. Jika
sebuah pin di set menjadi output, maka HIGH menunjukkan bahwa pin tersebut memiliki
tegangan sebesar 5 V dan LOW menunjukkan bahwa pin tersebut memiliki tegangan
sebesar 0 VFormat penulisannya adalah sebagai berikut :
digitalRead(pin)

Analog
 analogWrite()
Beberapa pin pada Arduino mendukung PWM (pulse width modulation) yaitu pin 3,
5, 6, 9, 10, 11. Fungsi analogWrite() digunakan untuk menulis nilai PWM ke sebuah pin.
PWM dapat digunakan untuk menghidupkan LED dengan berbagai tingkat kecerahan
atau mengontrol sebuah motor dengan kecepatan tertentu. Value (nilai) dari
analogWrite() adalah antara 0 ( 0% duty cycle ~ 0V) dan 255 (100% duty cycle ~ 5V).
Format penulisannya adalah sebagai berikut :
analogWrite(pin, value)

11
 analogRead()
Digunakan untuk membaca nilai dari sebuah pin. Keluaran fungsi ini berupa nilai
tegangan input 0 sampai 5 Vyang dikonversikan ke dalam nilai integer antara 0 sampai
1023. Format penulisannya adalah sebagai berikut :
analogRead(pin)

4. Tutorial Arduino
Berikut ini merupakan beberapa contoh tutorial proyek Arduino. Setiap proyek yang
dilakukan dalam modul ini menggunakan Arduino UNO dan Breadboard (Project Board).
Breadboard adalah board yang digunakan untuk membuat rangkaian elektronik sementara
dengan tujuan uji coba atau prototipe tanpa harus menyolder. Dengan memanfaatkan
breadboard, komponen-komponen elektronik yang dipakai tidak akan rusak dan dapat
digunakan kembali untuk membuat rangkaian yang lain. Breadboard umumnya terbuat dari
plastik dengan banyak lubang-lubang diatasnya. Lubang-lubang pada breadboard diatur
sedemikian rupa membentuk pola sesuai dengan pola jaringan koneksi di dalamnya.

Gambar 9 Papan Breadboard

4.1 Blinking LED


Ketika belajar pemrogaman, program pertama yang harus dicoba pertama kali adalah
memunculkan pesan "Hello World!". Dalam belalajar mikrokontroller, yang pertama kali
harus dipelajari adalah membuat lampu LED berkedip.

12
Rangkaian
Komponen yang diperlukan:
 1 buah LED
 1 buah resistor 330 ohm
 Kabel jumper
Skema rangkaian dapat dilihat pada gambar berikut:

Gambar 10 Skema rangkaian LED

Berikut ini adalah gambar simulasi penempatan komponen pada breadboard dan board
Arduino.

Gambar 11 Rangkaian LED pada Arduino

13
Kode Pemrograman :
/*
Blink
Menghidupkan LED selama 1 detik dan mematikannya selama 1 detik.
*/
void setup() {
// Menginisialisasi pin 13 sebagai output.
// Pada kebanyakan Arduino, Pin 13 mempunyai sebuah LED yang terpasang
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // Menghidupkan LED
delay(1000); // tunggu 1 detik
digitalWrite(13, LOW); // Mematikan LED
delay(1000); // tunggu 1 detik
}
 Merubah cerahnya LED (brightness)

Selain pengaturan digital yang hidup atau mati, Arduino dapat juga melakukan
pengaturan beberapa pin digital seperti layaknya analog yang akan kita gunakan untuk
mengatur cerahnya LED. Untuk mencobanya, maka rubah pin LED menjadi pin 9
(rubah juga kabel jumpernya). Rubah baris kode program, ganti 13 menjadi angka 9 dan
Rubah kode dalam { } pada bagian loop() dengan kode berikut:

void loop() {
analogWrite(9,angka baru);
}

angka baru = angka antara 0 - 255. 0 = mati, 255 = hidup, angka diantaranya
adalah perbedaan tingkat kecerahan.

 Fading
Program ini akan mengatur memudarnya LED dari mati ke hidup dan sebaliknya.

int brightness = 0; // Menyimpan nilai kecerahan LED


int fadeAmount = 5; // Mengatur berapa poin LED akan dipudarkan
void setup() {
// Mendeklarasikan pin 9 sebagai output
pinMode(9, OUTPUT);
}
void loop() {
// Mengatur kecerahan LED pada pin 9
analogWrite(9, brightness);
// Membuat loop untuk merubah kecerahan LED

14
brightness = brightness + fadeAmount;
// Membalikkan arah dari fading jika telah mencapai nilai min atau maks.
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// Tunggu selama 30 milliseconds
delay(30);
}

4.2 Push Buttons

Sebelumnya telah dijelaskan tentang bagaimana mengendalikan LED. Untuk


mengendalikan LED kita menjadikan pin pada Arduino sebagai OUTPUT. Pada bagian
ini akan dibahas tentang bagaimana menjadikan pin Arduino sebagai INPUT dan sebagai
aplikasinya, maka akan digunakan komponen pushbutton.

Rangkaian

Komponen yang diperlukan:


 2 buah push button
 2 buah resistor 10K ohm
 1 buah resistor 330 ohm
 1 buah LED
 Kabel jumper

Pin Arduino akan dihubungkan dengan GND (ground) melalui tombol. Ketika tombol
ditekan, pin akan menjadi LOW, tetapi pada saat dilepas maka kondisi pin akan
mengambang (floating). Di dalam elektronika digital, jika sebuah pin diset sebagai
INPUT, kemudian pin tersebut belum tersambung ke VCC atau GND, maka logika pada
pin tersebut masih mengambang (floating). Oleh karena itu, pin tersebut harus
ditentukan apakah akan diberi resistor pull-up (sehingga bernilai HIGH) atau diberi
pull-down (sehingga bernilai LOW).
Pada percobaan, resistor akan dipasangkan antara pin Arduino dan +5V, sehingga
ketika tombol dilepas maka pin akan terhubung dengan +5V melalui resistor dan pin menjadi
HIGH. Berikut merupakan skema rangkaian pushbutton dengan menggunakan resistor pull
up.

15
Gambar 12 Skema rangkaian pushbuttons dengan pull up resistor

Berikut ini merupakan gambar simulasi penempatan komponen pada breadboard dan
board Arduino untuk pushbutton dengan pull up resistor.

Gambar 13 Rangkaian pushbuttons dengan pull up resistor pada Arduino

16
Kode Pemrograman :

/*
Button
Menghidupkan dan mematikan LED pada pin 9 dengan menggunakan tombol yang terhubung ke
pin 2.
*/

const int buttonPin = 2; // pushbutton dihubungkan ke pin 2


const int ledPin = 13; // LED dihubungkan ke pin 13
int buttonState = 0; // variabel untuk membaca status pushbutton

void setup() {
// Menginisialisasikan pin LED sebagai output
pinMode(ledPin, OUTPUT);
// Menginisialisasikan pin pushbutton sebagai input
pinMode(buttonPin, INPUT);
}

void loop(){
// Membaca nilai pushbutton apakah HIGH atau LOW
buttonState = digitalRead(buttonPin);
// Jika pushbutton ditekan, maka buttonState akan bernilai HIGH
if (buttonState == HIGH) {
// Hidupkan LED
digitalWrite(ledPin, HIGH);
}
else {
// Matikan LED
digitalWrite(ledPin, LOW);
}
}

4.3 Potentiometer

Arduino mempunya 6 pin analog yang dapat membaca input berupa voltase (dari 0
sampai 5 V) dan mengkonversikannya ke angka digital antara 0 (0 V) dan 1023 (5
V), yaitu pembacaaan dengan resolusi 10 bit. Salah satu komponen yang dapat
mengeksploitasi tegangan input ini adalah potentiometer atau biasa disebut juga variable
resistor. Potentiometer yang terhubung dengan tegangan 5 V dapat memberikan
tegangan keluaran antara 0 sampai 5 V, tergantung pada sudut putaran potentiometer
tersebut.

17
Rangkaian
Komponen yang diperlukan:

 1 buah potentiometer 10K ohm


 1 buah resistor 330 ohm
 1 buah LED
 Kabel jumper

Gambar 14 Skema rangkaian potentiometer

Berikut ini merupakan gambar simulasi penempatan komponen pada breadboard dan board
Arduino untuk potentiometer.

Gambar 15 Rangkaian potentiometer pada Arduino

18
Kode Pemrograman

int sensorPin = A0; // potentiometer dihubungkan ke pin A0


int ledPin = 13; // LED dihubungkan ke pin 13
int sensorValue = 0; // variabel untuk menyimpan nilai dari sensor dalam potentiometer

void setup() {
// Menginisialisasikan pin LED sebagai output:
pinMode(ledPin, OUTPUT);
}

void loop() {
// Membaca nilai dari sensor
sensorValue = analogRead(sensorPin);
// Menghidupkan LED
digitalWrite(ledPin, HIGH);
// menunggu selama <sensorValue> milliseconds
delay(sensorValue);
// Mematikan LED
digitalWrite(ledPin, LOW);
// menunggu selama <sensorValue> milliseconds:
delay(sensorValue);
}

4.4 Buzzer

Untuk mengontrol suara, buzzer/piezo elements harus dihubungkan ke salah satu pin
digital Arduino. Sebuah buzzer akan menghasilkan suara ketukan setiap kali dialiri
gelombang (pulse) arus listrik. Jika kita menggunakan gelombang arus listrik dengan
frekuensi yang tepat (misalnya 440 kali per detik untuk menghasilkan nada A) maka
suara ketukan secara bersama-sama ini akan menghasil nada musik.

Untuk memudahkan dalam mengontrol suara, Arduino memiliki fungsi tone() yang
berfungsi untuk menghasilkan pulsa dari frekuensi yang diinginkan. Fungsi ini memiliki
format penulisan sebagai berikut :

tone(pin, frequency, duration)

Durasi harus dispesifikasikan, jika tidak maka pulsa akan terus berlanjut hingga fungsi
noTone() di panggil.

19
Rangkaian

Komponen yang diperlukan:


 1 buah buzzer
 Kabel jumper

Skema rangkaian dapat dilihat pada gambar berikut:

Gambar 16 Skema rangkaian potentiometer

Berikut ini merupakan gambar simulasi penempatan komponen pada breadboard dan board
Arduino untuk buzzer.

Gambar 17 Rangkaian potentiometer pada Arduino


20
Kode Pemrograman

Di bawah ini adalah kode pemrograman yang digunakan untuk Buzzer.

#define NOTE_C4 262 // DO


#define NOTE_D4 294 // RE
#define NOTE_E4 330 // MI
#define NOTE_F4 349 // FA
#define NOTE_G4 392 // SOL
#define NOTE_A4 440 // LA
#define NOTE_B4 494 // SI
#define NOTE_C5 523 // DO

// speaker ada di pin 9


const int pinSpeaker = 9;

void setup() {
pinMode(pinSpeaker, OUTPUT); // Mengatur pin speaker untuk menjadi output
}

void loop() {
tone(pinSpeaker, NOTE_C4, 500); // Membunyikan nada DO selama 500 milliseconds
delay(500);
tone(pinSpeaker, NOTE_D4, 500); // Membunyikan nada RE selama 500 milliseconds
delay(500);
tone(pinSpeaker, NOTE_E4, 500); // Membunyikan nada MI selama 500 milliseconds
delay(500);
tone(pinSpeaker, NOTE_F4, 500); // Membunyikan nada FA selama 500 milliseconds
delay(500);
tone(pinSpeaker, NOTE_G4, 500); // Membunyikan nada SOL selama 500 milliseconds
delay(500);
tone(pinSpeaker, NOTE_A4, 500); // Membunyikan nada LA selama 500 milliseconds
delay(500);
tone(pinSpeaker, NOTE_B4, 500); // Membunyikan nada SI selama 500 milliseconds
delay(500);
tone(pinSpeaker, NOTE_C5, 500); // Membunyikan nada DO selama 500 milliseconds
delay(500);

noTone(pinSpeaker); // Menghentikan nada


delay(1000);
}

21
4.5 Servo

Motor servo dikendalikan dengan memberikan sinyal PWM (Pulse Wide Modulation)
melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan akan menentukan posisi
sudut putaran dari poros motor servo. Sebagai contoh, lebar pulsa dengan waktu 1,5 ms (mili
detik) akan memutar poros motor servo ke posisi sudut 900. Bila pulsa lebih pendek dari 1,5
ms maka akan berputar ke arah posisi 00 atau ke kiri (berlawanan dengan arah jarum jam),
sedangkan bila pulsa yang diberikan lebih lama dari 1,5 ms maka poros motor servo akan
berputar ke arah posisi 1800 atau ke kanan (searah jarum jam). Salah satu kelebihan Arduino
adalah disediakannya software library yang memungkinkan untuk menggerakkan beberapa
servo dengan kode yang sederhana.

Rangkaian

Komponen yang diperlukan:


 1 buah servo mikro
 Kabel jumper

Skema rangkaian dapat dilihat pada gambar berikut:

Gambar 18 Skema rangkaian servo

Berikut ini merupakan gambar simulasi penempatan komponen pada breadboard dan board
Arduino untuk servo.

22
Gambar 19 Rangkaian servo pada Arduino

Kode Pemrograman

Di bawah ini adalah kode pemrograman yang digunakan untuk menggerakkan servo.
#include <Servo.h>

Servo myservo; // Membuat obyek servo untuk mengontrol

int pos = 0; // variabel unuk menyimpan posisi servo

void setup()
{
myservo.attach(9); // Servo dihubungkan ke pin 9
}

void loop()
{
for(pos = 0; pos < 180; pos += 1) // bergerak sebesar 10 dari 00 – 1800
{
myservo.write(pos); // memerintah servo untuk bergerak ke posisi sesuai variabel 'pos'
delay(15); // tunggu 15ms agar servo sampai ke posisi yang diinginkan
}
for(pos = 180; pos>=1; pos -=1) // bergerak sebesar 10 dari 1800 - 00
{
myservo.write(pos); // memerintah servo untuk bergerak ke posisi sesuai variabel'pos'
delay(15); // tunggu 15ms agar servo sampai ke posisi yang diinginkan
}
}

23
4.6 Sensor

Sensor adalah alat yang dapat digunakan untuk mendeteksi sesuatu peristiwa atau
perubahan yang terjadi sekitarnya, seperti gerakan, suhu, cahaya, dan lain-lain. Sensor
merupakan bagian dari transducer yang berfungsi untuk mendeteksi perubahan energi
eksternal yang akan masuk ke bagian input transducer, sehingga perubahan kapasitas energi
yang ditangkap akan dikirimkan kepada bagian converter dari transducer untuk dirubah
menjadi energi listrik.

4.6.1 Sensor Suhu

Sesuai namanya, sensor suhu digunakan untuk mengukur suhu. Sensor suhu yang akan
digunakan di dalam tutorial ini adalah TMP36. Sensor ini memiliki 3 kaki, +V, Signal dan
Ground. Tegangan masukan (+V) dari sensor ini adalah 2.7 – 5,5 V. Pada suhu kamar (25
0
C), sensor ini menunjukkan nilai 750mV dan perubahan suhu sebesar 1 0C sama dengan
perubahan output sensor sebesar 10mV.

Gambar 20 Sensor suhu TMP36

Rangkaian
Komponen yang diperlukan :

 1 Buah Sensor suhu TMP36


 Kabel Jumper

Berikut ini merupakan gambar simulasi penempatan komponen pada breadboard dan
board Arduino untuk sensor suhu TMP 36.

24
Gambar 21 Rangkaian sensor suhu TMP 36 pada Arduino

 Pin (+V) dihubungka ke pin 5 Volt di Arduino


 Pin (SIGNAL) dihubungkan ke pin A0 pada Arduino
 Pin GND dihubungkan ke Ground (GND) pada Arduino

Kode Pemograman

const int temperaturePin = 0; // Pin signal dari TMP 36 terhubung dengan pin analog 0 Arduino

void setup()
{
Serial.begin(9600); // Memulai komunikasi serial

// Komunikasi serial digunakan untuk mengirim data dari Arduino ke PC atau sebaliknya
// Untuk dapat berkomunikasi, Arduino dan PC harus memiliki kecepatan komunikasi yang sama
// Kecepatan ini diukur dengan satuan bits per second, disebut juga “Baud Rate”
// 9600 merupakan Baud Rate yang sering digunakan dan akan mengirim
// sekitar 10 karakter / detik
}

void loop()
{
float voltage, degreesC, degreesF; // Mendeklarasikan variabel untuk nilai tegangan, derajat
//Celcius dan derajat Fahrenheit
/*
Pertama, kita akan membaca nilai tegangan yang ada di pin analog.
Biasanya, kita akan menggunakan fungsi analogRead(), yang akan menghasilkan nilai antara 0
sampai 1023.

25
Disini kita telah menulis sebuah fungsi (di bawah) yang bernama getVoltage()
Fungsi ini akan mengkonversi nilai 0 -1023 dari analogRead() menjadi nilai 0 – 5
*/

voltage = getVoltage(temperaturePin); // Memanggil Fungsi getVoltage()

degreesC = (voltage - 0.5) * 100.0; // Mengkonversikan nilai tegangan menjadi derajat Celcius

degreesF = degreesC * (9.0/5.0) + 32.0; // Mengkonversikan nilai 0C menjadi 0F

Serial.print("voltage: "); // Menampilkan nilai tegangan di serial monitor


Serial.print(voltage);
Serial.print(" deg C: "); // Menampilkan nilai 0C di serial monitor
Serial.print(degreesC);
Serial.print(" deg F: "); // Menampilkan nilai 0F di serial monitor
Serial.println(degreesF);
delay(1000); // Tunggu selama 1 detik untuk mengulang proses
}

float getVoltage(int pin)


{
return (analogRead(pin) * 0.004882814); // Mengkonversi nilai dari aanlogRead() menjadi nilai
tegangan 0-5 V
}

4.6.2 Photoresistor

Photoresistor atau Light Dependent Resistor (LDR) jenis Resistor yang nilai hambatan
atau nilai resistansinya tergantung pada intensitas cahaya yang diterimanya. Nilai Hambatan
LDR akan menurun pada saat cahaya terang dan nilai Hambatannya akan menjadi tinggi jika
dalam kondisi gelap. Dengan kata lain, fungsi LDR (Light Dependent Resistor) adalah untuk
menghantarkan arus listrik jika menerima sejumlah intensitas cahaya (kondisi terang) dan
menghambat arus listrik dalam kondisi gelap.

LDR (Light Dependent Resistor) yang merupakan komponen elektronika peka cahaya ini
sering digunakan atau diaplikasikan dalam Rangkaian Elektronika sebagai sensor pada
Lampu Penerang Jalan, Lampu Kamar Tidur, Rangkaian Anti Maling, Shutter Kamera,
Alarm dan lain sebagainya.

Gambar 22 Photoresistor

26
Rangkaian

 1x LED
 1x 330Ω Resistor
 1x Photoresistor
 1x 10k Resistor
 Kabel Jumper

Berikut ini merupakan gambar simulasi penempatan komponen pada breadboard dan
board Arduino untuk photoresistor.

Gambar 23 Rangkaian photoresistor pada Arduino

Photo resistor:

 Sambungkan satu kaki dari photoresistor ke pin 5V Arduino


 Sambungkan kaki yang lain ke pin Analog 0 (A0)
 Sambungkan resistor 10K diantara pin A0 dan GND

LED:

 Sambungkan kaki positif LED ke pin digital 9.


 Sambungkan kaki negatif LED ke resistor 330 Ω
 Sambungkan kaki resistor yang lain ke GND

27
Kode Pemograman

const int sensorPin = 0; // Mendeklarasikan pin analog 0 sebagai pin sensor


const int ledPin = 9; // mendeklarasikan pin 9 sebagai pin LED

int lightLevel; // mendeklarasikan variabel untuk level cahaya

void setup()
{
// Mengatur pin 9 sebagai pin output
pinMode(ledPin, OUTPUT);
}

void loop()
{

lightLevel = analogRead(sensorPin); // membaca nilai tegangan dari photoresistor

/*
Kita akan menggunakan nilai dari analogRead() untuk mengontrol LED dengan
Menggunakan fungsi analogWrite()
Tetapi nilai analogRead() berkisar antara 0 – 1023, sedangkan analogWrite() hanya menerima
nilai antara 0 – 255

Untuk menyelesaikan permasalahan ini kita dapat menggunakan fungsi map() dan constrain ()

map() akan memetakan suatu range nilai ke dalam range nilai yang diinginkan
constrain() diperlukan untuk membatasi nilai agar tidak melebihi range yang diinginkan
*/

lightLevel = map(lightLevel, 0, 1023, 0, 255);

lightLevel = constrain(lightLevel, 0, 255);

analogWrite(ledPin, lightLevel);
}

4.6.3 Sensor Ultrasonik

Sensor ultrasonik adalah sebuah sensor yang berfungsi untuk mengubah besaran fisis
(bunyi) menjadi besaran listrik dan sebaliknya. Cara kerja sensor ini didasarkan pada prinsip
dari pantulan suatu gelombang suara sehingga dapat dipakai untuk menafsirkan eksistensi
(jarak) suatu benda dengan frekuensi tertentu. Disebut sebagai sensor ultrasonik karena
sensor ini menggunakan gelombang ultrasonik (bunyi ultrasonik).

Pada sensor ultrasonik, gelombang ultrasonik dibangkitkan melalui sebuah alat yang
disebut dengan piezoelektrik dengan frekuensi tertentu. Piezoelektrik ini akan menghasilkan
gelombang ultrasonik (umumnya berfrekuensi 40kHz) ketika sebuah osilator diterapkan pada

28
benda tersebut. Secara umum, alat ini akan menembakkan gelombang ultrasonik menuju
suatu area atau suatu target. Setelah gelombang menyentuh permukaan target, maka target
akan memantulkan kembali gelombang tersebut. Gelombang pantulan dari target akan
ditangkap oleh sensor, kemudian sensor menghitung selisih antara waktu pengiriman
gelombang dan waktu gelombang pantul diterima.

Gambar 24 Cara kerja sensor ultrasonik

HC-SR04 Ultrasonic Sensor adalah sebuah sensor ultrasonik yang telah banyak
digunakan untuk proyek seperti membuat robot avoider, deteksi ketinggian air, sensor parker
dan lain-lain.

Gambar 25 HC-SR04 Ultrasonic Sensor

Rangkaian
 1 buah Sensor Ultrasonic HC-SR04
 Kabel Jumper

Berikut ini merupakan gambar simulasi penempatan komponen pada breadboard dan
board Arduino untuk sensor ultrasonik HC-SR04.

29
Gambar 26 Rangkaian sensor ultrasonik HC-SR04 pada Arduino

Sambungan sensor ultrasonik HC-SR04 dan Ardunio:

 VCC tersambung ke +5VDC


 Trig tersambung ke Pin 8
 Echo tersambung ke Pin 7
 GND tersambung ke GND

Kode Pemograman

int trigPin = 8; //mendeklarasikan pin 8 Arduino sebagai pin Triger


int echoPin = 7; //mendeklarasikan pin 7 Arduino sebagai pin Echo
long duration, cm, inches;

void setup() {

Serial.begin (9600); // memulai komunikasi serial antara Arduino dan PC dengan Baud Rate 9600
pinMode(trigPin, OUTPUT); // Mendefinisikan pin 8 (trigPin) sebagai output
pinMode(echoPin, INPUT); // Mendefinisikan pin 7 (echoPin) sebagai input

void loop()
{
// Untuk memicu sensor agar mulai bekerja, maka dibutuhkan pulsa sebesar 10 microseconds

digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH); // Memberi pulsa sebesar 10 µs untuk memicu sensor
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

30
pinMode(echoPin, INPUT); // Mendeklarasikan pin echo sebagai pin input

duration = pulseIn(echoPin, HIGH); // Menghitung durasi dari pulsa HIGH yang dikirimkan sampai
// pantulannya diterima oleh pin echo

// Mengkonversikan waktu yang didapat menjadi jarak


// Jarak didapat dengan menggunakan rumus :
// Jarak = (Waktu pulsa HIGH / 2) / Kecepatan rambat suara di udara (340 m/s)
// 340 m/s = 29,1 cm/µs = 74 inch/µs

cm = (duration/2) / 29.1;
inches = (duration/2) / 74;

Serial.print(inches); // Menampilkan nilai jarak dalam inch pada serial monitor


Serial.print("in, ");
Serial.print(cm);
Serial.print("cm"); // Menampilkan nilai jarak dalam centimeter pada serial monitor
Serial.println();

delay(250);
}

4.6.4 Sensor PIR ( Passive Infrared Sensor)

Sensor PIR (Passive Infra Red) adalah sensor yang digunakan untuk mendeteksi adanya
pancaran sinar infra merah. Sensor PIR bersifat pasif, artinya sensor ini tidak memancarkan
sinar infra merah tetapi hanya menerima radiasi sinar infra merah dari luar.
Sensor ini biasanya digunakan dalam perancangan detektor gerakan berbasis PIR. Karena
semua benda memancarkan energi radiasi, sebuah gerakan akan terdeteksi ketika sumber
infra merah dengan suhu tertentu (misal: manusia) melewati sumber infra merah yang lain
dengan suhu yang berbeda (misal: dinding), maka sensor akan membandingkan pancaran
infra merah yang diterima setiap satuan waktu, sehingga jika ada pergerakan maka akan
terjadi perubahan pembacaan pada sensor.

Rangkaian
 1 Buah PIR Motion Sensor
 1 Buah LED
 Kabel Jumper

Berikut ini merupakan gambar simulasi penempatan komponen pada breadboard dan
board Arduino untuk sensor PIR.

31
Gambar 27 Rangkaian sensor PIR pada Arduino

Kode Pemograman

/*
* PIR sensor tester
*/

int ledPin = 13; // Mendeklarasikan pin digital 13 sebagai pin LED


int inputPin = 2; // Mendeklarasikan pin digital 2 sebagai pin input
// Output dari sensor PIR terhubung ke pin digital 2 Arduino
int pirState = LOW; // Kita memulai dengan mengasusmsikan bahwa tidak ada gerakan
terdeteksi
int val = 0; // variabel untuk membaca status dari pin 2

void setup() {
pinMode(ledPin, OUTPUT); // Mendeklarasikan LED sebagai output
pinMode(inputPin, INPUT); // Mendeklarasikan sensor sebagai input

Serial.begin(9600); // Memulai komunikasi serial


}

void loop(){
val = digitalRead(inputPin); // membaca nilai input

/*
Jika terjadi gerakan (nilai input = HIGH) dan sensor dalam keadaan LOW sebelumnya,
maka lampu LED akan hidup

32
Kemudian di serial monitor akan muncul tulisan Motion detected!
*/
if (val == HIGH) {
digitalWrite(ledPin, HIGH);

if (pirState == LOW) {
Serial.println("Motion detected!");
pirState = HIGH;
}
}
/*
Jika tidak ada gerakan ( nilai input = LOW) dan sensor dalam keadaan HIGH sebelumnya,
maka lampu LED akan mati
kemudian di serial monitor akan muncul tulisan Motion ended!
*/
else {
digitalWrite(ledPin, LOW);

if (pirState == HIGH){
Serial.println("Motion ended!");
}
}
}

33

Anda mungkin juga menyukai