100% menganggap dokumen ini bermanfaat (1 suara)
567 tayangan72 halaman

Modul Pelatihan Dasar Arduino

Pelatihan ini membahas tentang pin GPIO pada Arduino. Terdapat 14 pin digital I/O pada Arduino yang dapat berfungsi sebagai input maupun output, serta 6 pin analog input. Program Arduino terdiri atas bagian inisialisasi dan program utama yang masing-masing berada pada fungsi setup() dan loop().

Diunggah oleh

Sutono Dapur Ngulik
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
100% menganggap dokumen ini bermanfaat (1 suara)
567 tayangan72 halaman

Modul Pelatihan Dasar Arduino

Pelatihan ini membahas tentang pin GPIO pada Arduino. Terdapat 14 pin digital I/O pada Arduino yang dapat berfungsi sebagai input maupun output, serta 6 pin analog input. Program Arduino terdiri atas bagian inisialisasi dan program utama yang masing-masing berada pada fungsi setup() dan loop().

Diunggah oleh

Sutono Dapur Ngulik
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

Pelatihan Arduino 2017

1.1. TUJUAN
Peserta Pelatihan dapat memahami, membedakan dan menjelaskan pin GPIO (General
Purpose Input Output Pins) Arduino.
1.2. TEORI DASAR
Dalam diskusi sehari-hari dan di forum internet, mikrokontroler sering dikenal dengan
sebutan µC, uC atau MCU. Terjemahan bebas dari pengertian tersebut, bisa dikatakan bahwa
mikrokontroler adalah komputer yang berukuran mikro dalam satu chip IC (Integrated Circuit)
yang terdiri dari prosesor, memori dan antarmuka yang bisa di program. Jadi disebut komputer
mikro karena IC atau chip mikrokontroler terdiri dari CPU, memori dan I/O yang bisa kita
kontrol dengan memprogramnya. I/O juga sering disebut dengan GPIO (General Purpose Input
Output Pins) yang berarti pin yang bisa kita program sebagai input atau sebagai outpuit sesuai
dengan kebutuhan.

Gambar 1.1. Arduino UNO


Spesifikasi Arduino UNO :
 Mikrokontroler : Atmega328
 Tegangan operasi : +5V
 Tegangan input : +7V s/d +12V
 Digital I/O : 14 pin
 PWM : 6 channel (pin ~3,~5,~6,~9,~10 dan ~11)
 Analog input : 6 channel (A0 s/d A5)
 Memori : 32KB FLASH PEROM (0.5KB digunakan oleh bootloader, 2KB SRAM dan
1kB EEPROM)
 Frekuensi clock : 16MHz
1.3. POWER SUPPLY
Banyak pilihan sumber tegangan yang dapat dipakai, dari port USB maupun dari power
supply eksternal dan lebih mudanya adalah dengan sumber tegangan tersebut dapat dipilih
Sutono, M.Kom Page 1
Pelatihan Arduino 2017

secara otomatis. Cukup dengan menghubungkan Arduino dengan port USB di komputer/laptop
maka secara otomatis power supply bersumber dari port USB komputer/laptop. Untuk sumber
tegangan eksternal kita cukup dengan menghubungkan dengan jack DC. Tegangan yang
direkomendasikan adalah +7V s/d +12V.

Gambar 1.2. Power Supplay


1.4. PORT I/O
Port Arduino berbeda dengan minimum system atau development system
microcontroler. Sebagai contoh pada minimum system Atmega8535 penamaan port adalah
PORTA, PORTB, PORTC dan PORTD, untuk akses per-bit maka PORTA.0 s/d PORTA.7,
PORTB.0 s/d PORTB.7, PORTC.0 s/d PORTC.7 dan PORTD.0 s/d PORTD.7. sistem
penamaan port pada Arduino merupakan urutan port, mulai dari pin digital D 0 s/d D13 (0 s/d
13) dan pin analog A0 s/d A5.
Pada Arduino terdapat 14 pin digital I/O. Secara umum berfungsi sebagai port input
atau output biasa, namun ada beberapa pin digital yang memiliki fungsi alternatif, diantaranya:

Sutono, M.Kom Page 2


Pelatihan Arduino 2017

Tabel 1.1. Pin Digital


No Pin Arduino Fungsi Utama Fungsi Alternatif
0 Digital I/O RX (Serial – Receiver)
1 Digital I/O TX (Serial – Transmiter)
2 Digital I/O Interupsi Eksternal
3 Digital I/O Interupsi eksternal dan PWM PWM (0 – 254)
4 Digital I/O 0 (LOW) / 1 (HIGH)
5 Digital I/O PWM (0 – 254)
6 Digital I/O PWM (0 – 254)
7 Digital I/O 0 (LOW) / 1 (HIGH)
8 Digital I/O 0 (LOW) / 1 (HIGH)
9 Digital I/O PWM (0 – 254)
10 Digital I/O SPI – SS dan PWM PWM (0 – 254)
11 Digital I/O SPI – MOSI dan PWM PWM (0 – 254)
12 Digital I/O SPI – MISO
13 Digital I/O SPI – SCK dan LED
Pada pin analog input, berfungsi membaca sinyal masukan analog seperti sensor
analog.
Tabel 1.2. Pin Analog
No Pin Fungsi Utama Fungsi Alternatif
A0 Analog input 0 (LOW) – 1023 (HIGH)
A1 Analog input 0 (LOW) – 1023 (HIGH)
A2 Analog input 0 (LOW) – 1023 (HIGH)
A3 Analog input 0 (LOW) – 1023 (HIGH)
A4 Analog input TWI – SDA
A5 Analog input TWI – SCL
Meskipun demikian pin analog input dapat pula kita gunakan untuk keperluan digital
I/O.
1. Inisialisasi Fungsi Pin I/O
Sebuah pin pada saat yang sama hanya mempunyai suatu fungsi, yaitu sebagai input saja
atau output saja, untuk itu harus ditentukan dulu fungsinya, yaitu ketika inisialisasi (setup),
dengan perintah pinMode.
pinMode(2, INPUT);
pinMode(3, OUTPUT);

Sutono, M.Kom Page 3


Pelatihan Arduino 2017

2. Menulis Data Digital ke Pin Output


Untuk menulis atau mengirimkan data ke pin tersebut digunakan perintah digitalWrite.
digitalWrite(3, HIGH);
atau
digitalWrite(3, LOW);
HIGH = +5V (VCC)
LOW = GND (ground)

3. Membaca Data Digital di Pin Input


Jika sebuah pin difungsikan sebagai pin INPUT, maka kita harus menentukan tipe
inputnya: floating atau pullup. Jika kita pilih pullup maka resistor pullup internal (pada
setiap pin) akan aktif.
Caranya:
pinMode(2, INPUT);
digitalWrite(2, HIGH);
setelah diset sebagai pin INPUT, fungsi pembacaan data digitalnya adalah sebagai
berikut:
int baca=digitalRead(2);
if(baca==LOW)
{
digitalWrite(3, HIGH);
}
else
{
digitalWrite(3, LOW);
}
1.5. STRUKTUR PEMROGRAMAN ARDUINO
Arduino tidak serumit bahasa pemrograman C untuk Atmega seperti Codevision-AVR
(walaupun Codevision-AVR juga lebih mudah dibandingkan bahasa assembly), pemrograman
Arduino menjadi lebih mudah. Struktur pemrogramannya memang menggunakan bahasa C,
bagi Anda yang sudah menguasai bahasa C/C++ maka akan lebih mudah memprogram
Arduino. Bagi yang belum pernah apalagi menguasainya jangan khawatir, karena Arduino
sangat mudah untuk dipelajari, terutama bagi yang masih awam dengan Arduino.

Sutono, M.Kom Page 4


Pelatihan Arduino 2017

Mekanisme pemrogramannya sama dengan memprogram mikrokontroler, mulai dari


menulis program, mengeksekusi (compile) dan meng-upload yaitu mengisikan program yang
telah kita buat kedalam memori program Arduino.
1. Struktur Dasar
Sebuah program Arduino minimal terdiri dari 2 bagian, yaitu:
 Inisialisasi
Inisialisasi merupakan proses untuk mengatur hardware seperti port I/O, PWM, serial
dan peripheral lain. Struktur ini ditulis diawal program. Sebagai contoh port I/O
mempunyai beberapa fungsi : digital input, digital output, komunikasi serial dan
PWM. Sebuah port hanya dapat berfungsi untuk satu tujuan, jadi jika kita hendak
menggunakan port tersebut sebagai digital output maka harus diinisialisasi terlebih
dahulu sebagai port output. Inisialisasi menggunakan struktur setup(). Sebagai
berikut:
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
 Program Utama
Setelah melakukan inisialisasi selanjutnya program yang dikerjakan adalah program
utama, tergantung dari aplikasi yang dibuat, isi dari program utama berbeda antara
satu program dengan program yang lain. Struktur yang digunakan adalah loop().
void loo()
{
// instruksi;
digitalRead(buttonPin);
}
Harap diperhatikan bahwa bahasa pemrograman Arduino (sebagaimana bahasa C)
termasuk case sensitive, artinya “huruf besar dan huruf kecil akan dianggap
berbeda”.
 Komentar
Komentar digunakan untuk memberi keterangan pada program yang dibuat, sifatnya
tidak wajib dan tidak akan berpengaruh pada jalannya program karena tidak ikut
dieksekusi. Komentar dapat dibuat untuk satu baris maupun beberapa baris komentar.
komentar untuk satu baris, diawali dengan tanda “//”, sedangkan untuk komentar
beberapa baris diawali dengan “/*” dan diakhiri dengan tanda “*/”.

Sutono, M.Kom Page 5


Pelatihan Arduino 2017

2. Ekspresi Program
Dalam pemrograman Arduino, bilangan dapat diekspresikan dalam beberapa format:
Desimal : Ditulis biasa tanpa tambahan apapun.
Contoh: 234
Oktal : Ditulis dengan awalan angka “0” (nol) didepan angka tersebut.
Contoh: 0631
Biner : Penulisan diawali dengan huruf “B”. Contoh: B11100011
Heksadesimal : Diawali dengan “0x”. Contoh: 0x8C

3. Kontrol Program
Sebuah program yang kita buat membutuhkan suatu kontrol, misalnya pengujian kontrol,
melompat pada suatu perintah yang lain dan sebagainya.
if : Digunakan untuk menguji kondisi, jika kondisi tersebut benar, maka perintah
didalam if tersebut akan dieksekusi.
if(kondisi)
{
//pernyataan/perintah;
}
If – else : Hampir sama dengan if, hanya saja ada 2 pilihan pernyataan/perintah. Jika
kondisi benar maka perintah yang ada didalam blok if yang akan dieksekusi,
tetapi jika kondisi salah maka pernyataan didalam else yang akan dieksekusi.
if(kondisi)
{
//pernyataan/perintah 1;
}
else
{
//pernyataan/perintah 2;
}
Switch – : Seperti pernyataan if, digunakan untuk memilih kondisi yang sesuai untuk
case kemudian mengerjakan perintahnya. Bedanya adalah kondisi yang diuji
berupa nilai sebuah variabel.
switch(variabel)
{
case 1: //pernyataan/perintah 1;
break;
case 2: //pernyataan/perintah 2;
break;
case 3: //pernyataan/perintah 31;
break;
case n: //pernyataan/perintah n;
break;

Sutono, M.Kom Page 6


Pelatihan Arduino 2017

default: //pernyataan/perintah
}
Jika variabel bernilai “1” maka pernyataan 1 yang akan dieksekusi. Perintah break
berfungsi untuk mengakhiri pernyataan/perintah pada setiap case. Default berfungsi jika
semua nilai didalam case tidak ada yang sama dengan nilai variabel tersebut.
4. Perulangan
while : Untuk membuat perulangan yang tidak terbatas selam kondisi di dalam while
bernilai benar.
while(kondisi)
{
//pernyataan/perintah;
}
for : Digunakan untuk perulangan yang terbatas, misalnya mengulang suatu
perintah sebanyak 10 kali perulangan.
for(inisialisasi; kondisi; step)
{
//pernyataan/perintah;
}
Catatan:
 Inisialisasi: nilai awal dari variabel untuk proses perulangan.
 Kondisi: kondisi yang menentukan proses perulangan, jika benar
perulangan dikerjakan.
 Step: tahap perulangan, biasanya dalam bentuk penambahan atau
pengurangan.
Goto : Untuk melompat/menuju perintah yang telah diberi label.
while(1)
{
digitalWrite(ledPin1, HIGH);
delay(1000);
digitalWrite(ledPin1, LOW);
delay(1000);
if(digitalRead(inPin)==LOW)
{
goto keluar;
}
}
keluar:
return : Digunakan untuk memberikan nilai balik dari suatu fungsi.
int checkSensor()
{
if(analogRead(A0)>400)
{
return 1;
}

Sutono, M.Kom Page 7


Pelatihan Arduino 2017

else
{
return 0;
}
}
continue : Untuk melewatkan perulangan yang tersisa dari struktur looping (while atau
for).
for(int i=0; i<255; i++)
{
int x;
if(x>40 && x<120)
{
continue;
digitalWrite(13, HIGH);
}
digitalWrite(13, LOW);
delay(1000);
}
break : Perintah keluat dari pernyataan perulangan while atau for. Juga digunakan
untuk mengakhiri pernyataan dalam switch – case.
5. Operator
Tabel 1.3. Operator Aritmatika
Operator Aritmatika Keterangan
= Pemberian nilai
+ Operasi penjumlahan
- Operasi pengurangan
* Operasi perkalian
/ Operasi pembagian
% Operasi sisa pembagian
Tabel 1.4. Operator Perbandingan
Operator
Keterangan
Perbandingan
== Operator persamaan, jika kedua nilai yang dibandingkan bernilai
sama, maka hasilnya “TRUE”.
!= Operator pertidaksamaan, jika kedua nilai yang dibandingkan tidak
sama nilainya, maka hasilnya “TRUE”.
> Operator lebih besar dari nilai 1 lebih besar dari nilai 2, maka
hasilnya “TRUE”.
< Operator lebih kecil, jika nilai 1 lebih kecil dari nilai 2, maka hasilnya
“TRUE”.
>= Operator lebih besar atau sama dengan, jika nilai 1 lebih besar atau
sama dengan nilai 2, maka hasilnya “TRUE”.
<= Operator lebih kecil atau sama dengan, jika nilai 1 lebih kecil atau
sama dengan nilai 2, maka hasilnya “TRUE”.

Sutono, M.Kom Page 8


Pelatihan Arduino 2017

Tabel 1.5. Operator Boolean


Operator Boolean Keterangan
&& AND
|| OR
! NOT
Tabel 1.6. Operator Bitwise
Operator Bitwise Keterangan
<< Geser kiri
>> Geser kanan
& AND
| OR
^ XOR
~ NOT
Tabel 1.7. Operator Increment/Decrement
Operator Increment/Decrement Keterangan
++ Increment
-- Decrement
6. Variabel
Dalam pembuatan program aplikasi Arduino, sering kita memerlukan tempat atau wadah
untuk menampung atau menyimpan suatu data, tempat atau wadah tersebut disebut dengan
variabel.
Nama variabel sebenarnya bebas, boleh 1 huruf abjad seperti “i” (tanpa tanda petik), atau
dapat juga sebuah kata misalnya “hasil” (tanpa tanda petik). Yang jelas tidak boleh
mengandung spasi (“ “), maksimal 32 karakter dan tidak boleh menggunakan istilah baku
yang sudah ada dan ditentukan dalam bahasa C.
Sebelum digunakan, variabel terlebih dahulu harus dideklarasikan dengan cara:
int bilangan_1;
int bilangan_2=123;
int bilangan_3[5]={123, 456, 789, 101, 102};
7. Tipe Data
Setiap variabel yang dibuat harus mempunyai tipe data yang menunjukan kemampuan
variabe; tersebut untuk menampung data.
Tabel 1.8. Tipe Data
Tipe Data Lebar Data Jangkauan
Char 1 byte -128 s/d 127
Unsigned char 1 byte 0 s/d 255
Byte 1 byte 0 s/d 255
Word 2 byte 0 s/d 65535

Sutono, M.Kom Page 9


Pelatihan Arduino 2017

Int 2 byte -32768 s/d 32767


Unsigned int 2 byte 0 s/d 65535
Long 4 byte -2147428648 s/d 2147438647
Unsigned long 4 byte 0 s/d 4294967295
Float 4 byte -3.4028235E+38 s/d 3.4028235E+38

D1
LCD1
LM016L

D2

D3

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
D4

VCC

1
2
3

4
5
6

7
8
9
10
11
12
13
14
D5

GND
VCC

GND
VEE
RV1
D6

VCC

52%
VEE

D7
10k
U1

VCC
1
D8

GND
27.0

VCC
VOUT
2 RL1
5V
RV2
3 LM35

29%
DUINO1
Q1
50k
GND

2N2222
VCC
VCC
microcontrolandos.blogspot.com

GND

AREF AREF
13
PB5/SCK 13
12

GND
PB4/MISO 12
RESET 11
RESET ~PB3/MOSI/OC2A 11 U2
10
~ PB2/SS/OC1B 10
9 6 1
~ PB1/OC1A 9 SCL X1 LS1
8 5
PB0/ICP1/CLKO 8 SDA
ATMEGA328P-PU
1121

DIGITAL (~PWM)

7
ANALOG IN

PD7/AIN1 7
6 7
A0 ~ PD6/AIN0 6 SOUT
PC0/ADC0 5
A0 A1 ~ PD5/T1 5
PC1/ADC1 4 3 2 SPEAKER
A1 A2 PD4/T0/XCK 4 VBAT X2
PC2/ADC2 3
A2 A3 ~ PD3/INT1 3
PC3/ADC3 2 DS1307

GND
A3 A4 PD2/INT0 2 RXD
PC4/ADC4/SDA 1
A4 A5 TX PD1/TXD 1
PC5/ADC5/SCL 0
A5 RX PD0/RXD 0 TXD

RTS
ARDUINO UNO R3
GND

CTS

Gambar 1.3. Modul Simulasi Arduino

Sutono, M.Kom Page 10


Pelatihan Arduino 2017

2.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar LED.
 Peserta Pelatihan dapat membuat dan meodifikasi sketch Arduino untuk aplikasi
yang berhubungan dengan LED.
2.2. TEORI DASAR
LED merupakan kependekan dari Light Emitting Diode, yaitu dioda yang mampu
mengubah listrik menjadi cahaya. Sebagaimana sifat dioda, lampu LED memiliki kaki positif
dan negatif. Sehingga pemasangannya tidak boleh terbalik, jika dipasang terbalik maka akan
ada arus yang mengalir melalui LED dan LED pun tidak akan menyala.
Arduino bekerja pada tegangan 5V – 12V dengan arus yang relatif besar yang sanggup
memutuskan LED. Sehingga jika kita ingin menyambungkan LED, maka kita butuh tahanan
(resistor) untuk membatasi arus yang masuk ke LED. LED memiliki tegangan kerja yang
disebut dengan forward voltage (VF) yang mana tegangan ini adalah tegangan yang dibutuhkan
LED untuk bisa menyala dengan baik.
Ukuran resistor yang bisa dipakai adalah 100Ω - 1kΩ (dibaca ohm, satuan dari
resistansi/hambatan), makin besar nilai resistor maka nyala LED akan semakin redup. Pada
Arduino, tegangan yang keluar dari pin-pinnya adalah 0V – 5V. Sementara catu daya untuk
Arduino antara 5V – 12V. Oleh sebab itu, pemilihan resistor tergantung tegangan yang akan
kita gunakan.

Sutono, M.Kom Page 11


Pelatihan Arduino 2017

Gambar 2.1. Light Emitting Diode


1. Rangkaian Dasar LED
D1
8 X 330

D2

D3
CN6
D4
1
2
D5 3
4
5
D6 6
7
8
D7

D8

Gambar 2.2. Rangkaian dasar LED

Sutono, M.Kom Page 12


Pelatihan Arduino 2017

 Hubungkan seluruh kaki negatif LED ke ground.


 Hubungkan kaki positif LED dengan kaki resistor yang pertama, kemudian kaki
resistor yang kedua ke masing-masing pin Arduino.
2. Aplikasi LED, misalnya sketch Arduino untuk menyalakan LED.
/*
Judul Program : Running LED
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
int LED[8]={2,3,4,5,6,7,8,9};
void setup()
{
for(int i=0; i<8; i++)
{
pinMode(LED[i], OUTPUT);
}
for(int i=0; i<8; i++)
{
digitalWrite(LED[i], LOW);
}
delay(1000);
}
void loop()
{
for(int i=0; i<8; i++)
{
digitalWrite(LED[i], HIGH);
delay(1000);
digitalWrite(LED[i], LOW);
}
for(int i=6; i>=1; i--)
{
digitalWrite(LED[i], HIGH);
delay(1000);
digitalWrite(LED[i], LOW);
}
}
Keterangan sketch running LED:
 Variabel LED, merupakan variabel array dengan tipe data integer, yang merupakan
suatu variabel yang menggantikan fungsi pin 2 Arduino hingga pin 9 Arduino,
variabel tersebut dapat diakses melalui fungsi setup dan fungsi loop, karena variabel
tersebut bersifat global (dapat diakses diseluruh fungsi yang ada dalam sketch
tersebut). LED[0] menggantikan fungsi pin 2 Arduino, LED[1] menggantikan fungsi
pin 3 Arduino dan seterusnya hingga LED[8] menggantikan fungsi pin 9 Arduino.

Sutono, M.Kom Page 13


Pelatihan Arduino 2017

 Fungsi pinMode, untuk menentukan apakah suatu pin dalam suatu Arduino
difungsikan sebagai port/terminal INPUT atau terminal OUTPUT.
 Fungsi digitalWrite, untuk mengirimkan suatu data (tegangan 0V atau +5V)
kepada terminal/port atau pin2 - pin 9 Arduino, digitalWrite(LED[i], LOW) berarti
data yang dikirimkan melalui pin Arduino tersebut adalah tegangan 0V sedangkan
bila digitalWrite(LED[i], HIGH) maka data yang dikirimkan berupa tegangan
+5V. Hal ini dapat digambarkan dari mati/menyalanya lampu LED. HIGH (lampu
LED menyala) dan LOW (lampu LED mati).
 Fungsi for, untuk melakukan suatu perulangan sesuai dengan nilai yang ditentukan
dalam suatu variabel yang disertakan dalam fungsi tersebut (misalnya variabel i,
contohnya for(int i=0; i<10; i++) ini artinya akan melakukan suatu perulangan
sebanyak 10 kali dengan nilai i dari 0 hingga 9 (atau i<10) dan setiap kali perulangan
nilai i akan bertambah 1 (i++ sama artinya dengan pernyataan i=i+1).
 Fungsi delay, digunakan untuk menunda suatu eksekusi sebelum melanjutkan
eksekusi selanjutnya.
3. Latihan Soal:
 Buatlah bentuk lain dari running LED dengan tidak merubah susunan LED tersebut!
 Buatlah tampilan kombinasi LED berbentuk lingkaran, segitiga, persegi atau
berbentuk hati !
 Dari soal nomor b, buatlah program Arduino untuk tampilan animasi dari kombinasi
LED tersebut!

Sutono, M.Kom Page 14


Pelatihan Arduino 2017

3.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar pushbuton.
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan dengan pushbutton.
3.2. TEORI DASAR
Tombol pushbutton atau tombol push on. Ketika tombol ini ditekan, maka jalur akan
tertutup (ON), ketika dilepas jalur akan kembali terbuka (OFF). Tombol pushbutton banyak
digunakan untuk peralatan seperti remote, keypad, keyboard, atau tombol untuk pengaturan
TV dan sejenisnya.

Gambar 3.1. Rangkaian dasar Pushbutton


Gambar 3.1 merupakan bentuk fisik pushbutton dan salah satu simbol pushbutton jenis
NO (Normally Open) dalam rangkaian elektronik. Berdasarkan simbol tersebut, Normally
Open berarti kondisi normal (sebelum ditekan), maka terminal kondisi tidak
tersambung/terbuka (open). Tetapi ketika ditekan, maka masing-masing terminal akan
tersambung.
Selain jenis NO, ada juga pusbutton jenis NC (Normally Close), artinya kondisi normal
(sebelum ditekan), kaki terminal dalam keadaan tertutup/tersambung (close), tetapi ketika
ditekan, kaki terminalnya terbuka (tidak tersambung).

Sutono, M.Kom Page 15


Pelatihan Arduino 2017

1. Skema Rangkaian Dasar Pushbutton

Gambar 3.2. Rangkaian dasar Pushbutton


 Hubungkan salah satu dari seluruh kaki pushbutton ke ground.
 Hubungkan kaki yang berikutnya dari masing-masing pushbutton ke terminal/pin
Arduino (misalkan pin 2 Arduino hingga pin 9 Arduino).
2. Aplikasi Pushbutton, misalnya sketch Arduino untuk memfungsikan pushbutton dalam
kasus pemilihan jenis running LED.
/*
Judul Program : Push Button
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
int const pinButton1=10;
int const pinButton2=11;
int const pinButton3=12;
int const pinButton4=13;
int LED[8]={2,3,4,5,6,7,8,9};
int pilih=0;
int temp=0;
int temp1=HIGH;
int temp2=HIGH;
int temp3=HIGH;
int temp4=HIGH;
void pilih_0()
{
for(temp=0; temp<8; temp++)
{
digitalWrite(LED[temp], LOW);
}
};
void pilih_1()
Sutono, M.Kom Page 16
Pelatihan Arduino 2017

{
for(temp=0; temp<8; temp++)
{
digitalWrite(LED[temp], LOW);
}

for(temp=0; temp<8; temp++)


{
digitalWrite(LED[temp], HIGH);
delay(500);
digitalWrite(LED[temp], LOW);
}

for(temp=6; temp>=0; temp--)


{
digitalWrite(LED[temp], HIGH);
delay(500);
digitalWrite(LED[temp], LOW);
}
pilih=0;
};
void pilih_2()
{
for(temp=0; temp<8; temp++)
{
digitalWrite(LED[temp], HIGH);
}

for(temp=0; temp<8; temp++)


{
digitalWrite(LED[temp], LOW);
delay(500);
digitalWrite(LED[temp], HIGH);
}

for(temp=6; temp>=0; temp--)


{
digitalWrite(LED[temp], LOW);
delay(500);
digitalWrite(LED[temp], HIGH);
}
pilih=0;
};
void pilih_3()
{
for(temp=0; temp<4; temp++)
{
digitalWrite(LED[3-temp], HIGH);
digitalWrite(LED[3+temp+1], HIGH);
Sutono, M.Kom Page 17
Pelatihan Arduino 2017

delay(500);
digitalWrite(LED[3-temp], LOW);
digitalWrite(LED[3+temp+1], LOW);
}

for(temp=0; temp<3; temp++)


{
digitalWrite(LED[1+temp], HIGH);
digitalWrite(LED[1-temp+5], HIGH);
delay(500);
digitalWrite(LED[1+temp], LOW);
digitalWrite(LED[1-temp+5], LOW);
}
pilih=0;
};
void pilih_4()
{
for(temp=0; temp<8; temp++)
{
digitalWrite(LED[temp], HIGH);
}

for(temp=0; temp<4; temp++)


{
digitalWrite(LED[3-temp], LOW);
digitalWrite(LED[3+temp+1], LOW);
delay(500);
digitalWrite(LED[3-temp], HIGH);
digitalWrite(LED[3+temp+1], HIGH);
}

for(temp=0; temp<3; temp++)


{
digitalWrite(LED[1+temp], LOW);
digitalWrite(LED[1-temp+5], LOW);
delay(500);
digitalWrite(LED[1+temp], HIGH);
digitalWrite(LED[1-temp+5], HIGH);
}
pilih=0;
};
void setup()
{
pinMode(pinButton1, INPUT);
pinMode(pinButton2, INPUT);
pinMode(pinButton3, INPUT);
pinMode(pinButton4, INPUT);

digitalWrite(pinButton1, HIGH);
Sutono, M.Kom Page 18
Pelatihan Arduino 2017

digitalWrite(pinButton2, HIGH);
digitalWrite(pinButton3, HIGH);
digitalWrite(pinButton4, HIGH);

for(temp=0; temp<8; temp++)


{
pinMode(LED[temp], OUTPUT);
digitalWrite(LED[temp], LOW);
}
}
void loop()
{
temp1=digitalRead(pinButton1);
delay(120);
if(temp1==LOW)
{
pilih=1;
}

temp2=digitalRead(pinButton2);
delay(120);
if(temp2==LOW)
{
pilih=2;
}

temp3=digitalRead(pinButton3);
delay(120);
if(temp3==LOW)
{
pilih=3;
}

temp4=digitalRead(pinButton4);
delay(120);
if(temp4==LOW)
{
pilih=4;
}

switch(pilih)
{
case 1: pilih_1();
break;
case 2: pilih_2();
break;
case 3: pilih_3();
break;
case 4: pilih_4();
Sutono, M.Kom Page 19
Pelatihan Arduino 2017

break;
default: pilih_0();
break;
}
}
Keterangan sketch Pushbutton:
 Fungsi int const dalam suatu variabel merupakan suatu nilai yang tetap (konstan),
karena dalam hal ini variabel tersebut digunakan untuk menggantikan fungsi dari pin
Arduino, dimana pin Arduino merupakan suatu pin yang nilai tetap (sudah ditentukan,
pin digital 0 – 13 dan pin analog A0 – A5). Misalnya int const pinPushbutton=2, ini
artinya bahwa variabel atau tombol pinPushbutton menggantikan fungsi dari pin 2
Arduino, hal ini untuk memudahkan mengingat fungsi dari suatu tombol atau variabel,
terutama bila variabel yang digunakan lebih dari satu.
 Variabel LED, merupakan variabel array dengan tipe data integer, yang merupakan
suatu variabel yang menggantikan fungsi pin 2 Arduino hingga pin 9 Arduino, variabel
tersebut dapat diakses melalui fungsi setup dan fungsi loop, karena variabel tersebut
bersifat global (dapat diakses diseluruh fungsi yang ada dalam sketch tersebut). LED[0]
menggantikan fungsi pin 2 Arduino, LED[1] menggantikan fungsi pin 3 Arduino dan
seterusnya hingga LED[8] menggantikan fungsi pin 9 Arduino.
 Fungsi pinMode, untuk menentukan apakah suatu pin dalam suatu Arduino
difungsikan sebagai port/terminal INPUT atau terminal OUTPUT. Khusus untuk
pushbutton karena dalam hal ini langsung dihubungkan dengan terminal ground dan pin
Arduino, maka harus ada dua perintah yang digunakan: (1) pinMode untuk
menentukan bahwa pin tersebut digunakan sebagai pin INPUT dan yang ke (2)
digitalWrite dengan nilai HIGH untuk menentukan bahwa pin tersebut berfungsi
sebagai tombol pushbutton dengan nilai awal HIGH (tombol dalam kondisi terbuka)
dan nilai LOW (tombol dalam kondisi tertutup). Kedua fungsi tersebut harus dimasukan
kedalam fungsi setup.
 Fungsi digitalRead, untuk membaca tombol pushbutton apakah tombol tersebut dalam
kondisi terbuka (tombol tidak ditekan) atau tertutup (tombol ditekan). Untuk
mengetahui hal tersebut digunakan fungsi if, contohnya
if(digitalRea(pinPushbutton)==LOW), bila dari kondisi tersebut bernilai TRUE maka
artinya bahwa tombol pushbutton dalam kondisi tertutup (tombol pushbutton ditekan)
dan sebaliknya bila kondisi tersebut bernilai FALSE artinya bahwa kondisi tombol
tersebut terbuka (tombol pushbutton tidak ditekan).
 Fungsi digitalWrite, untuk mengirimkan suatu data (tegangan 0V atau +5V) kepada
terminal/port atau pin 2 Arduino hingga pin 9 Arduino, digitalWrite(LED[i], LOW)
berarti data yang dikirimkan melalui pin Arduino tersebut adalah tegangan 0V
sedangkan bila digitalWrite(LED[i], HIGH) maka data yang dikirimkan berupa
tegangan +5V. Hal ini dapat digambarkan dari mati/menyalanya lampu LED. HIGH
(lampu LED menyala) dan LOW (lampu LED mati).
 Fungsi for, untuk melakukan suatu perulangan sesuai dengan nilai yang ditentukan
dalam suatu variabel yang disertakan dalam fungsi tersebut (misalnya variabel i,
contohnya for(int i=0; i<10; i++) ini artinya akan melakukan suatu perulangan sebanyak

Sutono, M.Kom Page 20


Pelatihan Arduino 2017

10 kali dengan nilai i dari 0 hingga 9 (atau i<10) dan setiap kali perulangan nilai i akan
bertambah 1 (i++ sama artinya dengan pernyataan i=i+1).
 Fungsi switch, case, default dan break, digunakan untuk mengetahui nilai dari suatu
tombol pertama atau tombol kedua dan seterusnya. Untuk membedakan tombol pertama
dengan yang lainnya digunakan suatu variabel (misalnya variabel pilih). Bila pilih
bernilai 1, maka artinya tombol pertama yang ditekan, bila variabel pilih bernilai 2
artinya tombol kedua yang ditekan dan seterusnya. Untuk mengeksekusi suatu tombol
yang ditekan maka digunakan fungsi case, bila tombol 1 yang ditekan maka seluruh
instruksi/perintah yang ada dalam pilihan case 1 yang akan dieksekusi kemudian harus
diakhiri dengan fungsi break yang berfungsi untuk keluar dari fungsi switch agar hanya
pilihan case 1 saja yang dieksekusi. Begitu juga dengan tombol yang kedua atau tombol
yang lainnya, maka hanya case 2 atau case yang berikutnya yang hanya dieksekusi
seluruh instruksi/perintahnya bila tombol tersebut ditekan. Fungsi default bersifat
optional artinya bila fungsi ini disertakan dalam fungsi switch dan ternyata tidak ada
pilihan yang sesuai dengan fungsi case, maka seluruh instruksi yang didalam fungsi
default-lah yang akan dieksekusi.
 Fungsi delay, digunakan untuk menunda suatu eksekusi sebelum melanjutkan eksekusi
selanjutnyanya.
3. Soal latihan:
 Buatlah program untuk pemilihan LED (berbentuk lingkaran, segitiga, persegi dan hati)
dengan menggunakan 1 atau 2 buah pushbutton!
 Tandailah setiap pushbutton dengan gambar (lihat gambar 3.3), misalnya pushbutton
lingkaran untuk menyalakan LED berbentuk lingkaran, pushbutton segitiga untuk
menyalakan LED berbentuk segitiga, pushbutton persegi untuk menyalakan LED
berbentuk persegi dan pushbutton hati untuk menyalakan LED berbentuk hati!

Gambar 3.3. Contoh Pushbutton

Sutono, M.Kom Page 21


Pelatihan Arduino 2017

4.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar 7 segmen.
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan dengan 7 segmen.
4.2. TEORI DASAR
7 segment dalam bahasa Indonesia disebut dengan layar 7 segmen adalah komponen
elektronika yang dapat menampilkan angka desimal melalui kombinasi-kombinasi segmennya.
7 segment display pada umumnya dipakai pada jam digital, kalkulator, penghitung atau counter
digital, multimeter digital dan juga panel display digital seperti pada microwave oven ataupun
pengatur suhu digital. 7 segment display pertama kali diperkenalkan dan dipatenkan pada tahun
1908 oleh Frank. W. Wood dan mulai dikenal luas pada tahun 1970-an setelah aplikasinya pada
LED (Light Emitting Diode).

Gambar 4.1. 7 Segmen


7 segment display memiliki 7 segment dimana setiap segment dikendalikan secara ON
dan OFF untuk menampilkan angka yang diinginkan. Angka-angka dari 0 (nol) sampai 9
(sembilan) dapat ditampilkan dengan menggunakan beberapa kombinasi segment. Selain
angka 0 – 9, 7 segment display juga dapat menampilkan huruf Hexadecimal dari A sampai
dengan F. Segment atau elemen-elemen pada 7 segment display diatur menjadi bentuk angka
“8” yang agak miring ke kanan dengan tujuan untuk mempermudah pembacaanya. Pada
beberapa jenis 7 segment display, terdapat juga penambahan “titik” yang menunjukan angka
koma desimal. Terdapat beberapa jenis 7 segemnt display, diantaranya adalah incandescent
bulbs, Fluorescent Lamps (FL), Liquid Crystal Display (LCD) dan Light Emitting Diode
(LED).
Salah satu jenis 7 segement display yang sering digunakan oleh para penghobu
elektronika adalah 7 segmen yang menggunakan LED sebagai penerangnya. LED 7 segmen
ini ummnya memiliki 7 segmen atau elemen baris dan 1 elemen titik (dot) yang menandakan
“koma” desimal. Jadi jumlah keseluruhan segmen atau elemen LED sebenarnya ada 8. Cara
kerjanya pun boleh dikatakan mudah, ketika segmen atau elemen tertentu diberikan arus listrik

Sutono, M.Kom Page 22


Pelatihan Arduino 2017

maka display akan menampilkan angka atau digit yang diinginkan sesuai dengan kombinasu
yang diberikan.
Terdapat 2 jenis 7 segmen, diantaranya adalah LED 7 segment common cathode dan
LED 7 segment common anode.
1. LED 7 Segmen Tipe Common Cathode (Katoda)
Pada LED 7 segmen jenis common cathode, kaki katoda pada semua segmen LED
terhubung menjadi 1 pin, sedangkan kaki anoda akan menjadi input untuk masing-masing
segmen LED. Kaki katoda yang terhubung menjadi 1 pin ini merupakan terminal negatif (-)
atau ground sedangkan signal kendali (control signal) akan diberikan kepada masing-masing
kaki anoda segmen LED.

3&8

D1 D2 D3 D4 D5 D6 D7 D8
LED LED LED LED LED LED LED LED

10 9 7 5 4 2 1 6

Gambar 4.2. 7 Segmen Common Cathode


2. LED 7 Segmen Tipe Common Anode (Anoda)
Pada LED 7 segmen jenis common anode (anoda), kaki anoda pada semua segmen LED
adalah terhubung menjadi 1 pin, sedangkan kaki katoda akan menjadi input untuk masing-
masing segmen LED. Kaki anoda yang terhubung menjadi 1pin ini akan diberikan tegangan
positif (+) dan signal kendali (control signal) akan diberikan kepada masing-masing kaki
katoda segmen LED.
3&8

D1 D2 D3 D4 D5 D6 D7 D8
LED LED LED LED LED LED LED LED

10 9 7 5 4 2 1 6

Gambar 4.3. 7 Segmen Common Anode


3. Driver 7 Segment
Berikut ini adalah blok diagram untuk mengendalikan LED 7 segmen

Sutono, M.Kom Page 23


Pelatihan Arduino 2017

a a1 a2
2 b b1 1 9 b2 a
3 c c1 2 10 c2 b
Input 4 d d1 3 11 d2 c
1 5 e e1 4 12 e2 d
6 f f1 5 13 f2 e
7 g g1 6 14 g2 f
8 dp dp1 7 15 dp2 g
9 8 16 dp
Decoder Driv er 7 Segment

Gambar 4.4. Blok Diagram Dasar 7 Segment Display


Blok dekoder pada diagram diatas mengubah sinyal input yang diberikan menjadi 8
jalur yaitu “A” sampai dengan “G” dan poin desimal (titik) untuk meng-ON-kan segmen
sehingga menghasilkan angka atau digit yang diinginkan. Contohnya, jika output decoder
adalah “A”, “B”, dan “C” maka segmen LED akan menyala menjadi angka “7”. Jika sinyal
input berbentuk analog, maka diperlukan ADC (Analog to Digital Converter) untuk mengubah
sinyal analog menjadi digital sebelum masuk ke input decoder. Jadi sinyal input sudah
merupakan sinyal digital, maka dekoder akan menanganinya sendiri tanpa harus menggunakan
ADC.
Fungsi dari block driver tersebut adalah untuk memberikan arus listrik yang cukup
kepada segmen/elemen LED untuk menyala. Pada tipe dekoder tertentu, dekoder sendiri dapat
mengeluarkan tegangan dan arus listrik yang cukup untuk menyalakan segmen LED maka blok
driver ini tidak diperlukan.
Pada umumnya driver untuk menyalakan 7 segmen ini terdiri dari 8 transitor switch
pada masing-masing elemen LED-nya.
Tabel 4.1. Kode 7 Segmen
Angka H G F E D C B A
0 0 0 1 1 1 1 1 1
1 0 0 0 0 0 1 1 0
2 0 1 0 1 1 0 1 1
3 0 1 0 0 1 1 1 1
4 0 1 1 0 0 1 1 0
5 0 1 1 0 1 1 0 1
6 0 1 1 1 1 1 0 1
7 0 0 0 0 0 1 1 1
8 0 1 1 1 1 1 1 1
9 0 1 1 0 1 1 1 1

Sutono, M.Kom Page 24


Pelatihan Arduino 2017

4. Rangkaian Dasar 7 Segmen


CN5 4 X 7 SEGMENT
8 X 330

8 dp
7 g
6 f
5 e
4 d
3 c
2 b

C1

C2

C3

C4
1 a

CN4 BC557
4 X 330
+5V
1
2
3
4

Gambar 4.5. Rangkaian dasar 7 segment


 Hubungkan masing-masing kaki resistor yang pertama ke masing-masing pin
Arduino (pin 2 Arduino hingga pin 13 Arduino).
 Hubungkan masing-masing kaki resistor yang berikutnya ke masing-masing pin
7 segmen (pin a – pin dp) dan masing-masing kaki basis dari setiap transistor.
 Hubungkan masing-masing kaki kolektor dari setiap transistor ke pin C1 – pin C4
dari 7 segmen.
 Hubungkan masing-masing kaki emitor dari setiap transistor ke tegangan sumber
+5V (VCC).
5. Aplikasi 7 Segmen, misalnya sketch Arduino untuk memfungsikan 7 segmen dalam kasus
penggunaan counter.
/*
Judul Program : 7 Segment
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
#define digit1 10
#define digit2 11
#define digit3 12
#define digit4 13
#define segA 2
#define segB 3
#define segC 4
#define segD 5
#define segE 6
#define segF 7
#define segG 8
#define segH 9

Sutono, M.Kom Page 25


Pelatihan Arduino 2017

byte segments[10]={
B00111111, // number 0
B00000110, // number 1
B01011011, // number 2
B01001111, // number 3
B01100110, // number 4
B01101101, // number 5
B01111101, // number 6
B00000111, // number 7
B01111111, // number 8
B01101111 // number 9
};
void Display(int number)
{
byte segs=~segments[number];
digitalWrite(segA, bitRead(segs, 0) );
digitalWrite(segB, bitRead(segs, 1) );
digitalWrite(segC, bitRead(segs, 2) );
digitalWrite(segD, bitRead(segs, 3) );
digitalWrite(segE, bitRead(segs, 4) );
digitalWrite(segF, bitRead(segs, 5) );
digitalWrite(segG, bitRead(segs, 6) );
};
void setup()
{
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);

pinMode(segA,OUTPUT);
pinMode(segB,OUTPUT);
pinMode(segC,OUTPUT);
pinMode(segD,OUTPUT);
pinMode(segE,OUTPUT);
pinMode(segF,OUTPUT);
pinMode(segG,OUTPUT);
//pinMode(segH,OUTPUT);
}

int tunda=1;
void loop()
{
for(int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
{
for(int k=0; k<10; k++)
{
Sutono, M.Kom Page 26
Pelatihan Arduino 2017

for(int l=0; l<10; l++)


{
digitalWrite(digit1, LOW);
digitalWrite(digit2, HIGH);
digitalWrite(digit3, HIGH);
digitalWrite(digit4, HIGH);
Display(l);
Delay(tunda);

digitalWrite(digit1, HIGH);
digitalWrite(digit2, LOW);
digitalWrite(digit3, HIGH);
digitalWrite(digit4, HIGH);
Display(k);
delay(tunda);

digitalWrite(digit1, HIGH);
digitalWrite(digit2, HIGH);
digitalWrite(digit3, LOW);
digitalWrite(digit4, HIGH);
Display(j);
delay(tunda);

digitalWrite(digit1, HIGH);
digitalWrite(digit2, HIGH);
digitalWrite(digit3, HIGH);
digitalWrite(digit4, LOW);
Display(i);
delay(tunda);
}
}
}
}
}
Keterangan aplikasi 7 segmen:
 Fungsi define adalah perintah dalam bahasa C, yang akan membolehkan seorang
Programmer memberikan nama dan juga nilai pada sebuah konstanta sebelum
program dieksekusi. Mendefinisikan konstanta tidak akan memakan memori dari
mikrokontroler, tetapi kompiler akan mereferensikan konstanta ini dengan nilai yang
didefinisikan sebelumnya. Contoh #define digit1 10, kompiler akan menggantikan
segala sesuatu yang dinamakan digit1 dengan angka 10 (dalam hal in pin 10 Arduino).
 Mengunakan variabel array dengan nama segments dan memiliki tipe data byte,
maksud dari penulisan B01111111 pada variabel arry dengan indeks 0 memiliki arti
yang telah dijelaskan pada tabel 4.1. Jadi pengertian dari B01111111 sama dengan
nilai segmen dp=0, g=1, f=1, e=1, d=1, c=1, b=1 dan a=1, bila dilihat dari bentuk 7
segmen maka kombinasi angka biner tersebut membentuk angka 0 pada 7 segmen
tersebut.

Sutono, M.Kom Page 27


Pelatihan Arduino 2017

 Untuk melakukan pembacaan data per bit pada variabel array dengan tipe data byte
maka digunakan fungsi bitRead. Contohnya: fungsi
digitalWrite(segA,bitRead(segs,0) memiliki arti bahwa nilai variabel dari
segA=bitRead(segs, 0). Bila nilai segs=0, artinya indeks ke 0 yang dimiliki oleh
variabel segments adalah B01111111, jadi maksud dari fungsi bitRead(segs, 0) adalah
membaca/mengambil satu bit dari B01111111, sehingga fungsi digitalWrite(segA,
bitRead(seg, 0) dapat disedernahakan menjadi digitalWrite(segA, 1), sehingga nilai
dari segA=1. Untuk lebih jelasnya lihat tabel 4.2.
Tabel 4.2. Bilangan Biner
Bilangan Biner Bit-7 Bit-6 Bit-5 Bit-4 Bit-3 Bit-2 Bit-1 Bit-0
0 1 1 1 1 1 1 1
01111111
segH segG segF segE segD segC segB segA
6. Soal Latihan:
 Buatlah program/sketch Arduino counter 7 segment berbentuk tampilan jam digital!
 Buatlah program/sketch Arduino untuk counter stopwatch!
 buatlah program/sketch Arduino untuk counter yang digunakan saat ujian
brelangsung!

Sutono, M.Kom Page 28


Pelatihan Arduino 2017

5.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar LCD 1602.
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan dengan LCD 1602.
5.2. TEORI DASAR
LCD merupakan singkatan dari Liquid Crystal Display, atau umumnya disebut dengan
LCD atau Display saja. Di pasaran beragam jenis LCD dan berbagai ukuran yang bisa Anda
gunakan. LCD bisa untuk menampilkan huruf dan angka, bahkan ada yang bisa untuk
menampilkan gambar.
LCD yang umum digunakan dan harganya juga relatif terjangkau. LCD ini berukuran
16x2 (16 kolom 2 baris) yang cukup menampilkan informasi suhu atau informasi yang tidak
terlalu panjang. LCD ini dikenal juga dengan sebuatan LCD 1602 dengan beberapa varian
seperti 1602A dan lain sebagainya.
LCD ini bisa bekerja pada tegangan +5 volt, sehingga Anda bisa menyambungkan
secara langsung ke pin VCC pada board Arduino. Perlu diperhatikan, jika Anda menggunakan
LCD jenis lainnya, ada juga jenis LCD yang bisa bekerja pada voltase yang berbeda. Sehingga
kesalahan pemasangan sumber tegangan bisa membuat LCD rusak.

Gambar 5.1. LCD 1602

Sutono, M.Kom Page 29


Pelatihan Arduino 2017

LCD 1602 memiliki 16 pin dengan fungsi-fungsi sebagai berikut:


Tabel 5.1. Pin LCD 1602
Simbol Value Fungsi
VSS/GND 0 volt Ground
VDD/VCC +5 volt Power Supply / VCC
VO/VEE - Pengaturan kontras backlight
RS H/L H = data, L = command
R/W H/L H = read,L = write
E H.H-L Enable signal
D1 – D3 H/L Jalur untuk transfer 8 bit data
D4 – D7 H/L Jalur transfer 4 dan 8 biat data
A +5 volt VCC untuk backlight
K 0 volt GND untuk backlight
Berdasarkan karakteristik tersebut, maka semua pin akan digunakan kecuali pin D1 -
D3 sebab kita akan menggunakan jalur data untuk transfer 4 bit atau 8 bit. Penjelasan singkat
tentang RS, R/W dan E:
 RS merupakan kependekan dari Register Selector, pin ini berfungsi untuk memilih
Register Control atau Register Data. RegisterControl digunakan untuk
mengkonfigurasi LCD, sedangkan Register Data digunakan untuk menuliskan data
berupa karakter untuk ditampilkan di LCD.
 R/W atau Read/Write, digunakan untuk memilih aliran data mikrokontroler akan
membaca data yang ada di LCD atau menuliskan data ke LCD. Jika LCD hanya digunakan
untuk menulis/menampilkan data, maka pin ini bisa langsung dismabungkan ke GND
sehingga logika bis diset menjadi L (LOW).
 E atau Enable digunakan untuk mengaktifkan LCD ketika proses penulisan data ke
Register Control dan Register Data.

Sutono, M.Kom Page 30


Pelatihan Arduino 2017

1. Skema Rangkaian Dasar LCD 1602


LCD 2X16

+5V

(GND)
(VCC)
(VEE)

(RW)
(RS)

(D0)
(D1)
(D2)
(D3)
(D4)
(D5)
(D6)
(D7)
(E)

(A)
(K)
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10K

1
2
3
4
5
6

CN3

Gambar 5.2. Rangkaian dasar LCD


Untuk merangkai LCD, yang Anda butuhkan adalah beberapa kabel jumper dan sebuah
potensiometer. Potensiometer ini berfungsi untuk mengatur kontras bcklight LCD.
 Pin VEE pada LCD disambungkan ke kaki tengah potensiometer, sementara masing-
masing kaki potensiometer yang ada dipinggir disambungkan ke VCC dan GND. Jika nanti
tampilan tulisannya kurang jelas, silahkan putar-putar potensiometernya.
 Pin R/W pada LCD disambungkan ke GND.
 Pin RS pada LCD disambungkan ke pin Arduino (misalnya pin 5 Arduino).
 Pin E pada LCD disambungkan ke pin Arduino (misalnya pin 6 Arduino).
 Pin untuk data (D4 – D7) pada LCD disambungkan pada pin Arduino (misalnya pin 2 -
pin 5 Arduino).
 Pin VCC dan pin A pada LCD disambungkan ke pin +5 volt Arduino.
 Pin GND dan pin K pada LCD disambungkan ke pin GND Arduino.
2. Aplikasi LCD, misalnya sketch Arduino untuk memfungsikan LCD 1602 dalam kasus
sederhana seperti penggunan tampilan dalam suatu aplikasi.
/*
Judul Program : Liquid Crystal Display
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.

Sutono, M.Kom Page 31


Pelatihan Arduino 2017

*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
String kata1="Belajar Arduino";
String kata2="U N I K O M ...!";
String kata3="SUTONO, M.KOM";
String kata4="ARDUINO UNO ...!";
void setup()
{
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print(kata1);
delay(2000);
lcd.setCursor(0,1);
lcd.print(kata2);
delay(2000);
}
void loop()
{
for(int i=0; i<16; i++)
{
lcd.scrollDisplayRight();
delay(500);
}

for(int i=0; i<32; i++)


{
lcd.scrollDisplayLeft();
delay(500);
}

for(int i=0; i<16; i++)


{
lcd.scrollDisplayRight();
delay(500);
}

delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(kata3);
delay(1000);
lcd.setCursor(0,1);
lcd.print(kata4);
delay(2000);

for(int i=0; i<16; i++)


{
lcd.scrollDisplayRight();
Sutono, M.Kom Page 32
Pelatihan Arduino 2017

delay(500);
}
for(int i=0; i<32; i++)
{
lcd.scrollDisplayLeft();
delay(500);
}

for(int i=0; i<16; i++)


{
lcd.scrollDisplayRight();
delay(500);
}

lcd.setCursor(0,0);
lcd.print(kata1);
delay(1000);
lcd.setCursor(0,1);
lcd.print(kata2);
delay(2000);
}
Keterangan sketch LCD:
 Fungsi library LCD yaitu LiquidCrystal.h digunakan untuk melakukan setting LCD
sesuai dengan library yang digunakan. Fungsi lcd() adalah inisialisasi dari class
LiquidCrystal yang memiliki parameter berturut-turut pin RS, E, D4, D4, D6 dan
D7, melalui fungsi misalnya LiquidCrystal lcd(7,6,5,4,3,2).
 Fungsi lcd.begin(kolom, baris, charsize) memiliki 2 parameter wajib dan 1
parameter tambahan. Parameter wajib berisi informasi kolom dan informasi baris
pada LCD. Sedangkan informasi tambahan yaitu charsize merupakan mengatur
ukuran dari karakter yang akan ditampilkan dalam satuan pixel. Standar charsize
berukuran 5x8 pixel untuk setiap karakter, jika Anda memiliki LCD dengan pixel
yang berbeda, silahkan disesuaikan. Fungsi begin juga digunakan untuk
menginisialisasi jenis LCD yang akan digunakan. Mungkin ini mirip dengan
Serial.begin yang berfungsi untuk melakukan inisialisasi komunikasi serial dengan
parameter berupa baud rate yang akan digunakan.
 Fungsi lcd.setCursor(kolom, baris) untuk memindahkan/menempatkan kursor aktif
sesuai dengan kolom dan baris yang telah ditentukan. Kolom ke 0 (nol) berarti kolom
ke 1 pada LCD (ingat, angka pertama dalam suatu array selalu dimulai dengan angka
0 bukan angka 1), sedangkan baris ke 1 berarti baris ke 2 pada LCD.
 Fungsi lcd.print dan bukan fungsi lcd.println. Fungsi println dalam LCD maka akan
secara otomatis menambahkan 2 karakter tambahan untuk pindah baris (CR dan LF),
maka jika Anda menggunakan fungsi lcd.println, akan muncul 2 karakter aneh pada
LCD. Jadi gunakanlah fungsi lcd.print untuk menuliskan/mengirimkan data ke LCD.
 Fungsi lcd.clear untuk menghapus seluruh tampilan LCD dan fungsi
lcd.scrollDisplayRight untuk menggeser setiap karakter yang ada di layar LCD

Sutono, M.Kom Page 33


Pelatihan Arduino 2017

kearah kanan. Sedangkan fungsi lcd.scrollDisplayLeft untuk menggeser setiap


karakter yang ada dilayar LCD kearah kiri.
3. Soal latihan: “Buatlah program yang lebih variatif untuk aplikasi LCD 1602, misalkan
pergerakan running text dari arah kiri dan kanan, kemudian ditengah-tengah bertabrakan
dan membentuk suatu karakter tertentu!”

Sutono, M.Kom Page 34


Pelatihan Arduino 2017

6.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar buzzer/speaker.
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan dengan buzzer/speaker.
6.2. TEORI DASAR
Pada bagian ini kita akan bermain-main dengan suara. Sehingga kita akan
membutuhkan speaker untuk menghasilkan suara dan nada musik sederhana. Pada dasarnya,
untuk membuat speaker berbunyi maka kita harus menghidupkan dan mematikan speaker
sesuai dengan frekuensi suara yang ingin kita bunyikan. Hidup-matinya speaker akan membuat
spool speaker bergetar (bergerak maju-mundur) dan menghasilkan suara dengan nada tertentu.

Gambar 6.1. Buzzer/Speaker


/*
Judul Program : Buzzer
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
const int pinSpeaker=9;
void setup()
{
pinMode(pinSpeaker, OUTPUT);
}
void loop()
{
digitalWrite(pinSpeaker, HIGH);
delay(1000);
digitalWrite(pinSpeaker, LOW);
delay(1000);
}
Suara musik kelas A menengah sekitar 440kHz. Masih ingat itu Hz ? Hz merupakan
kependekan dari Hertz. Hertz adalah jumlah siklus perdetik. Dengan demikian, jika kita ingin

Sutono, M.Kom Page 35


Pelatihan Arduino 2017

memainkan musik kelas A menengah, maka kita harus menyalakan dan mematikan speaker
sebanyak masing-masing 440 kali dalam waktu 1 detik.
Untuk menghidup-matikan speaker sebanyak masing-masing 440 kali, kita bisa
memanfaatkan fungsi delay. Cara menghitung delay yang kita butuhkan untuk mendapatkan
siklus 440Hz (nada 440Hz) yaitu dengan cara:
1 𝑑𝑒𝑡𝑖𝑘
𝑑𝑒𝑙𝑎𝑦 =
2 ∗ 𝑓𝑟𝑒𝑘𝑢𝑒𝑛𝑠𝑖_𝑛𝑎𝑑𝑎
1
𝑑𝑒𝑙𝑎𝑦 =
2 ∗ 440
𝑑𝑒𝑙𝑎𝑦 = 0.001136 𝑑𝑒𝑡𝑖𝑘 = 1136 𝜇𝑑𝑒𝑡𝑖𝑘
Kenapa frekuensi dikalikan 2 ? gelombang suara merupakan gelombang analog (sinyal
analog) yang merupakan gelombang sinus. Artinya, 1 siklus penuh adalah 1 tinggi/puncak dan
1 rendah/lembah. Kondisi tinggi adalah ketika speaker dinyalakan, sedangkan kondisi renda
ketika speaker dimatikan. Oleh sebab itu, kita membutuhkan 2 delay untuk 1Hz. Karena 440Hz
adalah 440 siklus, maka setiap siklus pada 440Hz dikalikan dengan 2.
1. Skema Rangkaian
Buatlah rangkaian seperti gambar diatas dengan speaker 8Ω atau 16Ω. Sepaker baru
atau speaker bekas radio yang masih berfungsi dengan baik bisa Anda gunakan. Anda bisa
menggunakan project board ataupun tanpa project board.

CN2 100
1

SPEAKER

Gambar 6.2. Rangkaian dasar speaker/buzzer


 Sambungkan kaki positif speaker pada pin Arduino (misalnya pin 9 Arduino).
 Sambungkan kaki negatif sepaker pada pin GND Arduino.
 Jika nantinya suara yang dihasilkan terlalu nayring, maka Anda bisa menambahkan
resistor 100Ω hingga 1kΩ pada kaki positif atau negatif speaker. Untuk itu,
penggunaan projrct board akan memudahkan Anda untuk menghubungkan resistor
tersebut dengan speaker dan Arduino.
2. Membuat Nada
Jika kita melihat hasil perhitungan diatas, maka kita dapat membuat bunyi/nada 440Hz
dengan menghidup-matikan 440 kali dengan delay masing-masing 1136 mikrodetik.
1
Perhatikan, satuannya adalah mikrodetik (µs atau 1000 ms. Padahal fungsi delay() yang sering
kita gunakan sebelumnya satuannya dalam ms. Oleh sebab itu, untuk membuat delay dengan
satuan µs kita bisa menggunakan fungsi delayMicroseconds().

Sutono, M.Kom Page 36


Pelatihan Arduino 2017

NADA DO RE MI FA SOL LA SI DO
FREKUENSI 262 294 330 394 395 440 494 523

Gambar 6.3. Nada dan Frekuensi


/*
Judul Program : Musik
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
Int const speakerPin=9;
Int const numTones=8;
int Nada[numTones]={262,294,330,349,395,440,494,523};
void setup()
{
for(int i=0; i<numTones; i++)
{
tone(speakerPin,Nada[i]);
delay(1000);
}
noTone(speakerPin);
delay(1000);
for(int i=numTones-1; i>=0; i--)
{
tone(speakerPin,Nada[i]);
delay(1000);
}
noTone(speakerPin);
delay(1000);
}
void loop ()
{
//
}
Ketika program dijalankan, maka speaker akan memainkan nada dasar. Begitulah cara
kerja speaker berbunyi dan membuat suara yang sederhana. Silakan Anda coba-coba dengan
frekuensi lain supaya lebih paham.
3. Musik
Musik adalah kumpulan nada, sehingga jika kita ingin membuat musik, maka kita bisa
merangkai nada-nada sehingga alunannya enak didengar. Pada Arduino kita bisa menggunakan
fungsi tone untuk membuat nada. Fungsi tone memiliki 2 parameter input wajib dan 1
parameter tambahan. Cara menggunakan fungsi tone, yaitu:
tone(pin, frekuensi, durasi; atau tone(pin, frekuensi);
parameter pin adalah pin yang disambungkan ke speaker, frekuensi adalah frekuensi
yang digunakan, sedangkan durasi adalah lama nada berbunyi pada frekuensi tersebut.

Sutono, M.Kom Page 37


Pelatihan Arduino 2017

Jika tanpa menginputkan durasi, maka nada akan dibunyikan hingga nada selanjutnya
dijalankan atau ketika memberikan perintah noTone. Sehingga kita bisa memanfaatkan delay
untuk membuat nada yang panjang atau pendek.
Parameter durasi akan berguna ketika kita ingin membunyikan nada sambil
menjalankan perintah lainnya. Sebab jika kita menggunakan delay, maka kita harus menunggu
delay selesai dahulu untuk menjalankan perintah selanjutnya.
Perintah noTone berguna untuk menghentikan nada pada pin tersebut, sehingga kita
bisa menggunakan perintah ini dengan format:
noTone(pin);
Perintah noTone akan berguna ketika kita menggunakan banyak speaker yang dikontrol
oleh banyak pin. Sekedar catatan bahwa ketika kita menjalankan perintah tone, maka kita bisa
menggunakan fungsi PWM pada pin ~3, ~5, ~6, ~9, ~10 atau ~11.
Diawal program pada sketch diatas terdapat fungsi #define yang berguna untuk
menggantikan suatu variabel tertentu dengan nilai yang dituju. Misalnya variabel NOTE_C4
berarti isinya adalah angka 262 (nada DO).
/*
Judul Program : Melodi
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom
*/
#include <pitches.h>
int speakerPin=9;
int melody[]={
NOTE_C4_1,NOTE_C4, NOTE_D4, NOTE_C4,NOTE_F4,NOTE_E4,
NOTE_C4_1,NOTE_C4,NOTE_D4,NOTE_C4,NOTE_G4,NOTE_F4,
NOTE_C4_1,NOTE_C4,NOTE_C5,NOTE_A4,NOTE_F4,NOTE_E4,NOTE_D4,
NOTE_AS4,NOTE_AS4,NOTE_A4,NOTE_F4,NOTE_G4,NOTE_F4
};
int noteDurations[]={
6,6,3,3,3,3,
6,6,3,3,3,3,
6,6,3,3,3,3,3,
6,6,3,3,3,3
};
void setup()
{
pinMode(speakerPin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
for(int thisNote=0; thisNote<26; thisNote++)
{
int noteDuration=1000/noteDurations[thisNote];
tone(speakerPin, melody[thisNote], noteDuration);

Sutono, M.Kom Page 38


Pelatihan Arduino 2017

int pauseBetweenNotes=noteDuration+50;
Serial.println(melody[thisNote]);
delay(pauseBetweenNotes);
noTone(speakerPin);
}
}
4. Soal latihan
 Buatlah sketch Arduino untuk memainkan beberapa lagu daerah!
 Buatlah sketch Arduino untuk memainkan beberapa lagu wajib!
 Buatlah sketch Arduino untuk memainkan beberapa lagu pilihan!

Sutono, M.Kom Page 39


Pelatihan Arduino 2017

7.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar potensiometer.
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan dengan potensiometer.
7.2. TEORI DASAR
Setelah kita belajar mengatur running LED dengan pushbutton, kali ini kita akan
menggunakan potensiometer untuk mengatur intensitas cahaya. Kelebihan menggunakan
potensimeter yaitu kita lebih mudah mengatur intensitas cahaya LED, sebab kita hanya butuh
satu alat untuk membuat LED menjadi redup atau menjadi terang, yaitu potensiometer.

Gambar 7.1. Potensiometer


Kenapa kita harus melalui mikrokontroler ? Padahal kita bisa saja menghubungkan
langsung ke LED untuk mengatur arus yang masuk ?
Jika kita mengatur LED dengan potensiometer, kita harus memiliki potensiometer yang
pas untuk LED tersebut. Jika hambatan potensiometer tidak sesuai, kemungkinan LED akan
mati sebelum potensiometer habis atau LED sudah full nyalanya ketika potensilmeter baru
dinaikan setengah. Jadi, kita bisa menggunakan satu putaran full potensiometer untuk
menaikan atau menurunkan intensitas cahaya LED tersebut.

Sutono, M.Kom Page 40


Pelatihan Arduino 2017

1. Skema Rangkaian
Pada rangkaian gambar 7.2 menggunakan potensiometer 50kΩ jenis potensiometer
putar. Anda juga bisa mencobanya dengan menggunakan potensiometer jenis trimmer.

+5V

CN8
1 50K

Gambar 7.2. Rangkaian dasar potensiometer


 Hubungkan kaki potensiometer yang barada di sebelah kiri/kanan ke pin +5V dan
pin GND Arduino.
 Hubungkan kaki potensiometer yang ditengah dengan pin Arduino, misalnya pin A0
Arduino.
2. Contoh Aplikasi, buatlah program/sketch Arduino untuk mengatur intensitas cahaya dan
variasi nyala LED (misalnya nyala LED seperti volume radio)!
 Potensiometer 1
/*
Judul Program : Potensiometer
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
const int pinLED=9;
const int pinPot=A0;
void setup()
{
pinMode(pinLED, OUTPUT);

Sutono, M.Kom Page 41


Pelatihan Arduino 2017

pinMode(pinPot, INPUT);
Serial.begin(9600);
}
void loop()
{
int temp=analogRead(pinPot);
analogWrite(pinLED, temp);
temp=map(temp,0,1023,0,254);
Serial.println(temp);
delay(100);
}
 Potensiometer 2
/*
Judul Program : Potensiometer LED
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
const int pinLED1=2;
const int pinLED2=3;
const int pinLED3=4;
const int pinLED4=5;
const int pinLED5=6;
const int pinLED6=7;
const int pinLED7=8;
const int pinLED8=9;
const int pinPot=A0;
void setup()
{
pinMode(pinLED1, OUTPUT);
pinMode(pinLED2, OUTPUT);
pinMode(pinLED3, OUTPUT);
pinMode(pinLED4, OUTPUT);
pinMode(pinLED5, OUTPUT);
pinMode(pinLED6, OUTPUT);
pinMode(pinLED7, OUTPUT);
pinMode(pinLED8, OUTPUT);
pinMode(pinPot, INPUT);
}
void loop()
{
int temp=analogRead(pinPot);
temp=map(temp,0,1023,0,254);
if(temp<=5)
{
digitalWrite(pinLED1, LOW);
digitalWrite(pinLED2, LOW);
digitalWrite(pinLED3, LOW);

Sutono, M.Kom Page 42


Pelatihan Arduino 2017

digitalWrite(pinLED4, LOW);
digitalWrite(pinLED5, LOW);
digitalWrite(pinLED6, LOW);
digitalWrite(pinLED7, LOW);
digitalWrite(pinLED8, LOW);
}
if(temp>5)
{
digitalWrite(pinLED1, HIGH);
digitalWrite(pinLED2, LOW);
digitalWrite(pinLED3, LOW);
digitalWrite(pinLED4, LOW);
digitalWrite(pinLED5, LOW);
digitalWrite(pinLED6, LOW);
digitalWrite(pinLED7, LOW);
digitalWrite(pinLED8, LOW);
}
if(temp>35)
{
digitalWrite(pinLED1, HIGH);
digitalWrite(pinLED2, HIGH);
digitalWrite(pinLED3, LOW);
digitalWrite(pinLED4, LOW);
digitalWrite(pinLED5, LOW);
digitalWrite(pinLED6, LOW);
digitalWrite(pinLED7, LOW);
digitalWrite(pinLED8, LOW);
}
if(temp>65)
{
digitalWrite(pinLED1, HIGH);
digitalWrite(pinLED2, HIGH);
digitalWrite(pinLED3, HIGH);
digitalWrite(pinLED4, LOW);
digitalWrite(pinLED5, LOW);
digitalWrite(pinLED6, LOW);
digitalWrite(pinLED7, LOW);
digitalWrite(pinLED8, LOW);
}
if(temp>95)
{
digitalWrite(pinLED1, HIGH);
digitalWrite(pinLED2, HIGH);
digitalWrite(pinLED3, HIGH);
digitalWrite(pinLED4, HIGH);
digitalWrite(pinLED5, LOW);
digitalWrite(pinLED6, LOW);
digitalWrite(pinLED7, LOW);
digitalWrite(pinLED8, LOW);
Sutono, M.Kom Page 43
Pelatihan Arduino 2017

}
if(temp>125)
{
digitalWrite(pinLED1, HIGH);
digitalWrite(pinLED2, HIGH);
digitalWrite(pinLED3, HIGH);
digitalWrite(pinLED4, HIGH);
digitalWrite(pinLED5, HIGH);
digitalWrite(pinLED6, LOW);
digitalWrite(pinLED7, LOW);
digitalWrite(pinLED8, LOW);
}
if(temp>155)
{
digitalWrite(pinLED1, HIGH);
digitalWrite(pinLED2, HIGH);
digitalWrite(pinLED3, HIGH);
digitalWrite(pinLED4, HIGH);
digitalWrite(pinLED5, HIGH);
digitalWrite(pinLED6, HIGH);
digitalWrite(pinLED7, LOW);
digitalWrite(pinLED8, LOW);
}
if(temp>185)
{
digitalWrite(pinLED1, HIGH);
digitalWrite(pinLED2, HIGH);
digitalWrite(pinLED3, HIGH);
digitalWrite(pinLED4, HIGH);
digitalWrite(pinLED5, HIGH);
digitalWrite(pinLED6, HIGH);
digitalWrite(pinLED7, HIGH);
digitalWrite(pinLED8, LOW);
}
if(temp>215)
{
digitalWrite(pinLED1, HIGH);
digitalWrite(pinLED2, HIGH);
digitalWrite(pinLED3, HIGH);
digitalWrite(pinLED4, HIGH);
digitalWrite(pinLED5, HIGH);
digitalWrite(pinLED6, HIGH);
digitalWrite(pinLED7, HIGH);
digitalWrite(pinLED8, HIGH);
}
delay(100);
}

Sutono, M.Kom Page 44


Pelatihan Arduino 2017

Keterangan Sketch:
Ketika program/sketch di upload ke board Arduino, maka kita bisa mengatur brightness
dan hidup/mati LED dengan sempurna, berbeda dengan cara manual.
 Variabel pinPot merupakan suatu variabel yang menggantikan fungsi dari pin analog A0
Arduino. Kita juga bisa menggunakan pin tersebut sebagai pin digital. Tetapi Anda tidak
bisa menggunakan pin digital sebagai pin analog. Jadi gunakanlah pin A0 – A5 jika kita
menghubungkannya dengan sensor analog.
 Fungsi map digunakan untuk memetakan suatu nilai dari range tertentu ke range yang lain.
Map(value, from_min, from_max, to_min, to_max), misalnya map(temp, 0, 1023, 0,
254), artinya merubah nilai pinPot yang awalnya pada range 0 – 1023 menjadi nilai dengan
range 0 – 254. Jika pinPot bernilai 512 (anggap saja ½ dari 1024), maka nilai tersebut akan
dirubah menjadi 127 (anggap saja ½ dari 255).
3. Soal Latihan:
 Gantilah LED dengan sebuah motor DC yang bekerja pada tegangan +5V, amati apa
yang terjadi saat kita memutar poros potensiometer kekiri dan kekanan!
 Gantilah LED dengan sebuah sirkuit buzzer/speaker, amati sekali lagi apa yang terjadi
saat kita memutar poros potensiometer kekiri dan kekanan.

Sutono, M.Kom Page 45


Pelatihan Arduino 2017

8.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar LM35.
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan dengan LM35.
8.2. TEORI DASAR
LM35 merupakan IC sensor suhu dengan bentuk yang mirip dengan transistor. Kaki IC
ini hanya ada tiga, yaitu VCC, Output dan GND (ground).

Gambar 8.1. IC LM35


Sensor ini bisa digunakan untuk mengukur suhu dari -55oC s/d 150oC. Berdasarkan
datasheet LM35, maka kita bisa menggunakan pengukuran penuh (-55oC s/d 150oC). Untuk
pengukuran penuh, maka rangkaian dasarnya seperti pada gambar dibawah ini.
Sedangkan untuk pengukuran sebagian (2oC s/d 150oC), rangkaian dasarnya seperti
gambar 8.2.
1. Skema Rangkaian
Berdasarkan karakteristik kaki-kaki pada IC LM35, maka kita akan menggunakan
rangkaian sebagian, sehingga rangkaian ini hanya dapat mengukur suhu dari 2 oC s/d 150oC.

Sutono, M.Kom Page 46


Pelatihan Arduino 2017

+5V
LM35 CN7
1 2
VS+ VOUT 1

GND
R21
R

3
C1
CAP

Gambar 8.2. Rangkaian dasar LM35


 Sambungkan pin 1 (kaki kiri/VS+) IC LM35 ke pin +5V Arduino.
 Sambungkan kaki 2 (kaki tengah/output) ke pin A0 Arduino. A0 adalah pin analog,
pin analog berfungsi untuk berbagai transduser/sensor yang mengharuskan sinyal
analog. Oleh sebab itu, untuk membaca kaki output IC LM35 menggunakan
perintah analogRead, sedangkan untuk menulisnya menggunakan analogWrite.
 Sambungkan kaki ke 3 (kaki kanan/GND/ground) ke pin GND Arduino.
Karakteristik dari sensor ini yaitu setiap kenaikan 10mV pada kaki output IC LM35,
menandakan kenaikan suhu 1oC. Sehingga, karena rangkaian hanya mampu mengukur suhu
dari 2oC hingga 150oC, maka output IC LM35 minimal adalah 20mV dan maksimal 150mV.
Konversi suhu pada output IC LM35 juga tergantung pada tegangan referensi yang digunakan.
Tegangan referensi pada Arduino ada tiga (khusus Arduino UNO), tegangan referensi
default, internal dan eksternal. Jika tidak mendefinisikan tegangan referensi yang akan kita
gunakan, maka Arduino secara default akan menggunakan tegangan referensi sebesar 5V.
Selain 5V, tegangan default yang disediakan oleh Arduino adalah 3.3V. akan tetapi kita harus
membuat jumper dari 3.3V (di board Arduino) ke pin AREF, lali mengeksekusi perintah
analogReference(DEFAULT).
Tegangan referensi internal Arduino yaitu 1.1V, untuk menggunakan tegangan
referensi ini, kita harus memberikan perintah analogReference(INTERNAL).
Tetapi jika kita ingin menggunakan tegangan referensi selain 5V, 3.3V dan 1.1V maka
kita bisa menggunakan tegangan referensi eksternal. Tegangan refrensi ini harus antara 0V
hingga 5V, jika tidak Arduino bisa jadi akan rusak. Jika kita menggunakan tegangan referensi
custom ini, maka kita harus memasang sumber tegangan ke AREF dan memberi perintah
analogReference(EXTERNAL).
Sutono, M.Kom Page 47
Pelatihan Arduino 2017

2. Sketch Arduino
Sebelum membuat sketch Arduino, kita akan menghitung bagaimana cara mengukur
dan mengkonversi output dari IC LM35 menjadi suhu. Kita akan mengkonversi voltase pada
kaki output IC LM35, kemudian menghitungnya berdasarkan tegangan referensi yang
digunakan, mengubahnya menjadi derajat celcius, lalu mengirimkannya ke komputer melalui
komunikasi serial.
Jika kita menggunakan tegangan referensi 5V, maka Arduino bisa mengukur
setidaknya hingga 5000mV. Padahal kemampuan IC LM35 hanya sebatas 150 oC atau
150x10mV=1500mv (1.5V). sehingga tegangan yang keluar dari kaki output IC LM35 tidak
akan mungkin melebihi 1.5V.
Berdasarkan persamaan sederhana, maka kita bisa menghitung suhu berdasarkan
perbandingan antara kapasitas voltase yang bisa dicacah oleh pin analog Arduino (1024) dan
kemampuan IC LM35 dalam mengukur suhu.
Suhu dalam voltase (T) = 0 – 1500
Cacahan voltase input (VIN) = 0 – 1023
0 0
=
500 1024
𝑇 𝑉𝐼𝑁
=
500 1024
𝑉𝐼𝑁 ∗ 500
𝑇=
1024

/*
Judul Program : LM35
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
const int pinLM35=A0;
float hasil;
void setup()
{
Serial.begin(9600);
pinMode(pinLM35, INPUT);
}
void loop()
{
hasil=analogRead(pinLM35);
hasil=(hasil*500)/1024;
Serial.print("Suhu = ");
Serial.print(hasil);
Serial.println(" Derajat");
delay(1000);
}

Sutono, M.Kom Page 48


Pelatihan Arduino 2017

Program pada sketch diatas akan membaca data dari sensor IC LM35 pada pin A0
Arduino kemudian mengkonversinya menjadi suhu. Informasi suhu akan dikirim ke komputer
melalui komunikasi serial dengan baudrate 9600 setiap 1000ms.
Variabel suhu dan hasil menggunakan float, yaitu tipe data yang memungkinkan
memuat angka desimal. Di sini menggunakan desimal karena adanya pembagian sehingga jika
kita menggunakan integer, maka hasil perhitungan kita kurang presisi karena hasil
pembagiannya akan selalu dibulatkan.
Fungsi analogRead digunakan untuk membaca masukan dari sensor IC LM35 yang
dihubungkan dengan pin analog Arduino (pin A0). Nilai dari analogRead ini berkisar antara 0
hingga 1023 berdasarkan kemampuan dari mikrokontroler Arduino dalam mencacah tegangan
dari 0V hingga 5V.
Untuk mendapatkan hasil pengukuran yang lebih presisi, maka kita bisa mengganti
tegangan referensi yang digunakan. Jika kita menggunakan tegangan referensi 5000mV, maka
space dari 1500mV hingga 5000mV tidak akan pernah terpakai. Oleh sebab itu, kita bisa
menggunakan tegangan referensi 1500mV (sesuai dengan output maksimal dari IC LM35) atau
menggunakan tegangan referensi yang lebih rendah, misalnya tegangan refrensi INTERNAL
yang nilainya adalah 1.1V. sebagai catatan, jika Anda menggunakan tegangan referensi 1.1V
(1100mV) maka batas maksimal suhu yang bisa dihitung adalah 110 oC.
3. Serial Monitor
Serial monitor bisa kita gunakan untuk men-debug secara software. Jika tanpa Serial
Monitor, kita tidak bisa melakukan debug untuk aplikasi yang kita buat sehingga untuk
menentukan lokasinya, kita harus men-debug dari sisi hardware. Misalnya ketika ada error,
kita akan mencoba dengan LED atau menambah/mengurangi rangkaian.
Tetapi jika kita menggunakan Serial Monitor, kita akan mengetahui error-nya melalui
data yang dikirimkan oleh Arduino. Misalnya ketika nyala LED terlalu lama atau terlalu
lambat, kita langsung bisa mengecek nilai/angka yang digunakan untuk delay dan semua isi
variabel dalam program yang kita buat. Sehingga kita bisa menelusuri logika dan algoritma
berdasarkan data-data yang dikirimkan tadi.
Perhatikan pada board Arduino terdapat pin 0 (RX) dan pin 1 (TX). Pin tersebut
berfungsi untuk menerima dan mengirimkan data melalui komunikasi serial dari Arduino ke
komputer melalui kabel USB. Untuk menggunakan komunikasi serial, kita tidak perlu
menambahkan komponen tambahan baru Arduino karena pada board tersebut sudah
disediakan. Kita cukup menghubungkan Arduino ke komputer dan bisa langsung membuat
program.
Fungsi Serial.begin(9600), ini artinya kita akan membuat koneksi serial dengan baud
rate 9600. Sederhananya, baud rate berkaitan dengan jumlah bit yang akan ditransfer setiap
detiknya. Nilai baud rate ini tergantung pada clock mikrokontroler. Arduino UNO sendiri
menggunakan clock sebesar 16MHz. Jika clock-nya makin rendah, maka baud rate harus kita
kurangi. Sebagai contoh, jika kita menggunakan mikrokontroler dengan clock 1MHz, maka
baud rate yang cocok adalah 4800. Jika clock 1MHz kita menggunakan baud rate 9600, maka
data yang dikirim ke komputer tidak akan terbaca. Pada Arduino IDE, nilai baud rate default
pada Serial Monitor adalah 9600. Silahkan Anda coba-coba dengan mengubah nilainya sesuai
pilihan yang ada.

Sutono, M.Kom Page 49


Pelatihan Arduino 2017

Fungsi Serial.print yang berbeda dengan Serial.println. Jika kita menggunakan


Serial.print, maka kita sekedar mengirimkan data tanpa diikuti end of line (perintah untuk
berganti baris atau ENTER). Beda halnya jika kita mgnguankan fungsi Serial.println, maka
tulisan yang dikirimkan akan diikuti dengan perintah untuk pindah baris.

Gambar 8.3. Hasil monitoring LM35


4. Soal Latihan:
 Buatlah sketch Arduino untuk menampilkan hasil perhitungan temperatur dari IC
LM35 ditampilkan di layar LCD 1602!
 Buatlah sketch Arduino untuk menampilkan hasil perhitungan temperatur dari IC
LM35 ditampilkan di 7 segmen !

Sutono, M.Kom Page 50


Pelatihan Arduino 2017

9.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar Dot Matrix 5x7.
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan Dot Matrix 5x7.
9.2. TEORI DASAR
Dot Matrix merupakan deretan LED yang membentuk array dengan jumlah kolom dan
baris tertentu, sehingga titik-titik yang menyala dapat membentuk suatu karakter angka, huruf,
tanda baca, dan lain sebagainya.

Gambar 9.1. Dot Matrix 5x7


Pada dasarnya Dot Matrix adalah display LED yang disusun sedemikian rupa sehingga
untuk menghidupkan LED ke (kolom, baris) dibuthkan kombinasi tegangan antara pin kolom
dan pin baris.
Untuk mempermudah kontrol dan menghemat pin diperlukan proses scanning
(biasanya kolom), sedangkan pada baris diberikan bit sesuai huruf/karakter yang akan
ditampilkan sesuai dengan posisi scanning.
Scanning untuk kolom dimaksudkan memberikan nilai 1 (HIGH) untuk common
cathode atau 0 (LOW) untuk common anode, untuk kolom lainnya diberikan nilai negasi dari
kolom yang diberikan nilai 1, begitu selanjutnya untuk kolom-kolom berikutnya sampai kolom
terakhir dari rangkaian LED Matrix dan berulang dari awal lagi. Proses ini dilakukan sangat
cepat sehingga mata kita melihatnya tetap sebagai suatu karakter yang diam. Misalkan ingin
menampilkan huruf “A”, secara umum digambarkan seperti gambar 9.1.

Sutono, M.Kom Page 51


Pelatihan Arduino 2017

C0 C1 C2 C3 C4
B0 0 0 1 0 0
B1 0 1 1 0 0
B2 1 0 1 0 0
B3 0 0 1 0 0
B4 0 0 1 0 0
B5 0 0 1 0 0
B6 1 1 1 1 1
Gambar 9.2. Angka 1
 Saat kolom pertama (scan kolom 1=1/HIGH/2.4V) maka bit yang diberikan pada baris
pertama “0010001”, sehingga jika bertemu 1 dengan 1 tidak ada arus yang mengalir, jadi
LED padam, jika 1 bertemu dengan 0, maka arus akan mengalir dan LED akan menyala.
 Begitu juga untuk kolom kedua, ketika keduanya diberikan tegangan maka pada baris bit
yang diberikan akan menghasilkan “0100001”.
 Dan seterusnya, ketika kolomnya mencapai ujung maka akan diulang kekolom pertama
kembali.

Sutono, M.Kom Page 52


Pelatihan Arduino 2017

CN0
8 X 330
1
2
3 D1 D2 D3 D4 D5
4
5
6
7
8

D6 D7 D8 D9 D10

D11 D12 D13 D14 D15

D16 D17 D18 D19 D20

D21 D22 D23 D24 D25

D26 D27 D28 D29 D30

D31 D32 D33 D34 D35

D36 D37 D38 D39 D40

CN1
1
2
3
4
5

Gambar 9.3. Rangkaian dasar Dot Matrix


1. Keterangan gambar 9.3.
 Hubungkan seluruh kaki resistor 330Ω yang pertama dengan masing-masing pin
Arduino (misalnya pin 2 hingga pin 8 Arduino).
 Hubungkan seluruh kaki resistor 330Ω yang kedua dengan masing-masing pin baris
dari setiap pin Dot Matrix 5x7.
 Hubungkan seluruh pin kolom dari Dot Matrix 5x7 dengan masing-masing pin
Arduino (misalkan pin 9 hingga pin 13 Arduino).
2. Contoh Aplikasi: Buatlah program/sketch Arduino untuk menyalakan Dot Matrix 5x7
tersebut secara bergantian dari 35 LED yang ada!
/*
Judul Program : DOT MATRIX
Tanggal Pembuatan : 14 Februari 2017

Sutono, M.Kom Page 53


Pelatihan Arduino 2017

Nama Programmer : Sutono, M.Kom.


*/
int i,j;
const int pinKolom[5]={2,3,4,5,6};
const int pinBaris[7]={7,8,9,10,11,12,13};
void setup()
{
for(i=0; i<5; i++)
{
pinMode(pinKolom[i], OUTPUT);
digitalWrite(pinKolom[i], LOW);
}
for(i=0; i<7; i++)
{
pinMode(pinBaris[i], OUTPUT);
digitalWrite(pinBaris[i], LOW);
}
}
void loop()
{
for(i=0; i<7; i++)
{
for(j=0; j<5; j++)
{
digitalWrite(pinBaris[i], HIGH);
digitalWrite(pinKolom[j], LOW);
delay(100);
digitalWrite(pinBaris[i], LOW);
digitalWrite(pinKolom[j], HIGH);
delay(100);
}
}

for(i=0; i<5; i++)


{
for(j=0; j<7; j++)
{
digitalWrite(pinBaris[j], HIGH);
digitalWrite(pinKolom[i], LOW);
delay(100);
digitalWrite(pinBaris[j], LOW);
digitalWrite(pinKolom[i], HIGH);
delay(100);
}
}
}

Sutono, M.Kom Page 54


Pelatihan Arduino 2017

3. Soal Latihan:
 Buatlah sketch Arduino untuk membuat karakter angka (0 – 9) !
 Buatlah sketch Arduino untuk membuat karakter huruf (A – Z) !
 Buatlah sketch Arduino untuk membuat karakter spesial/khusus, misalnya berbentuk
hati, smile dan lain sebagainya !

Sutono, M.Kom Page 55


Pelatihan Arduino 2017

10.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar Real Time Clock.
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan dengan Real Time Clock.
10.2. TEORI DASAR
RTC (Real Time Clock) merupakan komponen yang diperlukan untuk memberikan
informasi mengenai waktu. Waktu disini dapat berupa detik, menit, jam, hari, bulan dan tahu.
Arduin UNO tidak dilengkapi secara internal dengan RTC. Dengan demikian, untuk aplikasi
yang memerlukan pewaktuan, kita hanrus menyertakan secara tersendiri. Agar tetap dapat
bekerja, sebuah RTC dilengkapi dengan baterai, yang umumnya orang-orang menyebutnya
sebagai baterai CMOS. Pada kesempatan kali ini, kita akan menggunakan RTC dengan IC
DS1307. Selain IC tersebut masih ada IC lain seperti DS3232 dan DS1302.

Gambar 10.1. IC RTC DS1307 dan baterai Maxell CR2032 3V


1. Skema Rangkaian
Modul RTC yang kita beli atau kita rangkai sendiri sepeti skema rangkaian diatas,
umumnya terdapat beberapa pin. Namun yang terpenting terdapat 4 buah pin diantaranya VCC,
GND, SDA dan SCL. SDA (Serial Data) dan SCL (Serial Clock) adalah dua buah pin unik
untuk berkomunikasi secara I2C (Inter-Integrated Circuit). Pada tutorial kali ini, kita tidak akan
membahas I2C secara detail. Sambungkan SDA dengan pin A4 Arduino dan SCL dengan pin
A5 Arduino.

Sutono, M.Kom Page 56


Pelatihan Arduino 2017

Gambar 10.2. Rangkaian dasar RTC IC DS1307


Tabel 10.1. Pin IC RTC DS1307
Pin RTC IC DS1307 Pin Arduino
VCC +5V
GND GND
SDA A4
SCL A5

2. Sketch Arduino
Sebelum kita membuat sketch/program Arduino, terlebih dahulu kita unduh library
untuk RTC. Jika sudah selesai mengunduhnya, import-lah library tersebut ke folder library
Arduino. Caranya, buka IDE Arduino, cari sketch – include library – import library.
Selanjutnya, ketiklah program untuk seting pertama kali RTC, seperti berikut.
/*
Judul Program : DS1307
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>
void setup()
{
tmElements_t tm;
RTC.read(tm);
RTC.set(tm.Hour &10);
RTC.set(tm.Minute &50);
RTC.set(tm.Second &0);
RTC.set(tm.Day &19);

Sutono, M.Kom Page 57


Pelatihan Arduino 2017

RTC.set(tm.Month &7);
RTC.set(tm.Year &47);
RTC.write(tm);
}
void loop()
{
//
}
Seting cukup dilakukan hanya sekali. Selanjutnya, RTC kita siap digunakan sesuai
kebutuhan. Misalnya, kita gunakan untuk melihat hari dan waktu saat ini.
/*
Judul Program : TIMER
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>
void setup()
{
tmElements_t tm;
RTC.read(tm);
Serial.begin(9600);
}
void loop()
{
tmElements_t tm;
RTC.read(tm);
int jam=tm.Hour;
int menit=tm.Minute;
int detik=tm.Second;
int tgl=tm.Day;
int bln=tm.Month;
int thn=tm.Year;
tm.Hour=jam;
tm.Minute=menit;
tm.Second=detik;
tm.Day=tgl;
tm.Month=bln;
tm.Year=thn;
Serial.print("Waktu saat ini : ");
Serial.print(tm.Hour);
Serial.print(":");
Serial.print(tm.Minute);
Serial.print(":");
Serial.println(tmSecond);
Serial.print("Tanggal hari ini : ");

Sutono, M.Kom Page 58


Pelatihan Arduino 2017

Serial.print(tm.Day);
Serial.print(" ");
Serial.print(tm.Month);
Serial.print(" ");
Serial.print(tm.Year);
Serial.print(" ");
Serial.println(tmYearToCalendar(tm.Year));
}
Hasilnya akan ditampilkan pada serial monitor, seperti gambar 10.3.

gambar 10.3. Hasil Monitoring IC RTC DS1307


Untuk melakukan penyetingan waktu dan tanggal, maka kita dapat mengacu pada
gambar 10.4. pada gambar tersebut dapat dilihat, khusus untuk melakukan penyetingan tahun
dimana nilai tahun dimulai dari 0 – 99 (dalam hal ini mewakili tahun dari 1970 sampai dengan
tahun 2069). Misalnya pada kasus ini kita mengisikan angka tahun dengan nilai 47, ini artinya
kita memberikan nilai tahun yang sama dengan tahun 2017, bila dalam sketch Arduino kita
bisa menggunakan fungsi map(tahun, 1970, 2069, 0, 99).
Dengan fungsi map tersebut maka secara otomatis bila kita mengisikan nilai pada tahun
2017 sama artinya kita memberikan nilai pada variabel tahun dengan nilai 47 yang akan
disimpan ke dalam memori IC RTC DS1307.

Sutono, M.Kom Page 59


Pelatihan Arduino 2017

0 1970 25 1995 50 2020 75 2045


1 1971 26 1996 51 2021 76 2046
2 1972 27 1997 52 2022 77 2047
3 1973 28 1998 53 2023 78 2048
4 1974 29 1999 54 2024 79 2049
5 1975 30 2000 55 2025 80 2050
6 1976 31 2001 56 2026 81 2051
7 1977 32 2002 57 2027 82 2052
8 1978 33 2003 58 2028 83 2053
9 1979 34 2004 59 2029 84 2054
10 1980 35 2005 60 2030 85 2055
11 1981 36 2006 61 2031 86 2056
12 1982 37 2007 62 2032 87 2057
13 1983 38 2008 63 2033 88 2058
Item Jangkaun 14 1984 39 2009 64 2034 89 2059
Seconds 0 s/d 59 15 1985 40 2010 65 2035 90 2060
16 1986 41 2011 66 2036 91 2061
Minutes 0 s/d 59 17 1987 42 2012 67 2037 92 2062
Hours 0 s/d 23 18 1988 43 2013 68 2038 93 2063
19 1989 44 2014 69 2039 94 2064
Week Day 0 s/d 6 20 1990 45 2015 70 2040 95 2065
Day 1 s/d 31 21 1991 46 2016 71 2041 96 2066
22 1992 47 2017 72 2042 97 2067
Month 1 s/d 12 23 1993 48 2018 73 2043 98 2068
Year 0 – 99 (offset from 1970) 24 1994 49 2019 74 2044 99 2069

Gambar 10.4. Range Nilai untuk Waktu dan Tanggal IC RTC DS1307
3. Soal Latihan:
 Buatlah rangkaian jam digital dengan tampilan 7 segmen yang disertai dengan
beberapa tombol/pushbutton untuk melakukan penyetingan waktu dan tanggal!
 Buatlah rangkaian jam digital dengan tampilan LCD 1602 yang disertai dengan
beberapa tombol/pushbutton untuk melakukan penyetingan waktu dan tanggal!
 Lengkapilah rangkaian jam digital tersebut dengan buzzer/speaker untuk
menghasilkan suara alarm yang akan menghasilkan peringatan untuk waktu-waktu
tertentu !

Sutono, M.Kom Page 60


Pelatihan Arduino 2017

11.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar Relay..
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan Relay.
11.2. TEORI DASAR
Relay adalah salah satu komponen elektronika yang berfungsi sebagai saklar. Namun
bedanya dengan saklar yang biasa kita lihat adalah bahwa relay dapat mengendalikan banyak
saklar dalam satu waktu. Metode pengaktifan saklarnya pun berbeda dengan saklar biasa
(mechanical switch), jika pada saklar biasa kita cukup menekan atau memencet tombol supaya
rangkaian ON atau OFF, maka pada relay perlu ada arus yang mengalir melalui coil supaya
saklar bisa berpindah posisi dari OFF menjadi ON atau sebaliknya.

Gambar 11.1. Relay 5V DC


1. Cara Kerja Relay
Pertama perlu kita ketahui terlebih dahulu komponen penyusun relay yaitu kumparan,
kontak switch (pole) dan beberapa komponen tambahan seperti resistor dan lampu sebagai
indikator relay sedang beroperasi. Fungsi coil atau kumparan pada relay untuk menarik kontak
switch sehingga keadaan saklar yang sebelumnya Normally Open (NO) menjadi Normally
Close (NC) atau sebaliknya.
Konsep kerja ini memanfaatkan sifat elektromagnetik pada kumparan, sehingga ketika
kedua ujung kumparan diberikan sumber tegangan listrik, maka kumparan akan berubah
menjadi magnet dan menarik switch. Sumber tegangan untuk kumparan bisa berupa tegangan
AC maupun tegangan DC tergantung dari spesifikasi yang tertera pada kemasan relay tersebut.
Pada relay dikenal beberapa istilah misalnya pole. Jumlah pole bisa dikatakan sebagai
jumlah saklar yang dapat diaktifkan oleh kumparan yang ada didalamnya. Jika ada relay
dengan dua pole maka didalmnya terdapat dua saklar dalam satu kumparan.

Sutono, M.Kom Page 61


Pelatihan Arduino 2017

Selain itu seperti yang sudah disinggung sebelumnya, ada juga istilah Normally Open
(NO) dan Normally Close (NC). NO berarti dalam keadaan normal kumparan tidak diberi
tegangan kontak relay tersebut dalam keadaan terbuka (Open) dan itu berarti rangkaian yang
terhubung dengan relay juga menjadi terbuka (OFF). Sedangkan NC adalah keadaan relay
dimana ketika kumparan tidak diberikan tegangan listrik maka kontak dalam keadaan tertutup
(ON). Kedua keadaan ini akan berubah ketika kumparan relay diberikan sumber tegangan
listrik.
2. Rangkaian Dasar Relay
Transistor bekerja sebagai saklar yang mengalirkan arus lewat relay. Jika transistor
menghantar, ada arus yang melewati relay. Arus ini harus cukup besar agar relay dapat bekerja
dengan baik.

+5V
CN
RELAY 1
2

DIODE

CN10
1K
2N2222 1

Gambar 11.2. Rangkaian Dasar Relay 5V DC


Jika transistor menyumbat, aruspun diputuskan dengan mendadak. Pemutusan arus
yang mendadak ini dapat mengakibatkan timbulnya tegangan induksi yang dihasilkan dari
kumparan relay dimana nilai tegangan induksi ini sekitar 100V – 500V dan arus yang
dihasilkan oleh induksi kumparan relay tersebut mengalir melewati transistor dan ini tentunya
dapat merusak transistor tersebut.
Untuk mengamankan arus induksi yang dihasilkan oleh kumparan relay tersebut maka
dibutuhkan sebuah dioda yang dapat mengamankan transistor terhadap arus induksi yang
ditimbulkan oleh kumparan relay tersebut.
Untuk dapat mengaktifkan relay maka perlu diperhitungkan besarnya resistansi dari R
dengan rumus:

Sutono, M.Kom Page 62


Pelatihan Arduino 2017

𝑉𝐶𝐶 − 𝑉𝐵𝐸
𝑅=
𝐼𝐵
Jadi besarnya nilai resistansi dari R harus lebih kecil dari nilai resistansi hasil
I
pembagian resistansi relay dengan besarnya faktor penguatan h FE (≈ IC ).
B

Pertama-tama kita lakukan pengukuran resistansi kumparan relay. Sebagai contoh


disini digunakan relay SPDT 5V dengan kapasitas arus 5A. Dari hasil pengukuran nilai
resistansi kumparan relay didapat sebesar 358Ω (boleh jadi Anda akan mendapatkan nilai yang
5V
berbeda). Dengan demikian arus yang dibutuhkan oleh relay sebesar 358Ω = 0,0140A =
14mA. Sehingga transistor harus dapat menghasilkan arus sedikitnya 2 – 3 kali lebih besar dari
14mA, yakni sekitar 42mA (dalam contoh ini digunakan faktor pengali 3).
Transistor yang digunakan adalah transistor NPN tipe 2N2222 yang mudah didapat.
Transistor ini memiliki penguatan sekitar 100. Selanjutnya arus basis minimal dapat dihitung
I 42mA
sebesar IB = h C = 100 = 0,42mA = 420µA. Jika VBE = 0,7V dan tegangan output dari
FE
4,8V−VBE 4,8V−0,7V
logika HIGH Arduino sekitar 4,8V, maka besarnya RB = = 420 x 10−6 =
IB
9,76x109 Ω = 𝟗, 𝟕𝟔𝐌Ω.
4,8−0,7
Dalam rangkaian digunakan nilai RB=1kΩ, sehingga nilai IB = = 0,0041mA =
1.000
4,8−0,7 4,1
4,1µA atau besarnya RB = = 0,02A = 𝟐𝟎𝟓Ω, ini artinya nilai RB sekitar 205Ω –
20mA
9,76MΩ.
Pemasangan dioda misalnya 1N4002 berfungsi untuk mencegah arus induksi yang
dihasilkan oleh kumparan relay. Jadi rangkaian pada gambar 11.2 sangat cocok untuk
digunakan pada aplikasi menggunakan Arduino karena arus source pin Arduino biasanya
sekitar 20mA.
3. Contoh Aplikasi: Buatlah suatu saklar otomatis yang menggunakan relay seperti aplikasi
alarm kebakaran dengan menggunakan sensor suhu LM35 !
/*
Judul Program : RELAY – LM35
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
#define pinLM35 A0
#define pinAlarm 2
void setup()
{
pinMode(pinLM35, INPUT);
pinMode(pinAlarm, OUTPUT);
Serial.begin(9600);
}
void loop()
{
float Baca_Sensor=analogRead(pinLM35);
float hasil=Baca_Sensor*500/1024;

Sutono, M.Kom Page 63


Pelatihan Arduino 2017

if(hasil>=30)
{
digitalWrite(pinAlarm, HIGH);
Serial.println(hasil);
delay(2000);
}
else
{
digitalWrite(pinAlarm, LOW);
Serial.println(hasil);
}
}
4. Soal Latihan:
 Gantilah sensor LM35 dengan sebuah potensiometer yang diterapkan sebagai sensor
untuk level ketinggian, misalnya monitoring ketinggian air !
 Hubungkan relay dengan pompa air dan amati yang terjadi setelah air pada suatu
wadah penampungan telah mencapai level ketinggian yang telah ditentukan !
 Bila sensor LM35 diganti dengan sensor cahaya, seperti misalnya LDR, perhatikan
sekali lagi apa manfaat dari rangkaian tersebut dan kira-kira dimana diterapkan
rangkaian tersebut!

Sutono, M.Kom Page 64


Pelatihan Arduino 2017

12.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar Keypad 4X3..
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan Keypad 4X3.
12.2. TEORI DASAR
Keypad merupakan antarmuka antara komunikasi perangkat elektronik dengan manusia
yang disebut dengan istilah HMI (Human Machine Interface).
Keypad tersusun atas 12 buah push button yang dirangkai dengan konfigurasi dalam
bentuk matriks, sehingga memiliki indek baris dan kolom sehingga pin input ke Arduino dapat
dikurangi.

Gambar 12.1. Keypad 4x3


Proses pembacaan dilakukan secara matriks yaitu dengan menggunakan teknik
scanning dan pada proses tersebut hal yang dilakukan dengan memberikan umpan data pada 1
bagian dan memantau akan adanya feedback/umpan balik pada bagian lainnya. Umpan data
dilakukan di bagian baris dan feedback yang ada dilakukan pengecekan pada bagian kolom.
Kondisi saat baris diberikan umpan data, baris lainnya dalam kondisi inversi.

Sutono, M.Kom Page 65


Pelatihan Arduino 2017

Gambar 12.2. Rangkaian Dasar Keypad 4X3


1. Cara Kerja Keypad 4X3
 Apabila kolom 1 diberi logika “0”, kolom kedua dan kolom ketiga diberikan logika
“1” maka program akan mengecek tombol 1, 4, 7 dan * sehingga apabila salah satu
baris berlogika “0” maka ada tombol yang ditekan.
 Apabila kolom 2 diberika logika “0”, kolom pertama dan kolom ketiga diberikan
logika “1” maka program akan mengecek tombol 2, 5, 8 dan 0 sehingga apabila salah
satu baris berlogika “0” maka ada tombol yang ditekan.
 Apabila kolom 3 diberika logika “0”, kolom pertama dan kolom ketiga diberikan
logika “1” maka program akan mengecek tombol 3, 6, 9 dan # sehingga apabila salah
satu baris berlogika “0” maka ada tombol yang ditekan.
2. Rangkaian Dasar
Keypad 4X3 sebenarnya adalah kombinasi beberapa push button sehingga keypad 4X3,
metode yang digunakan adalah metode scanning sehingga dengan menggunakan 7 pin keypad
tersebut sudah bisa digunakan dan tentunya menghemat pin Arduino yang digunakan. Jika
dibuat dengan menggunakan sebuah tombol push button yang disusun secara satu – satu maka
membutuhkan sekitar 12 pin yang mewakili masing – masing tombol. Jika dibuat menjadi
matrik menggunakan scanning maka hanya memerlukan sekitar 7 pin karena metodenya akan
memberikan sinyal ground secara bergantian.

Sutono, M.Kom Page 66


Pelatihan Arduino 2017

JP1 1 2 3
1
2
3
4
4 5 6
5
6
7
8
7 8 9

220R

* 0 #

LED

GND

Gambar 11.2. Rangkaian Dasar Keypad 4X3 Untuk Aplikasi Password


3. Contoh Aplikasi: Buatlah suatu aplikasi untuk mengakses tombol – tombol keypad 4X3
yang dilengkapi dengan sebuah indikasi LED !
/*
Judul Program : KEYPAD – 4X3
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
#include <Keypad.h>

const byte ROWS = 4;


const byte COLS = 3;
const int LED = 13;
char keys[ROWS][COLS] =
{
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {3,4,5,6};
byte colPins[COLS] = {7,8,9};

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
}

void loop()

Sutono, M.Kom Page 67


Pelatihan Arduino 2017

{
// put your main code here, to run repeatedly:
char tombol = keypad.getKey();
if(tombol != NO_KEY)
{
Serial.println(tombol);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
}
}

4. Soal Latihan:
 Gantilah LED dengan sebuah buzzer yang diterapkan sebagai indikator suara bila ada
tombol – tombol keypad yang ditekan !
 Buatlah program password dengan menggunakan keypad 4X3, bila password yang
dimasukkan benar, maka LED akan menyala dan bila password yang dimasukkan
salah maka buzzer akan berbunyi !
 Buatlah program password dengan menggunakan keypad 4X3, bila password yang
dimasukkan salah maka LED akan menyala dan bila password yang dimasukkan benar
makan relay akan ON ! (gantilah rangkaian buzzer dengan modul relay 5V) dan
hubungkan modul relay tersebut dengan selenoid untuk mengunci dan membuka pintu
pagar !

Sutono, M.Kom Page 68


Pelatihan Arduino 2017

13.1. TUJUAN
 Peserta Pelatihan dapat membuat rangkaian dasar Dot Matrix 8X8.
 Peserta Pelatihan dapat membuat dan memodifikasi sketch Arduino untuk
aplikasi yang berhubungan Dot Matrix 8X8.
13.2. TEORI DASAR
Modul LED DOT MATRIX 8X8 adalah modul display yang menggunakan kumpulan
– kumpulan LED yang dirangkaikan menjadi satu kesatuan dengan 8 baris dan 8 kolom. Modul
ini dikontrol dengan menggunakan IC MAX7219 sebagai komponen driver utamanya.

Gambar 13.1. Modul Dot Matrix 8X8


Cara pengoperasian modul ini yaitu dengan cara multiplexed display. Tegangan operasi
normal yaitu pada tegangan 5V, sehingga dapat langsung dihubungkan ke Arduino tanpa perlu
adanya komponen tambahan.
Tipe dari Dot Matrix 8X8 ada dua jenis yaitu common cathoda dan common anoda, hal
ini sama halnya dengan 7 – Segment.

Sutono, M.Kom Page 69


Pelatihan Arduino 2017

J1
VCC
1
2
3
4
5
6
7
8

220R 220R 220R 220R 220R 220R 220R 220R

220R 220R 220R 220R 220R 220R 220R 220R

D1 D2 D3 D4 D5 D6 D7 D8

J1
D1 D2 D3 D4 D5 D6 D7 D8
1
2
3
4
5
6
7
8

Common Anode Common Cathode


Gambar 13.2. Tipe Dot Matrix 8X8
1. Spesifikasi Dot Matrix 8X8 MAX7219
 Tegangan operasional antara 4,7V – 5V.
 Arus operasional 320mA.
 Suhu kerja normal 0oC – 50oC.
 Pada umumnya menggunakan Dot Matrix 8X8 Common Cathode.
 Modul tersebut memiliki pin input dan pin output, sehingga bisa digabungkan menjadi
beberapa modul dipasang secara berurutan (cascading).
 Ukuran dimensi modul 5cm × 3.2cm × 1.5cm
2. Rangkaian Dasar
LED Dot Matrix Display pada dasarnya adalah serangkaian LED yang dihubungkan
dalam baris dan kolom. Hal ini dilakukan untuk menghemat pemakaian jumlah pin yang
diperlukan untuk menyalakan tiap LEDnya. Seperti contohnya LED Dot Matrix 8X8 yang
memiliki 64 pin I/O untuk setiap piksel LED.
Dengan menghubungkan semua Anode bersama di dalam beberapa baris (R1 hngga
R8) dan katoda dalam satu kolom (C1 hingga C8), maka jumlah direduksi menjadi hanya 16
pin. Setiap piksel LED dialamatkan oleh koordinat baris dan kolomnya. Pada gambar 13.3 jika
R4 diset logika 1 dan C3 diset logika 0, maka LED pada baris 4 kolom 3 akan menyala. Lalu
bagaimana cara menampilkan banyaknya piksel secara bersamaan, seperti halnya untuk
mengaktifkan sebuah alamat ? Hal ini dilakukan dengan mendrive secara bergantian setiap
alamat dengan sangat cepat sehingga mata kita akan melihat seolah – olah LED menyala secara
bersamaan.

Sutono, M.Kom Page 70


Pelatihan Arduino 2017

DOT MATRIX 8X8


J1
1 13 2
2 12 Clock DIG0 11 R1
3 1 LOAD DIG1 6 R2
4 24 DIN DIG2 7 R3
DOUT DIG3 3 R4
DIG4 10 R5
DIG5 5 R6
DIG6 8 R7
DIG7 R8

C1
C2
C3
C4
C5
C6
C7
C8
220R
VCC 18
ISET
14
SEGA 16
1nF SEGB 20
SEGC 21
SEGE 23
19 SEGD 15
VCC VCC SEGF
4 17
9 GND SEGG 22
GND SEGDP
MAX7219

Gambar 13.3. Rangkaian Dasar Dot Matrix 8X8


Ada banyak cara untuk mengendalikan LED Dot Matrix, masing – masing cara
memiliki kelebihan dan kekurangannya, cara sederhana mendrive langsung Dot Matrix dengan
menggunakan IC Multiplexer (IC MAX7219) dengan menggunakan komunikasi SPI sehingga
jumlah pin input yang diperlukan bisa dipangkas menjadi hanya 5 pin (VCC, GND, DIN, CS
dan CLK).
Modul MAX7219 terdiri dari LED Dot Matrix Common Cathode ukuran 8X8 yang
berwarna merah, IC MAX7219 untuk mengendalikan nyala setiap piksel LED. Soket IC,
resistor 220Ω dan kapasitor 1nF.
3. Contoh Aplikasi: Buatlah suatu aplikasi Runnng LED Dot Matrix dengan menggunakan
IC MAX7219 !
/*
Judul Program : KEYPAD – 4X3
Tanggal Pembuatan : 14 Februari 2017
Nama Programmer : Sutono, M.Kom.
*/
#include <Keypad.h>

const byte ROWS = 4;


const byte COLS = 3;
const int LED = 13;
char keys[ROWS][COLS] =
{
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}

Sutono, M.Kom Page 71


Pelatihan Arduino 2017

};
byte rowPins[ROWS] = {3,4,5,6};
byte colPins[COLS] = {7,8,9};

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
}

void loop()
{
// put your main code here, to run repeatedly:
char tombol = keypad.getKey();
if(tombol != NO_KEY)
{
Serial.println(tombol);
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
}
}

4. Soal Latihan:
 Gantilah LED dengan sebuah buzzer yang diterapkan sebagai indikator suara bila ada
tombol – tombol keypad yang ditekan !
 Buatlah program password dengan menggunakan keypad 4X3, bila password yang
dimasukkan benar, maka LED akan menyala dan bila password yang dimasukkan
salah maka buzzer akan berbunyi !
 Buatlah program password dengan menggunakan keypad 4X3, bila password yang
dimasukkan salah maka LED akan menyala dan bila password yang dimasukkan benar
makan relay akan ON ! (gantilah rangkaian buzzer dengan modul relay 5V) dan
hubungkan modul relay tersebut dengan selenoid untuk mengunci dan membuka pintu
pagar !

Sutono, M.Kom Page 72

Anda mungkin juga menyukai