Modul Pembelajaran Arduino
Modul Pembelajaran 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:
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).
2KB RAM pada memory kerja bersifat volatile (hilang saat daya dimatikan),
digunakan oleh variable-variabel di dalam program.
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.
Port input/output, pin-pin untuk menerima data (input) digital atau analog, dan
mengeluarkan data (output) digital atau analog.
3
4
1.2 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.
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.
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.
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.
6
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
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
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.
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 (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.
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:
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)
digitalWrite()
Digunakan untuk menuliskan nilai HIGH atau LOW untuk sebuah pin digital.
Format penulisannya adalah sebagai berikut :
digitalWrite(pin, value)
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.
12
Rangkaian
Komponen yang diperlukan:
1 buah LED
1 buah resistor 330 ohm
Kabel jumper
Skema rangkaian dapat dilihat pada gambar berikut:
Berikut ini adalah gambar simulasi penempatan komponen pada breadboard dan board
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.
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);
}
Rangkaian
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.
16
Kode Pemrograman :
/*
Button
Menghidupkan dan mematikan LED pada pin 9 dengan menggunakan tombol yang terhubung ke
pin 2.
*/
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:
Berikut ini merupakan gambar simulasi penempatan komponen pada breadboard dan board
Arduino untuk potentiometer.
18
Kode Pemrograman
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 :
Durasi harus dispesifikasikan, jika tidak maka pulsa akan terus berlanjut hingga fungsi
noTone() di panggil.
19
Rangkaian
Berikut ini merupakan gambar simulasi penempatan komponen pada breadboard dan board
Arduino untuk buzzer.
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);
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
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>
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.
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.
Rangkaian
Komponen yang diperlukan :
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
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
*/
degreesC = (voltage - 0.5) * 100.0; // Mengkonversikan nilai tegangan menjadi derajat Celcius
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.
Photo resistor:
LED:
27
Kode Pemograman
void setup()
{
// Mengatur pin 9 sebagai pin output
pinMode(ledPin, OUTPUT);
}
void loop()
{
/*
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
*/
analogWrite(ledPin, lightLevel);
}
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.
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.
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
Kode Pemograman
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
cm = (duration/2) / 29.1;
inches = (duration/2) / 74;
delay(250);
}
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
*/
void setup() {
pinMode(ledPin, OUTPUT); // Mendeklarasikan LED sebagai output
pinMode(inputPin, INPUT); // Mendeklarasikan sensor sebagai input
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