Anda di halaman 1dari 160

 

 
Fundamental Arduino Microcontroller Kit 

Catatan Pembuka 
Buku ini diperu​ntukan  bagi  para  pemula  yang  ingin  mempelajari  mengenai  pengembangan 
menggunakan  Arduino  Microcontroller  Kit.  Sekaligus  buku  ini  digunakan  sebagai  bahan 
acuan  untuk  melakukan  pengajaran  baik  pada  materi  online  maupun  offline  yang 
diselenggarakan  oleh  PascalRobotik.  Materi  yang  dibuka  adalah  materi  gratis,  itu  artinya 
siapapun dapat menggunakan materi ini baik untuk pengajaran maupun untuk pribadi. 

Buku  ini  dilisensikan  di  atas  lisensi  ​Creative  Commons  Attribution  NonCommercial 
ShareAlike  4.0  International  License  dimana  Anda  diizinkan  untuk  membuat  karya  turunan, 
namun  karya  tersebut  harus  dilisensikan  dengan  lisensi  yang  ​compatible  dan  Anda  tidak 
diizinkan  untuk  menggunakan  karya  ini  untuk  kegiatan  komersil.  Jika  Anda  ingin 
menggunakan  buku  ini  sebagai  kegiatan  belajar  mengajar,  maka  tim  penulis  sedang 
mempersiapkan  slide  yang  dapat  digunakan  untuk  kegiatan  tersebut  dengan  link yang akan 
dibagikan pada buku ini. Untuk sementara berikut Slide yang telah dibuat: 

1. Kelas Arduino - Pertemuan 1 


2. Kelas Arduino - Pertemuan 2 

Bagi  yang  ingin  mendapatkan  buku  ini  diharapkan  tidak  mengunduhnya  dalam  bentuk 
format  dokumen  selain  dokumen  Google  Docs.  Hal  ini  dikarenakan  setiap harinya dokumen 
ini  akan  selalu  diperbarui,  sehingga  untuk  menjaga  agar  para  pembaca  dapat  terus 
memperoleh  pembaruan  tersebut  maka  penulis  tidak  mengizinkan  dokumen  ini  diunduh  ke 
dalam  format  lain.  Adapun  jika  Anda  memiliki  kebutuhan  khusus  mengenai  penggunaan 
buku  ini  yang  terpaksa  harus  digunakan  secara  offline  untuk  suatu  kegiatan,  maka silahkan 
hubungi penulis untuk mendapatkan izin penggunaan. 

Salam, 

Cirebon, 28 Desember 2019   

1
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Para Generasi Muda 


Penulis  bersyukur  kepada  Tuhan  yang  Maha  Esa  yang  telah  memberikan  jalan  kemudahan 
untuk  mempelajari  segala  macam  ciptaannya.  Dan  penulis  bersyukur  diberi  kesehatan  dan 
kekuatan sekaligus kesempatan untuk berbagi ilmu kepada negeri ini, Indonesia. 

Buku  ini  dibuat  untuk  para  pemula  dan  generasi  muda,  terutama  yang  menurut  sudut 
pandang  penulis  banyak  yang  masih  bingung  mengenai  alur  ilmu  apa  yang  seharusnya 
mereka  pelajari  sehingga  sesuai  dengan  passion  mereka.  Akhirnya  karena  kurangnya 
masukan  tersebut  menjadikan  para  generasi muda Indonesia terjun dengan mempelajari hal 
yang  kurang  positif  seperti  hal  nya  kegiatan  ​cyber crime yang dibenarkan menurut pendapat 
pribadi dan kelompoknya. 

Dengan  hadirnya buku ini dan kelas gratis yang dibuka, penulis berharap para generasi muda 
dapat terus termotivasi untuk membuat karya-karya positif yang luar biasa. 

Buku  ini  juga  ditujukan  bagi  para  pelajar  sebagai  media  referensi  untuk  memulai  membuat 
mesin-mesin  otomatisasi,  IoT  (Internet  of  Things),  dan  bidang  lainnya  yang  memanfaatkan 
teknologi.    

2
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Mengakses Buku Ini Secara Offline 


Anda dapat mengakses buku ini secara offline dengan cara mengirimkan alamat email
kepada penulis maupun kepada PascalRobotik untuk nantinya dibagikan dokumen ini
melalui akun Google Docs Anda.

Setelah dokumen ini dibagikan, maka Anda dapat menyimpan nya secara offline namun
tetap harus menggunakan Google Docs untuk membukanya sehingga saat komputer Anda
terhubung ke internet maka akan secara otomatis dokumen pada komputer Anda diperbarui
ke versi yang terbaru.

Untuk membuat dokumen ini tersedia secara offline maka Anda perlu menggunakan aplikasi
Google Docs di Android maupun iOS. Bagi Anda yang menggunakan Laptop / PC,
diwajibkan menggunakan browser Google Chrome (hanya jika ingin tersedia secara offline)
dengan terlebih dahulu melakukan login ke akun Google Anda.

3
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Daftar Isi 
Pengenalan Komponen Elektronik 8
Breadboard 9
Resistor (Hambatan) 9
Resistor Variabel (VR) 12
Resistor Peka Suhu dan Cahaya 13
Dioda 13
Kapasitor (Kondensator) 15
Saklar 16
Relay 17

Bentuk Sinyal 20
PWM (Pulse Width Modulation) 20

Alur Data 21

Definisi dan Fungsi Arduino 22


Sejarah Singkat Arduino 24

Dasar Arduino 25
Pinout Arduino UNO 26
Power Supply 26
Analog In 27
Analog to Digital Conversion 28
Pin Digital 28
Protokol Komunikasi 29
Komunikasi Serial 29
Apa Itu SPI? 30
I2C 31
ICSP Header 32
Memulai Memprogram 32
Membuat Kode Pada Arduino 35
Menyimpan Sketsa 36
Mengkompilasi Sketsa 36
Kesalahan Pada Sketsa 36
Upload (Unggah) Sketsa 37
Gagal Melakukan Upload 37
Penjelasan Kode Dalam Sketsa 38
Membuat Kedipan Yang Cepat 39
4
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Dasar LED 39
Eksperimen Lebih Lanjut 40
Meniru Lampu Lalu Lintas Menggunakan LED 42
Membuat LED Redup 44

Serial Monitor 47

Mengirimkan Data Dari Arduino 48

Menyajikan Dalam Berbagai Format Bilangan 49

Menentukan Jumlah Pecahan 50

Mengirimkan Data Dari Komputer Ke Arduino 52

Membaca Bilangan Dari Serial Monitor 54

Mengendalikan LED Dengan Komunikasi Serial 56

Mengendalikan LED Dengan Tombol 58

Komentar 61

Tipe Data 62

Variabel 64
Deklarasi Variabel 64

Sistem Bilangan 67
Perbedaan Antara 9 Dan ‘9’? 68

Operator Aritmatika 68
Prioritas Pada Aritmatika 69
Increment dan Decrement 70
Ekspresi Boolean 71
Operator Pembanding 71
Operator Logika 72

Struktur Kontrol 72
Pernyataan IF 74
Pernyataan IF … ELSE 76
Kasus Banyak Pilihan 78

Switch 79

Operator Penanganan Seleksi 82

Perulangan 84
While 84

5
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

DO .. WHILE 87
FOR 88
Break Pada Perulangan 90
Penerapan Pada Perangkat Keras 91

Objek 94

Fungsi 94

Array 97

Tabel Dan Array 101

Pengolahan String 103

Motor Servo 108

Piezo Speaker (Buzzer) 111


Perbedaan Speaker Piezoelektrik dan Speaker Elektrodinamis 111

Seven Segment Display 113


Seven Segment 4 Angka 120
Seven Segment 4 Angka Dengan 4 Pin 124

Sensor 129

LDR (Light Dependent Resistor) 129

Curah Hujan 133


Ikhtisar Perangkat Keras 134
Papan Sensor 134
Modul 134

Kelembaban Tanah 135

Sensor Jarak 137


Spesifikasi Sensor 140
Menggunakan Library 144

Membrane Keypad 3x4 145

Membrane Keypad 4x4 150


Inputan PIN Menggunakan Keypad 152
 
 

   

6
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

 
Komponen Elektronika dan Perkakas Kerja 

BAB I 
 
Ikhtisar Materi 
 
Pada materi ini Anda dikenalkan pada beberapa komponen elektronik 
yang  umum  digunakan  (tidak  akan  dijelaskan  secara  detail  dan 
terperinci). 

Mulai  dari  fungsi  dari  komponen  tersebut  dan  cara  menggunakan 


serta  metode  yang  dipakai  untuk  membuat  fungsi  komponen 
tersebut maksimal. 

 
 
Pelajaran 
 
Syarat Pengetahuan 
- Dasar Elektronika (Materi Fisika SMA / SMK kelas 1) 
 
 
Bahan 
 
Perangkat Aksesoris Bahan Lain 
- - - 
 
Deskripsi 
 
Tujuan Belajar 1. Mengenal beberapa perangkat elektronik 
2. Mengetahui cara membaca nilai resistor 
 
 
Kosa Kata 
 
elektromagnetik 
skematik 
power, input, output 
   

7
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pengenalan Komponen Elektronik 

Sebelum  melakukan  percobaan  lebih  lanjut  ke  ​Arduino​,  ada  baiknya  kita  terlebih  dahulu 
memahami  berbagai  bentuk  komponen  utama  sehingga  kita  benar-benar  dapat 
menggunakannya. 

Komponen elektronika memiliki 2 (dua) jenis yaitu: 

1. Komponen Pasif 

Komponen  ini  merupakan  komponen  yang  dapat  bekerja  tanpa  adanya  sumber 
tegangan.  Komponen  pasif  sendiri  terdiri  dari  resistor,  kapasitor,  induktor,  dan 
transformator. 

2. Komponen Aktif 

Kebalikan  dari komponen pasif, dimana komponen aktif adalah komponen yang tidak 
dapat  bekerja  tanpa  adanya  sumber  tegangan.  Komponen  ini  terdiri  dari  dioda  dan 
transistor. 

Akan  dijelaskan  berbagai  macam  komponen  seperti  ​potensiometer,  kapasitor,  LDR,  dan 
transistor​.  Sekalipun  kita  belum  akrab  dengan  nama-nama  tersebut  namun  tidak  perlu 
khawatir karena kita akan mempelajarinya satu per satu. 

8
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Breadboard 

Ketika  akan  merakit  sebuah  perangkat,  maka  kita 


membutuhkan  aktivitas  soldering  yaitu 
menggabungkan  dua  atau  lebih  komponen  metal 
menggunakan  timah  yang  dipanaskan,  hal  ini  akan 
merepotkan  ketika  akan  melakukan  berbagai 
percobaan.  Dengan  menggunakan  ​Breadboard  maka 
proses  soldering  tersebut tidak perlu dilakukan lagi, kita 
hanya tinggal menghubungkan komponen tersebut dengan mudah. 

Breadboard  memiliki  banyak  titik-titik.  Titik  ini  lah  yang  kita  gunakan  untuk  memasang 
komponen-komponen  ​elektronika​.  Tiap  titik  tersebut  memiliki  hubungan  satu sama lainnya, 
artinya  satu  titik  ini  memiliki  jalur  listrik  yang  terhubung  dengan  titik  yang  lain.  Berikut 
hubungan antar jalur listrik tersebut. 

Resistor (Hambatan) 
Hambatan  adalah  komponen  yang  selalu  digunakan  dalam  setiap  rangkaian  elektronika 
karena  dia  berfungsi  sebagai  pengatur  arus  listrik.  Hambatan  disingkat  dengan  huruf  “​R​” 
(huruf  R  besar).  Satuan  Hambatan  adalah  ​Ohm​,  yang  menemukan  adalah  George  Simon 
Ohm  (1787-1854),  seorang  ahli  fisika  berkebangsaan Jerman. Resistor juga memiliki simbol 
yaitu  Ω,  bisa  dibaca  “Ohm”;  KΩ,  bisa  dibaca  “kilo  Ohm”;  MΩ,  bisa  dibaca  “mega  Ohm”. 

9
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Hambatan  listrik  dapat  didistribusikan  sesuai  dengan  kebutuhan.  Tentunya  Anda 


bertanya-tanya apa itu Hambatan? seperti apa bentuknya? bagaimana cara kerjanya? 

Pada  gambar  diatas  adalah  salah  satu  bentuk  dari  Hambatan.  Masih  banyak  bentuk  dan 
jenis  dari  Hambatan,  coba  saja  buka  salah  satu  alat  elektronika  yang sudah rusak dan tidak 
terpakai,  misalnya  charger  Handphone  atau  radio  saku.  Disitu  kita  akan  melihat  banyak 
sekali  Hambatan  terpasang.  dari  yang  berbentuk  bulat  panjang  seperti  gambar  diatas, 
persegi  empat,  seperti  tapal  kuda,  bahkan  tombol  pengatur  volume  suara  yang  ada  di  radio 
tape, itu juga Hambatan. 

Nilai  ​Resistor  bisa  dilihat  dari  kode-kode  warna  yang  terdapat  di  ​resistor  tersebut  dalam 
bentuk  gelang.  Biasanya  ada 4 gelang dalam 1 buah ​Resistor​, namun ada juga yang memiliki 
5 gelang. Berikut tabel gelang warna Resistor: 

10
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

 
Perhatikan  gambar  disamping,  sebuah  Hambatan 
mempunyai  jumlah  gelang  sebanyak  4  diantaranya 
yaitu  gelang  pertama  (paling  kiri),  gelang  kedua, 
gelang  ketiga  (multiplier),  gelang  keempat 
(toleransi).  Sekarang  kita  mencoba  membaca  nilai 
suatu  Hambatan.  Pada  gambar  tersebut  kita 
dapatkan bahwa Hambatan tersebut berwarna Hijau, Biru, Orange, dan Emas. 

Untuk  membaca  kode  warna  Hambatan  seperti  yang  dipermasalahkan  di  atas,  kita 
mulai  menerjemahkan  satu  persatu  kode  tersebut.  Untuk  dapat  menentukan  nilai  warna 
yang  terdapat  Hambatan  dapat  Anda  lihat  pada  tabel.  Warna  gelang  pertama  hijau  berarti 
angka  5,  warna  gelang  kedua  warna  biru  berarti angka 6, warna gelang ketiga orange berarti 
angka  3  digunakan  untuk  multiplier  perkalian  dengan  10  pangkat  3  (sesuai  warna  gelang). 
Jika diterjemahkan: 

= 56 X 10​3  
= 56 X 1000 

11
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

= 56000 
= Atau 56K Ohm 
Berarti 56.000 Ohm dengan nilai toleransi sebesar 5 %. 

Berikut cara menghitung toleransi Resistor: 

56.000 Ohm dengan nilai toleransi 5%, 


a. 56.000 + 5% = 58.800 Ω
​  
b. 56.000 - 5% = 53.200 ​Ω 
Ini artinya nilai Resistor tersebut akan berkisar antara 53.200​Ω​ - 58.800​Ω 

Mengapa  terdapat  nilai  toleransi  (pada  contoh  diatas  sebesar  5%)?  Karakteristik  dari bahan 
baku  pembuatan  Hambatan  tidak  sama,  walaupun  pabrik sudah mengusahakan  agar dapat 
menjadi  standar  tetapi  apa  daya  prosesnya  menjadi  tidak  standar.  Untuk  itulah  pabrik 
mencantumkan  nilai  toleransi  dari  sebuah  Hambatan  agar  para  perancang  dapat 
memperkirakan  seberapa  besar  faktor  x  yang  harus  mereka  hitung  agar  menghasilkan  nilai 
yang mereka kehendaki. 

Untuk  mempermudah  menghafalkan  warna  di  Resistor,  kita  memakai  singkatan  seperti 
berikut: 

HI, CO, ME, O, KU, HI, BI, U, A, PU, EM, PE 


(HItam, COklat, Orange, KUning, HIjau, BIru, Ungu, Abu-abu, PUtih, EMas, PErak). 

Resistor Variabel (VR) 


Nilai  ​resistansi  resistor  jenis  ini dapat diatur dengan tangan, bila pengaturan dapat dilakukan 
setiap  saat  oleh  operator  (ada  tombol  pengatur)  dinamakan  potensiometer  dan  apabila 
pengaturan  dilakukan  dengan  obeng  dinamakan  ​trimmer  potensiometer  (trimpot).  Tahanan 
dalam  potensiometer  dapat  dibuat  dari  bahan  carbon  dan  ada  juga  dibuat  dari  gulungan 
kawat  yang  disebut  ​potensiometer  wirewound​.  Untuk  digunakan  pada  tegangan  listrik  yang 
tinggi biasanya lebih disukai jenis wirewound. 

12
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

 
 

Resistor Peka Suhu dan Cahaya 

Terdapat  ​Resistor  yang  untuk  mengatur  nilai  resistansi  nya  menggunakan suhu. Resistor ini 


dinamakan  dengan  ​thermistor​.  Ada  dua  jenis  yaitu  NTC  (​Negative  Temperature  Coefficient​) 
dan  PTC  (​Positive  Temperature  Coefficient​).  NTC  resistansinya  kecil  bila  panas  dan  makin 
dingin makin besar. Sebaliknya PTC resistensi kecil bila dingin dan membesar bila panas. 

Ada  lagi  resistor  jenis  lain  ialah  LDR  (​Light  Dependent  Resistor​)  yang  nilai  resistansinya 
tergantung  pada  sinar  /  cahaya dimana cahaya semakin terang maka resistansinya semakin 
berkurang. 

Dioda 
Dioda  ​adalah  komponen  elektronika  yang  terdiri  dari  dua  kutub  dimana kutub ini kita sebut 
dengan  ​Anoda  dan  ​Katoda  ​yang  berfungsi  untuk  menghantarkan  arus  listrik  ke  satu  arah 
tetapi  menghambat  listrik  dari  arah  sebaliknya,  oleh  karena  itu  dioda  ini  sering  digunakan 
sebagai  penyearah  dalam  rangkaian​.  Bergantung  pada  polaritas  tegangan  yang  diberikan 
kepadanya,  dioda  bisa  berlaku  sebagai  sebuah  saklar  tertutup  (apabila  bagian  anoda 
mendapatkan  tegangan  positif  sedangkan  katodenya  mendapatkan  tegangan  negatif)  dan 
berlaku  sebagai  saklar  terbuka  (apabila  bagian  anoda  mendapatkan  tegangan  negatif 

13
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

sedangkan  katode  mendapatkan  tegangan  positif).  Kondisi  tersebut  terjadi  hanya  pada 
dioda  ​ideal-konseptual​.  Pada  dioda  faktual  (riil),  perlu tegangan lebih besar dari 0,7V (untuk 
dioda  yang  terbuat  dari  bahan  silikon)  pada  anoda  terhadap  katode  agar  dioda  dapat 
menghantarkan  arus  listrik.  Tegangan  sebesar  0,7V  ini  disebut  sebagai  tegangan  halang 
(​barrier  voltage​).  Dioda  yang  terbuat  dari  bahan  Germanium  memiliki  tegangan  halang 
kira-kira 0,3V. 

Sebagai contoh pemasangan dioda pada suatu rangkaian sebagai berikut: 

Terdapat berbagai macam dioda diantaranya yaitu sebagai berikut. 

● LED 

Light  Emitting  Diode  ​atau  lebih  dikenal  dengan  sebutan  ​LED  adalah  suatu 
semikonduktor yang memancarkan cahaya monokromatik. 

● Dioda Foto 

14
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Dioda  foto  ​adalah  jenis  dioda  yang  berfungsi  mendeteksi  cahaya.  Berbeda  dengan 
dioda  biasa,  komponen  elektronika  ini  akan  mengubah  cahaya  menjadi  arus  listrik. 
Cahaya yang dapat dideteksi oleh dioda foto ini mulai dari cahaya inframerah, cahaya 
tampak,  ultra  ungu  sampai  dengan  sinar-X. Aplikasi dioda foto mulai dari penghitung 
kendaraan  di  jalan  umum  secara  otomatis,  pengukur  cahaya  pada  kamera  serta 
beberapa peralatan di bidang medis. 

Dioda  foto  dan  LED  ini  seringkali  dijadikan  sebagai  satu  kesatuan  untuk  membuat 
sensor  yang  menggunakan  cahaya  inframerah  misalnya  televisi  dan  remotenya, 
sensor pendeteksi gerak, sensor jarak, dll 

Alat  yang  mirip  dengan  Dioda  foto  adalah  ​Transistor  foto  ​(P
​ hototransistor​). 
Transistor  foto  ​ini  pada  dasarnya  adalah  jenis  transistor  bipolar  yang menggunakan 
kontak  (​junction​)  ​base-collector  untuk  menerima  cahaya.  Komponen  ini  mempunyai 
sensitivitas  ​yang  lebih  baik  jika  dibandingkan  dengan Dioda Foto. Hal ini disebabkan 
karena  elektron  yang  ditimbulkan  oleh  foton  cahaya  pada  ​junction ini di-injeksikan di 
bagian  Base  dan  diperkuat  di  bagian  Kolektornya.  Namun  demikian,  ​waktu  respons 
dari Transistor-foto secara umum akan lebih lambat dari pada Dioda-Foto. 

Kapasitor (​Kondensator​) 
Kondensator  (Kapasitor)  adalah  suatu  alat  yang  dapat  menyimpan  energi  di  dalam  medan 
listrik,  dengan  cara  mengumpulkan  ketidak  seimbangan  internal  dari  muatan  listrik. 
Kondensator  memiliki  satuan  yang  disebut  Farad.  Ditemukan  oleh  Michael  Faraday 
(1791-1867).  Kondensator  kini  juga  dikenal  sebagai  “kapasitor”,  namun  kata  “kondensator” 
masih dipakai hingga saat ini. Pertama disebut oleh Alessandro Volta seorang ilmuwan Italia 
pada  tahun  1782  (dari  bahasa  Italia  ​condensatore​),  berkenaan  dengan  kemampuan  alat 
untuk menyimpan suatu muatan listrik yang tinggi dibanding komponen lainnya. Kebanyakan 
bahasa  dan  negara  yang  tidak  menggunakan  bahasa  Inggris  masih  mengacu  pada 
perkataan  bahasa  Italia  “​condensatore​”,  seperti  bahasa  Perancis  ​condensateur​,  Indonesia 
dan Jerman Kondensator atau Spanyol C
​ ondensador. 

15
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pada  kondensator  terdapat  2  (dua)  buah  kaki  dimana  dari  berbagai  macam kondensator ini 
terdapat 2 (dua) jenis: 

● Kondensator  yang  memiliki  kutub  positif  dan  negatif  serta  memiliki  cairan  elektrolit 
dan biasanya berbentuk tabung. 

● Jenis  lainnya  adalah  kondensator  yang  nilai  kapasitasnya  lebih  rendah,  tidak 
mempunyai  kutub  positif  dan  negatif  pada  kaki  nya.  kebanyakan  berbentuk  bulat 
pipih,  berwarna  coklat, merah, hijau, dan lainnya seperti tablet atau kancing baju yang 
sering disebut dengan kapasitor. 

Namun  kebiasaan  dan  kondisi serta artikulasi bahasa setiap negara tergantung pada 


masyarakat  yang  lebih  sering  menyebutkannya.  Kini kebiasaan orang tersebut hanya 
menyebutkan  salah  satu  nama  yang  paling  dominan  digunakan  atau  lebih  sering 
didengar.  Pada  masa  kini,  kondensator  sering  disebut  kapasitor  (capacitor)  ataupun 
sebaliknya yang pada ilmu elektronika disingkat dengan huruf (C). 

16
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Saklar 
Saklar  adalah  sebuah  perangkat  yang  digunakan  untuk  memutuskan  dan  menghubungkan 
jaringan  listrik.  Selain  untuk  jaringan  listrik  arus  kuat,  saklar  berbentuk  kecil  juga  dipakai 
untuk alat komponen elektronika arus lemah. 

Secara  sederhana,  saklar  terdiri  dari  dua  bilah  logam yang menempel pada suatu rangkaian, 


dan  bisa  terhubung  atau  terpisah  sesuai  dengan  keadaan  sambung  (on)  atau  putus  (off) 
dalam  rangkaian  itu.  Material  kontak  sambungan  umumnya  dipilih  agar  supaya  tahan 
terhadap  korosi.  Jika  logam  yang  dipakai  terbuat dari bahan oksida biasa, maka saklar akan 
sering  tidak  bekerja.  Untuk  mengurangi  efek  korosi  ini,  paling  tidak  logam  kontaknya  harus 
disepuh dengan logam anti korosi dan anti karat. 

Relay 
Relay  hampir  mirip  fungsinya  seperti  saklar  dimana  relay  adalah 
komponen  listrik  yang  bekerja  berdasarkan  prinsip  induksi  medan 
elektromagnetik​.  Jika  sebuah  penghantar  dialiri  oleh  arus  listrik, 
maka  di  sekitar  penghantar  tersebut  timbul  medan  magnet.  Medan 
magnet  yang  dihasilkan  oleh  arus  listrik  tersebut  selanjutnya 
diinduksikan ke logam ​feromagnetik​. 

Logam  ​feromagnetik  adalah  logam  yang  mudah  terinduksi  medan  ​elektromagnetik​.  Ketika 
ada  induksi  magnet  dari  lilitan  yang  membelit  logam,  logam  tersebut  menjadi  "magnet 
buatan"  yang  sifatnya  sementara.  Cara  ini  kerap  digunakan  untuk  membuat  magnet  non 

17
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

permanen.  Sifat  kemagnetan  pada  logam  ​feromagnetik  akan  tetap  ada  selama  pada 
kumparan  yang  melilitinya  teraliri  arus  listrik.  Sebaliknya,  sifat  kemagnetannya  akan  hilang 
jika  suplai  arus  listrik  ke  lilitan  diputuskan.  Untuk  memahami  cara  kerja  relay,  Anda  bisa 
membayangkan  sebuah saklar yang dioperasikan menggunakan magnet. Ketika ada magnet 
maka listrik tersambung, dan ketika magnet hilang maka listrik terputus. 

Sebenarnya  aplikasi  relay  banyak  sekali.  Dari  mobil  mainan,  kulkas,  lampu  sein  motor  dan 
mobil,  pompa  air  otomatis,  hingga  peralatan  pada pesawat terbang. Dari relay yang jenisnya 
kecil  hingga  yang  mempunyai  daya  besar.  ​Dari  relay  DC  5  volt,  12  volt  hingga  yang 
bervoltase tinggi. 

 
 
 
   

18
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Dasar Arduino 

BAB II 
 
Ikhtisar Materi 
 
Pada  materi  ini  Anda  akan  dikenalkan  dengan  dasar-dasar  dari 
Arduino  seperti  definisi  Arduino, cara pengoperasian, sampai dengan 
berinteraksi dengan output menggunakan Arduino. 
 
Pelajaran 
 
Syarat Pengetahuan 
- Dasar Elektronika (Materi Fisika SMA / SMK kelas 1) 
- Pernah Mencoba Salah Satu Bahasa Pemrograman 
 
 
Bahan 
 
Perangkat Aksesoris Bahan Lain 
Arduino UNO Resistor 220​Ω - 
Kabel USB Kabel Jumper 
Komputer LED 
 
Deskripsi 
 
Tujuan Belajar 1.  Mengenal  dasar  pengembangan  dengan 
Arduino 
 
 
Kosa Kata 
 
arduino, genuino 
microcontroller 
 
 
   

19
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Bentuk Sinyal 
Sebelum  mempelajari  lebih  lanjut  mengenai  Arduino,  maka  kita  harus  mengetahui  dahulu 
mengenai  bentuk  sinyal.  Bentuk  sinyal  /  data  ini  terdapat  2  (dua)  bentuk  yaitu  analog  dan 
digital. 

Sinyal  digital  hanya  terdapat  2  nilai  yaitu  0  atau  1,  tinggi  atau  rendah,  ya  atau  tidak,  basah 
atau  kering,  bergerak  atau  berhenti,  dan  seterusnya.  Sedangkan  data  analog  dapat memiliki 
banyak  nilai  bukan  hanya  2,  seperti  suhu  ruangan  sebesar  45  derajat  celcius,  ketinggian  air 
sungai  5  meter, intensitas cahaya 78%, dan seterusnya. Perbandingan dari perbedaan antara 
sinyal analog dan digital tersebut dapat dilihat pada tabel berikut. 

 
Contoh  Sinyal Digital  Sinyal Analog 

  0 dan 1  0 - 1023 (10 bit) 


0 - 255 (8 bit) 

Lampu LED  Nyala atau Mati  Tingkat Kecerahan 56% 

Sensor Hujan  Basah atau Kering  Curah Hujan 13mm 

Sensor Temperatur  Panas atau Dingin  Suhu Sebesar 36​o​C 

Motor DC  Berputar atau diam  Kecepatan Putaran 70% 


 
Dari  pemahaman  ini  maka  kita  akan  dengan  mudah  mengetahui  data  apa  yang  seharusnya 
digunakan ketika kita berurusan dengan sensor dan output. 
 

PWM (​Pulse Width Modulation​) 


Terdapat  suatu  teknik  dimana  teknik  tersebut  berguna  untuk  menciptakan  hasil  berupa 
analog  dengan  cara  mentransmisikan  sinyal  digital.  Atau  dengan  kata  lain  teknik  ini  adalah 
teknik  untuk  mengubah  sinyal  digital  menjadi  seolah-olah  seperti  sinyal  analog.  Teknik 
tersebut  dinamakan  dengan  PWM  (​Pulse  Width Modulation​) memiliki simbol seperti berikut : 
~​. 

20
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Bayangkan  lampu  di  rumah  Anda  yang  menggunakan  saklar, hanya ada 2 (dua) pilihan yaitu 


mati  atau  nyala  (sinyal  digital).  Lalu  bagaimana  cara  nya  agar  lampu  tersebut  terlihat redup 
(sinyal  analog)?  Jawabannya  adalah  dengan  membuat  saklar  tersebut  mati  dan  menyala 
dengan  kecepatan  tinggi,  misalnya  25  kali  mati  dan  nyala  dalam  waktu  1  detik  (atau 25 kali 
per  detik).  Teknik  seperti  inilah yang dinamakan PWM. Namun sayangnya tidak sesimple itu, 
teknik  PWM  menghitung  lama  waktu  dan  tegangan  paling  tinggi  dan  paling  rendah  untuk 
menghasilkan nilai duty cycle. Namun yang perlu Anda pahami cukup sampai disini. 

Berikut  contoh  penerapan  teknik  PWM.  Anggaplah  dari  garis  hijau  ke  garis  hijau  yang  lain 
tersebut memiliki lama 0,2 detik. 

 
 

Alur Data 
Setiap  pengolahan  data  untuk  menjadi  informasi  selalu  minimal  terdapat  3  (tiga)  elemen 
yaitu  ​Input​,  Proses,  dan  ​Output​.  Tanpa  tiga  elemen  ini  maka  data  tidak  akan  dapat  diolah 
menjadi  informasi.  Sama  hal  nya  seperti  pada  Arduino,  selalu  harus  ada  input,  proses,  dan 

21
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

output.  Sebagai  contoh  tombol  saklar  ditekan  (input)  kemudian  akan  diproses  oleh  Arduino 
untuk mengalirkan listrik (proses), akhirnya lampu pun menyala karena ada listrik (​output​). 

Jika  tidak  ada  input  maka  hanya  ada  proses  dan  output  dimana  Arduino  tidak  akan  paham 
apa  yang  harus  dilakukan  dan  apa  yang  harus  diproses,  jika  tidak  ada  ​output  maka Arduino 
pun akan bingung apa yang harus dilakukan dan proses nya akan menghasilkan apa. 

 
 
Pada mekatronika dasar, kita mengenal input sebagai sensor, proses sebagai processor, dan 
aktuator  serta  display sebagai output. Bayangkan tubuh manusia, manusia memiliki 5 indera 
yaitu  untuk  merasa  menggunakan  lidah,  meraba  menggunakan  kulit,  melihat  menggunakan 
mata,  mencium  menggunakan  hidung, dan mendengar menggunakan telinga. Seluruh indera 
itulah  yang  kita  sebut  dengan  sensor  atau  perangkat  input.  Otak  manusia  ini  yang 
memproses.  Lalu  manusia  memiliki  otot  dan  sendi  untuk  bergerak  dan  mulut  untuk 
mengeluarkan suara, ini lah yang disebut dengan aktuator atau perangkat output. 
 

Definisi dan Fungsi Arduino 


Banyak  yang  menganggap  bahwa  Arduino  ini  adalah  sebuah  ​Microcontroller​,  sebenarnya 
pernyataan  tersebut  tidak  sepenuhnya  salah  dan  tidak  sepenuhnya  benar.  Jika  kita  tilik 
bersama  Arduino  ini  adalah  sebuah  perangkat  pengembangan  berupa  hardware  dan 
software  untuk  mengembangkan  berbagai  macam  proyek  mekatronika.  Jadi,  Arduino  ini 
bukan  ​microcontroller​.  Justru  Arduino  menggunakan  ​microcontroller  sebagai  processor, 
penyimpanan data, dan RAM nya. 

Seperti  yang  telah  dijelaskan  bahwa  Arduino  terdiri  dari  perangkat  keras  dan  perangkat 
lunak.  Dari  sisi  perangkat  lunak  Arduino  memiliki  lingkungan  pengembangan  yang 
dinamakan  dengan  ​Arduino  IDE​,  inilah  yang  akan  kita  gunakan  untuk  memprogram  papan 
Arduino  kita.  Dari  sisi  perangkat  keras,  Arduino  memiliki  banyak  jenis.  Bayangkan  sebuah 
merek  laptop  memiliki  berbagai  jenis  laptop,  dari  jenis-jenis  laptop  tersebut  memiliki 
spesifikasi  dan  fitur  yang  berbeda-beda.  Begitu juga Arduino dimana ada banyak sekali jenis 

22
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Arduino.  Yang  membedakan  dari  semua  jenis  Arduino  ini  adalah  spesifikasi  dan  fiturnya. 
Untuk cara penggunaan dan cara memprogramnya adalah sama, tidak memiliki perbedaan. 

Jika  kita  merujuk  ke  laman  resmi  Arduino  yaitu  ​http://arduino.cc  lalu  membuka  halaman 
produk  maka kita akan dapat melihat semua jenis Arduino lengkap dengan spesifikasi teknis 
dan  fiturnya.  Dan  pada  pembelajaran  ini,  Arduino  yang  akan  kita  gunakan  adalah  ​Arduino 
UNO  dengan  alasan  penggunaan jenis ini adalah karena harganya yang relatif murah, mudah 
didapatkan,  serta  penggunaannya  yang  simple  dan  juga  memiliki  spesifikasi  dan  fitur  yang 
sangat cukup untuk belajar. 

 
 

 
 
   

23
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Sejarah Singkat Arduino 


Perusahaan  ​Arduino  LLC  didirikan  oleh  Massimo  Banzi,  David Cuartielles, David Mellis, Tom 
Igoe  dan  Gianluca  Martino  pada  tahun  2009.  Papan  Arduino  sendiri  dicetak  dan dibuat oleh 
perusahaan  ​Smart  Project  Srl  dengan  pendirinya  bernama  Gianluca  Martino,  jadi  Martino 
selain  sebagai  pendiri ​Arduino LLC dia juga sebagai pendiri ​Smart Project Srl​. Selama waktu 
tersebut tidak ada masalah apapun di antara kedua perusahaan tersebut. 

Masalah muncul pada sekitar bulan November ketika Martino dan Federico Musto (CEO baru 
Smart  Srl)  mengubah  nama  perusahaannya  dari  Smart  Project  Srl  menjadi  ​Arduino  Srl  dan 
mendaftarkan  domain  ​arduino.org  (dengan  argumen  domain  ini lebih baik dari domain lama 
yaitu arduino.cc). Apakah ini merupakan pelanggaran atau bukan, saat itu sedang menunggu 
untuk disidangkan di Pengadilan Distrik Massachusetts. 

Menurut  artikel  Wired,  penyebab  perpecahan  adalah  bahwa  Banzi  dan  tiga  lainnya  ingin 
menginternasionalkan  merek  dan  produksi  lisensi  ke  perusahaan  lain  secara  bebas, 
sementara  Martino  dan  Musto  di  perusahaan  yang  sebelumnya  dikenal  sebagai  Smart 
Projects  ingin  mendaftar  di  pasar  saham  dan  menjaga  semua  produksi  di  pabrik  Italia 
miliknya. Hal ini saling bertentangan, terjadilah ​Arduino VS Arduino​. 

Agar  Arduino  tetap  dapat  dijual  di  pasar  internasional  maka  dibuatlah  merek  ​Genuino​. 
Dimana  ​Genuino  ini  adalah  merek  yang  digunakan  untuk  pasar  internasional  di  luar wilayah 
Amerika  Serikat,  sementara  ​Arduino  ini  adalah  merek  yang  digunakan  untuk  pasar  Amerika 
Serikat.  Jadi  pada  intinya  antara  Arduino  dan  Genuino  ini  adalah  sama,  tidak  berbeda,  dan 
satu pengembang. Hanya berbeda di nama saja. 

24
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Dasar Arduino 
Arduino  menyatakan  lingkungan  yang  menggabungkan  perangkat  keras  dengan  perangkat 
lunak  yang  memungkinkan  siapa  saja  dapat  membangun  prototipe  proyek  elektronika 
dengan mudah dan cepat. 

Lalu  apakah Arduino itu salah satu jenis ​microcontroller​? Jawabannya adalah bukan, Arduino 
ini  lebih  tepat  disebut  lingkungan  pengembangan  berupa  perangkat  lunak  dan  perangkat 
keras.  Mengenai  ini  sudah  dijelaskan  sebelumnya.  Lalu  apa  hubungan  Arduino  dengan 
microcontroller​?  Untuk  lebih  jelasnya,  silahkan  lihat  pada  pada  gambar  berikut  yang 
menjelaskan bagian-bagian dari Arduino. 

Dapat  kita  lihat  pada  gambar  tersebut  bahwa  Arduino  UNO  menggunakan  ​microcontroller 
ATmega  (jenis  Arduino  lain  bisa  saja  menggunakan  microcontroller  lain).  Jadi  jelas  bahwa 
Arduino  bukanlah  ​microcontroller  akan tetapi Arduino menggunakan ​microcontroller sebagai 
salah satu komponennya. 

Dari  sisi  perangkat  lunak,  Arduino  dilengkapi  dengan  program  yang  digunakan  untuk 
membuat  sketsa,  mengkompilasikan  sketsa,  dan  mengunggah  sketsa  ke  papan  Arduino 
dimana  perangkat  lunak  tersebut  dinamakan  ​Arduino  IDE​.  Pada  pemrograman  lain  kita 
mengenal  kode  program  dalam  satu  berkas  dinamakan  kode  program,  dalam  Arduino 

25
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

berkas  tersebut  dinamakan  sketch  atau  sketsa  dalam  Bahasa  Indonesia.  Jadi  antara  kode 
program dan sketch secara arti itu sama hanya perbedaan penamaan saja. 

Pinout Arduino UNO 


Arduino  dan  perangkat  pengembangan  lainnya  selalu  memiliki  pin  GPIO  (General-Purpose 
Input/Output)  yaitu  sebuah  pin  untuk  menangani  input  dan  output  pada  papan  sirkuit 
elektronik.  Jadi  seluruh  perangkat  input  (sensor)  dan  output  (aktuator  dan  display)  akan 
dihubungkan ke pin GPIO ini. 

Power Supply  

Terdapat 3 (tiga) cara untuk memberikan tenaga listrik pada papan Arduino: 

26
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

1. Barrel  Jack​,  atau  DC  Power  Jack  dapat  digunakan  untuk  memberikan  tenaga  listrik 
pada  Arduino.  Biasanya  barrel  jack  ini  dihubungkan  dengan  adaptor  (bisa 
dihubungkan  dengan  colokan  listrik  di  tembok rumah). Papan Arduino dapat disuplai 
listrik  sebesar  5  -  20  volt  namun  pabrik  sendiri  merekomendasikannya  hanya  di 
kisaran  7-  12  volt.  Jika  kita  mensuplai  diatas  12  volt  maka  regulator  akan  terbakar, 
dan jika kita mensuplai dibawah 7 volt maka Arduino tidak dapat beroperasi. 

2. VIN  Pin​,  Pin  ini  digunakan  untuk  memberikan  tenaga  listrik  dari  sumber  external. 
Tegangannya seperti yang telah dijelaskan di atas. 

3. Kabel  USB​,  Digunakan  ketika  dihubungkan  dengan  komputer  (ataupun  dapat 


menggunakan powerbank), menggunakan tegangan 5 volt pada 500mA. 

Terdapat  dioda  perlindungan  polaritas  yang  menghubungkan  antara  positif  dari  jack 
barel ke pin VIN, dengan nilai 1 Ampere. 

4. 5v  dan  3.3v​, digunakan untuk memberikan daya dengan tegangan sebesar 5 Volt dan 


3,3 Volt ke komponen external misalnya sensor dan aktuator.  

5. GND​,  pada  papan  Arduino  UNO  (dengan  pabrikan  Arduino  LLC)  kita  dapat 
menemukan  5  buah  pin  GND  yang  kesemua  pin  tersebut  terhubung  satu  sama 
lainnya. Pin GND digunakan untuk listrik negatif. 

6. RESET​, untuk melakukan reset Arduino. 

7. IOREF​,  Pin  ini  adalah  sebagai  Input/Output  Reference.  Untuk  memberikan  referensi 
tegangan mana microcontroller akan beroperasi. 

27
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Analog In 

Arduino  UNO  memiliki  6  pin  analog  dimana  pin  ini  menggunakan  ​ADC  (​Analog  to  Digital 
Converter​).  Pin  tersebut  disediakan  untuk  input  berupa  sinyal  analog  namun  dapat  juga 
digunakan  untuk  inputan  sinyal  digital  maupun  output  sinyal  digital  namun  tidak  dapat 
sebagai  output  sinyal  analog.  Untuk  membuat  output  sinyal  analog  maka menggunakan pin 
PWM​ (akan dijelaskan nanti). 

Analog to Digital Conversion 

ADC  adalah  kependekan  dari  ​Analog  to  Digital  Converter​.  ​ADC  adalah  sirkuit elektronik yang 
digunakan untuk mengkonversi sinyal analog ke sinyal digital. Representasi digital dari sinyal 
analog  ini  memungkinkan  prosesor  (yang  merupakan  perangkat  digital)  untuk  mengukur 
sinyal analog dan menggunakan melalui operasinya. 

Pin  Arduino  A0  -  A5  mampu  membaca  sinyal  analog.  Pada  Arduino,  ​ADC  memiliki  resolusi 
10  bit  yang  artinya  pin  ini  dapat  memberikan  nilai  tegangan  analog  1024  dalam  bilangan 
desimal.  ​ADC  ini  mengkonversikan  tegangan  ke  bentuk  bit  yang  dimana  bentuk  bit  inilah 
yang dapat dimengerti oleh processor. 

Contoh paling umum dari ​ADC ini adalah pada penerapan ​VoIP (​Voice over Internet Protocol​), 
biasanya  kita  menggunakan  media  komunikasi  seperti whatsapp, telegram, dan aplikasi lain 
yang  memiliki fitur voice call melalui internet. Setiap smartphone yang kita gunakan memiliki 
microphone  yang  mengubah  gelombang  suara  ke  sinyal  analog.  Hal  ini  terjadi  melalui 
perangkat  ​ADC  pada  smartphone,  sinyal  analog  tersebut  diubah  menjadi  data  digital  yang 
kemudian ditransmisikan ke penerima melalui jaringan internet. 

28
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pin Digital 

Pin  0  -  13  pada  Arduino  UNO  sebagai  pin  digital  untuk  input  maupun  output.  Pada  pin  13 
Arduino  UNO  terhubung  dengan  LED  yang  ada  pada papan Arduino UNO. Pada pin digital ini 
terdapat  pin  ​PWM  (mengenai  PWM telah dijelaskan sebelumnya) yaitu pada pin 3, 5, 6, 9, 10, 
11.  Tidak  perlu  menghafal  pin  mana  saja  yang  merupakan  ​PWM​,  pada  papan  Arduino  label 
pin  ​PWM  ditandai  dengan  simbol  tilde  (simbol  ~).  Contoh  pada  pin  3  adalah  pin  PWM  oleh 
karena itu Arduino memberi label pada pin 3 menjadi ~3. 

Pada  pin  ​PWM  ini  berbeda  dengan  pin  analog,  perbedaannya  selain  karena  ​PWM  ini  adalah 
sebenarnya  sinyal  digital,  perbedaan  lainnya  adalah  bahwa  PWM  ini  hanya  dapat 
memberikan  tegangan  analog  maksimal  255  karena  hanya  memiliki  resolusi  8  bit  (berbeda 
dengan pin analog yang memiliki resolusi 10 bit).  

Catatan penting: 

● Setiap  pin  ini  dapat  memberikan  sampai dengan 40mA maksimum. Akan tetapi yang 


direkomendasikan adalah 20mA. 
● Arus maksimum absolut yang disediakan dari semua pin adalah 200mA. 

Protokol Komunikasi 

Serial  (TTL)​,  Pin  digital  1  dan  0  adalah  pin  serial  untuk  Arduino  UNO.  Jalur  pada  pin  ini 
digunakan untuk modul U
​ SB onboard​. 

29
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Komunikasi Serial  

Komunikasi  serial  digunakan  untuk  bertukar  data  (berkomunikasi)  antara  papan  Arduino 
dengan  perangkat  lain  seperti  komputer,  display,  sensor,  dll.  Setiap  jenis  papan  Arduino 
setidaknya  memiliki  1  port  serial.  Komunikasi  serial  terjadi  di  pin 0 (RX) dan pin 1 (TX) serta 
melalui  USB.  Arduino  mendukung  komunikasi  serial  melalui  pin  digital  dengan  pustaka 
SoftwareSerial​,  hal  ini  memungkinkan  kita  untuk  menghubungkan  lebih  dari  satu  perangkat 
serial dan membiarkan port serial utama untuk ​USB​. 

Sekarang  kita  bahas  mengenai  software  serial  dan  hardware  serial.  Sebagian  besar 
microcontroller  memiliki  perangkat  keras  yang  dirancang  untuk  berkomunikasi  dengan 
perangkat  lainnya.  Port  serial  perangkat  lunak  menggunakan  sistem  ​interupsi  pin-change 
untuk  berkomunikasi.  Ada  pustaka  bawaan  untuk  komunikasi Serial Perangkat Lunak. Serial 
perangkat  lunak  digunakan  oleh  prosesor  untuk  mensimulasikan  port  serial  tambahan. 
Satu-satunya  kelemahan  dengan  serial  perangkat  lunak  adalah  ia  membutuhkan  lebih 
banyak  pemrosesan  dan  tidak  dapat  mendukung  kecepatan  tinggi  yang sama dengan serial 
perangkat keras. 

Pin  SPI  -  SS  /  SCK  /  MISO  /  MOSI  adalah  pin  khusus  untuk  komunikasi  ​SPI​.  Pin  ini  dapat 
ditemukan pada pin digital 10 - 13 dari Arduino UNO dan pada header I​ CSP​. 

Apa Itu SPI? 

Serial  Peripheral  Interface  (SPI)  adalah  protokol  data  serial  yang  digunakan  oleh 
microcontroller  untuk  berkomunikasi  dengan  satu  atau  lebih  perangkat  eksterna.  SPI  juga 
dapat  digunakan  untuk  menghubungkan  2  microcontroller.  Di  bus  SPI,  selalu  ada  satu 
perangkat  yang  dilambangkan  sebagai  perangkat  ​Master  dan sisanya sebagai ​Slave​. Dalam 
kebanyakan  kasus,  microcontroller  adalah  perangkat  Master.  Pin  SS  (​Slave  Select​) 
menentukan perangkat mana yang sedang berkomunikasi dengan Master. 

Perangkat yang diaktifkan SPI selalu memiliki pin berikut: 

30
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

● MISO​ (​Master In Slave Out​) - Jalur untuk mengirimkan data dari slave ke master 
● MOSI​ (​Master Out Slave In​) - Jalur untuk mengirimkan data dari master ke slave 
● SCK  (​Serial  Clock​)  -  Sinyal  jam  yang  dihasilkan  oleh  perangkat  Master  untuk 
menyinkronkan transmisi data. 

I2C 

Pin  ​I2C  -  ​SCL  /  ​SDA  adalah  pin  khusus  untuk  komunikasi  ​I2C​.  Pada  Arduino  UNO,  pin  ini 
ditemukan pada pin Analog A4 dan A5. 

I2C  adalah  protokol  komunikasi  yang  biasa  disebut  "I2C  bus".  Protokol  I2C  dirancang  untuk 
memungkinkan  komunikasi  antar  komponen  pada  satu  papan  sirkuit.  Dengan  I2C  ada  2 
kabel yang disebut sebagai S
​ CL​ dan ​SDA​. 

● SCL​ digunakan untuk menyinkronkan transfer data. 


● SDA​ digunakan untuk mentransmisikan data (mengirimkan data). 

Setiap  perangkat  pada  bus  I2C  memiliki  alamat  unik,  hingga  255  perangkat  dapat 
dihubungkan pada bus yang sama. 

Aref​ - Tegangan referensi untuk input analog. 

Interrupt​ - I​ NT0​ dan ​INT1​. Arduino UNO memiliki dua pin interupsi eksternal. 

Interupsi  eksternal  adalah  interupsi  sistem  yang terjadi ketika ada gangguan luar. Gangguan 


dapat  berasal  dari  pengguna  atau  perangkat  perangkat keras lain dalam jaringan. Kegunaan 
umum  untuk  interupsi  ini  di  Arduino  adalah  membaca  frekuensi  gelombang  persegi  yang 
dihasilkan oleh encoders atau membangunkan prosesor pada peristiwa eksternal. 

Arduino memiliki dua bentuk interupsi: 

● External 
● Pin Change 

Ada  dua  pin  interupsi  eksternal  pada  ​ATmega168  /  ​328  yang  disebut  ​INT0  dan  ​INT1​.  baik 
INT0  dan  INT1  dipetakan  ke  pin  2  dan  3.  Sebaliknya,  interupsi  Pin  Change  dapat  diaktifkan 
pada salah satu pin. 

31
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

ICSP Header 

ICSP  adalah  kependekan  dari  ​In-Circuit  Serial  Programming.  Nama  ini  berasal  dari 
Pemrograman  Dalam  Sistem  (​ISP​).  Pabrikan  seperti  ​Atmel  yang  bekerja  dengan  Arduino 
telah  mengembangkan  header  pemrograman  serial  ​in-circuit  mereka  sendiri.  Pin  ini 
memungkinkan  pengguna  untuk  memprogram  ​firmware  papan  Arduino.  Ada  enam pin ​ICSP 
yang  tersedia  di  papan  Arduino  yang  dapat  dihubungkan  ke  perangkat  programmer  melalui 
kabel pemrograman. 

Dari  sekian  banyak  pin  pada  Arduino  UNO,  kita  tidak  perlu  berpusing  terlebih  dahulu  karena 
yang  perlu  kita  ketahui  untuk  pembelajaran awal ini adalah pin digital, pin analog, pin 5V dan 
3.3V,  pin  GND,  dan  pin  PWM.  Cukup  itu  saja  karena  kita  hanya  akan  menggunakan  sensor 
dan aktuator.

32
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Memulai Memprogram

Pada  Arduino  ada  2  (dua)  tahapan  untuk  memberikan  perintah  dan  mengupload  perintah 
tersebut ke papan Arduino yaitu: 

1. Kompilasi  sketsa  (atau  disebut  verify)  adalah merubah kode program yang telah kita 


ketik dalam bentuk teks ke bentuk biner. Hasilnya dinamakan sketsa biner. 

2. Unggah  sketsa  (upload)  adalah  proses  untuk  meletakan sketsa biner hasil kompilasi 


ke memori flash di papan Arduino. 

Jika  Anda  telah  membaca  buku  ini  dari  halaman  awal  sampai  halaman  ini  secara  berurut 
tanpa  melompat-lompat  maka  selamat!  Anda  punya  semangat  yang  luar  biasa  untuk 
mempelajari  Arduino.  Satu  langkah,  awal  berharga  telah  Anda  tempuh.  Sekarang,  marilah 
untuk menghubungkan komputer dan Arduino melalui kabel USB. 

Perhatikan  gambar  diatas,  Arduino  UNO  menggunakan  USB  tipe  B  untuk  berkomunikasi 
dengan  komputer  kita.  Slot  USB  ini  memiliki  2  (dua)  fungsi  yaitu  untuk  berkomunikasi 
dengan  komputer  kita  dan  sebagai  sumber  tegangan  listrik  sama  seperti  handphone  kita, 
slot  Micro  USB  handphone  kita  memiliki  dua  fungsi  yaitu  sebagai  sumber  daya  listrik  saat 
melakukan  pengisian  ulang  baterai  dan  sebagai  jalur  komunikasi  untuk  bertukar  data 
dengan komputer. 

33
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

USB  tipe  B  ini  juga  biasanya  digunakan  untuk  melakukan  komunikasi  antara  komputer 
dengan  mesin  printer  di  rumah,  jadi  jika  kalian  tidak  memiliki  USB  ini  maka  cobalah 
sementara untuk menggunakan USB printer rumah kalian. 

Langkah  pertama  kita  sekarang  adalah  memprogram  papan  Arduino  kita.  Jika  kalian 
perhatikan  pada  papan  Arduino  di  dekat pin digital nomor 13 maka kalian akan melihat label 
dengan  karakter  ​L.​   Label  itulah  yang  menandakan  bahwa  terdapat  lampu  LED  pada  papan 
Arduino  kita,  lampu  LED  tersebut  terhubung  ke  pin  nomor  13.  Artinya  jika  kita  memberikan 
listrik pada pin nomor 13, maka LED tersebut akan menyala. 

Langkah  pertama,  lakukan  instalasi  Arduino  IDE  pada  komputer  Anda.  Arduino  IDE  dapat 
diunduh  di  laman  resmi  Arduino  (jangan  mencari  link  lain  apalagi  link  tempat  download 
software), hanya gunakan link dari website resmi Arduino. 

https://www.arduino.cc/en/Main/Software 

Unduh sesuai dengan sistem operasi dan arsitektur komputer masing-masing. 

Langkah selanjutnya setelah sukses memasang Arduino IDE pada komputer adalah: 

1. Hubungkan kabel USB ke port USB komputer dan port USB papan Arduino. 
2. Pastikan L
​ ED ON​ pada papan Arduino menyala. 
3. Buka aplikasi Arduino IDE pada komputer Anda. 

34
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pada  saat  kita  membuka  Arduino IDE, maka akan disuguhkan tampilan seperti pada gambar 


diatas. 

Memilih Papan Arduino 


Setelah  kita  melakukan  instalasi  maka  langkah selanjutnya adalah menghubungkan Arduino 
kita  dengan  komputer  menggunakan  kabel  USB  agar  kode  program  yang  kita  buat  dapat 
diupload  ke  papan  Arduino  kita.  Pertama  pasang  kabel  USB  terlebih  dahulu  dari  papan 
Arduino  ke  komputer  kita,  buka  Arduino  IDE  lalu  pilih  menu  ​Tools  ->  Board  ->  Arduino  UNO 
(bagi yang menggunakan Bahasa Inggris pada komputernya). 

35
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Langkah  selanjutnya  adalah  memilih  port  atau  jalur  yang  kita  gunakan untuk berkomunikasi 
dengan  Arduino.  ​Tools  -> Port​. Jika kalian menggunakan sistem operasi Windows maka port 
yang  tersedia  akan  diawali  dengan  ​COM  dan  jika  kalian  menggunakan  sistem  operasi 
Unix-Like  (Seperti  MacOS  dan  distribusi Linux) maka port yang tersedia akan diawali dengan 
/dev/tty/ACM​. 

36
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Membuat Kode Pada Arduino 

Sekarang  kita  bisa  segera  memulai  menuliskan  sketsa.  Sketsa  adalah  nama  khusus  di 
Arduino  yang  sebenarnya  adalah  kode  program.  Buatlah  sketsa  berikut  ini (penjelasan kode 
program akan diterangkan setelahnya). 

void setup() {

pinMode (13, OUTPUT);

void loop() {

digitalWrite (13, HIGH);

delay (1000);

digitalWrite (13, LOW);

delay (1000);

Menyimpan Sketsa 
Untuk  menyimpan  sketsa  masuklah  ke  menu  ​File  ->  Save.  Maka  kotak  dialog  untuk 
menyimpan sketsa kan ditampilkan. 

37
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Mengkompilasi Sketsa 

Langka​h  selanjutnya  adalah  memverifikasi  atau  mengkompilasikan  sketsa.  Langkah  ini 


selain  memeriksa  ada  tidaknya  kode  program  yang  salah  tulis,  juga  sebagai  tindakan untuk 
merubah  kode  program  yang  telah  kita  ketik  menjadi  file  binary  yang  dapat  dimengerti  oleh 
komputer.  Untuk  memverifikasi  sketsa,  klik  pada  ikon  ✔  yang  terdapat  pada  kiri  atas 
Arduino  IDE.  Atau  Cara  kedua,  klik  pada  menu  ​sketch.  ​Lalu,  klik  pada  ​Verify/compile​.  Atau 
cara ketiga, tekan tombol Ctrl + R. 

Kesalahan Pada Sketsa 

Kita  perlu  memperbaiki  kode  program  jika  terdapat  kesalahan  pada  proses  verifikasi. 
Pedomannya,  lakukan  perubahan  berdasarkan  pesan  error  yang  ditampilkan.  Sebagai 
contohnya  ​pinMode  pada  sketsa  tertulis  sebagai  ​pinMod  (kurang  ​e​).  Jika  sketsa 
dikompilasi, akan didapatkan hasil seperti gambar dibawah. 

38
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Baris  yang  memiliki  kesalahan  akan  ditandai  dengan  warna  merah  muda  dan  pesan  error 
nya akan ditampilkan di bagian bawah Arduino IDE. 

Upload (Unggah) Sketsa 


Anda  perlu  mengunggah  sketsa  tersebut  agar  kode  yang  sudah  kita  ketik  dapat  dijalankan 
oleh Arduino. Caranya, klik pada icon  . Langkah ini juga bisa dilakukan melalui menu sketch. 
Kemudian,  klik  tombol  ​upload​.  CTRL+U  juga  dapat  digunakan  sebagai  alternatif.  Jika  tidak 
ada  masalah,  maka  muncul  pesan  ​“Done  uploading”​,  yang  menyatakan  bahwa  sketsa  telah 
diunggah ke papan Arduino. Adapun pesan detailnya yang dihasilkan adalah berikut: 

Sketch uses 928 bytes (2%) of program storage space. Maximum is 32256
bytes. Global variables use 9 bytes (0%) of dynamic memory, leaving 2039
bytes for local variables. Maximum is 2048 bytes.

Pada pesan tersebut terdapat informasi seperti berikut: 

● Ukuran  penyimpanan  (flash  memory)  yang  diperlukan  sketsa  (maksimum  sebesar 


32256 bytes). 
● Ukuran memori yang digunakan variabel global di memori dinamis (maximum 4k). 

39
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Gagal Melakukan Upload 


Jika  pada  saat  upload  ternyata  terdapat  pesan  error  ​“problem uploading to board”​, 
artinya  itu  menandakan  bahwa  papan Arduino belum dikenali oleh komputer. Jika kabel USB 
sudah  dipasangkan  ke  komputer  dan  papan  Arduino,  cobalah  untuk  melepaskannya  dan 
kemudian  memasangnya  kembali.  Lalu,  klik  pada  menu  ​sketch​.  Selanjutnya,  sorot  ​port  dan 
pastikan yang terhubung ke Arduino dalam keadaan tercentang. 

Penjelasan Kode Dalam Sketsa 


Untuk  memahami  sketsa  yang  membuat  LED  berkedip-kedip,  marilah  kita  bahas  peran 
fungsi ​setup() ​dan ​loop()​. ​Memahami  kedua  fungsi  ini merupakan langkah penting untuk 
menguasai pemrograman Arduino. 

Kode  program  yang  terdapat  dalam  ​setup()  ​hanya  akan  dieksekusi  oleh  Arduino  1  (satu) 
kali  yaitu  pada  saat  Arduino  baru  dinyalakan  ataupun  pada  saat  sketsa  baru  selesai 
diunggah.  Lalu  kode  program  yang  terdapat  pada  fungsi  ​loop() ​akan  dijalankan  oleh 
Arduino  berulang-ulang  secara  terus  menerus  sampai  dengan  Arduino  tidak  memiliki  suplai 
listrik. 

Berikut adalah penjelasan mode yang menyusun sketsa pertama. 

● Pernyataan  berikut  digunakan  untuk  menentukan  bahwa  pin  13  adalah  pin  untuk 
keluaran (OUTPUT): 
pinMode(13,OUTPUT);

Artinya,  kita  memberi  tahu  kepada  Arduino  bahwa  pin  nomor  13  ini  akan  digunakan 
sebagai  output.  Pengaturan  seperti  ini  hanya  perlu  dilakukan  sekali  saja.  Itulah 
sebabnya, pernyataan ini diletakkan pada fungsi ​setup()​. 

● Pernyataan 
digitalWrite(13, HIGH);

40
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Dipakai  untuk  menghidupkan  LED,  yang  terhubung  ke  pin  13.  Nilai  HIGH  pada  kode 
program  ini  menyatakan  bahwa  Arduino  harus  memberikan  arus  listrik  ke  pin  13. 
Perintah digitalWrite artinya kita memberikan sinyal digital pada pin nomor 13. 

● Pernyataan  berikut  digunakan  untuk  menunda  eksekusi  di  Arduino  selama  1000 
milidetik (1000 milidetik = 1 detik): 
delay(1000);

dengan  memberikan  perintah  ini  kepada  Arduino  maka  Arduino  akan  menunda 
eksekusi  kode  program  berikutnya  selama  1  detik,  oleh  karena  itu  listrik  akan  tetap 
mengalir selama 1 detik sehingga LED tetap menyala. 

● Pernyataan 
digitalWrite(13,LOW);
Sama  seperti  pernyataan  sebelumnya,  hanya  nilai  yang  digunakan disini adalah LOW 
yang  berarti  Arduino  tidak  memberikan  aliran  listrik  ke  pin  nomor  13.  Data  digital 
pada Arduino dinyatakan dengan HIGH ataupun LOW. 
 
Perintah  HIGH  atau  LOW  tersebut  bisa  kita  ganti  dengan  1  atau  0.  Dimana  1  berarti 
HIGH dan 0 berarti LOW seperti pada contoh berikut: 
digitalWrite(13, 1);
digitalWrite(13, 0);
 

Membuat Kedipan Yang Cepat 


Untuk  dapat  membuat  kedipan  yang  lebih  cepat  kita  perlu  memperkecil  nilai  di  ​delay()​. 
Sebagai  contoh,  jika  nilai  1000  di  kedua  ​delay()  diganti  dengan  200,  LED  akan  menyala 
atau  padam  selama  0,2  detik.  Efeknya,  kedipan  berlangsung  dengan  cepat.  Anda  pun  bisa 
bereksperimen  dengan  memberikan  nilai  pada  kedua  ​delay()  sebagai  contoh,  Anda  bisa 
mengatur agar waktu LED padam lebih lama daripada waktu LED menyala. 

Lampu  LED  yang  ada  pada  papan  Arduino  secara  internal  terhubung  ke  pin  13.  Kalau  Anda 
ingin  mengontrol  LED  melalui  pin  selain  13,  gunakan  LED  eksternal.  Eksperimen  seperti  ini 
mulai dibahas pada materi selanjutnya. 

41
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Dasar LED 
Light  Emitting  Diode  (LED)  adalah  komponen  elektronika  yang  biasa  digunakan  sebagai 
lampu  kecil.  Komponen  ini  mempunyai  dua  kaki.  Salah  satu  kaki  disebut  anode  dan  kaki 
lainnya  dinamakan  katode.  LED  menyala  jika  ada  aliran  listrik  yang  cukup  dari  anode  ke 
katode. 

Selalu  ingat bahwa listrik selalu mengalir dari sisi 
positif  ke  sisi  negatif.  Dalam  hal  LED  maka  sisi 
positif  nya  adalah  anoda  dan  sisi  negatifnya 
adalah katoda. 

Untuk memahami prinsip LED menyala atau tidak 
menggunakan  Arduino,  lakukan  eksperimen 
seperti  gambar  berikut  dan  pastikan  Arduino 
sudah menyala. 

Jika  LED  tersebut  menyala  maka  dapat  kita 


pastikan bahwa LED tersebut tidak ada kerusakan. 

Pada  sisi  positif  kita  berikan  listrik  5  volt  dari  Arduino,  inilah  listrik  positif  yang  keluar.  Lalu 
bagian negatif selalu kita hubungkan ke Ground (GND) pada Arduino. 

Resistor  adalah  komponen  yang  berfungsi  untuk  membatasi  arus  listrik  yang  mengalir 
dalam  suatu  rangkaian.  Pada  rangkaian  di  atas,  resistor  digunakan  untuk  mencegah  LED 
terbakar  sekiranya  dihubungkan  dengan  tegangan  5V.  Nah,  resistor  220Ω  digunakan  agar 
LED mendapatkan arus yang cukup sehingga LED bisa menyala dan tidak merusak LED. 

Eksperimen Lebih Lanjut 

A​nda  perlu  menyiapkan  sejumlah  perangkat  keras  seperti  breadboard,  resistor,  dan  kabel 
dupont. Rincian komponen yang diperlukan paling tidak adalah seperti berikut. 

Material  Keterangan 
42
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

LED merah  Jumlah : 1 

 
LED Hijau  Jumlah : 1 

 
LED Kuning  Jumlah : 1 

 
Resistor  Resistansi : 220Ω (merah,merah,coklat) 
Watt :1/4 
Jumlah : 3 

 
Breadboard  Jenis: Half Breadboard  
Jumlah : 1 

 
Kabel Dupont  Jenis : (male - male) dan (male - female) 

 
 

Breadboard  merupakan  material  yang  wajib  disediakan  jika  ingin  bereksperimen  dengan 
Arduino.  Dengan  menggunakan  peranti  ini,  Anda  bisa  bereksperimen  berbagai  proyek 
elektronika  tanpa  perlu  menggunakan  solder.  Rangkaian  yang  diperlukan  dalam  suatu 
proyek elektronika dapat disusun dengan melakukan hubungan melalui breadboard. 

Kemudian buatlah rangkaian berikut: 

Dasar  penting  yang  perlu 


dipahami  terlebih  dahulu  adalah 
mengetahui  susunan  internal 
lubang-lubang  yang  terdapat  di 
breadboard  (lihat  BAB  I)  agar 
penyusunan  dari  diagram 

43
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

skematis  ke  perwujudan  dengan  breadboard  tidak  salah  pasang.  Jika  Anda  menginginkan 
untuk  menghubungkan  dua  lubang  secara  internal  yang  tidak  terhubung,  kabel  dupont 
diperlukan.  Kabel  ini  juga  biasa  digunakan  untuk  menghubungkan  pin-pin  pada  papan 
Arduino dengan lubang di breadboard. 

Meniru Lampu Lalu Lintas Menggunakan LED 


Skenario untuk mengatur lalu lintas kita atur seperti berikut: 

1. LED merah menyala selama 8 detik. 


2. LED kuning menyala selama 1 detik. 
3. LED hijau menyala selama 2 detik. 

Nah, sekarang rangkaian yang digunakan untuk mengontrol ketiga LED adalah seperti 
gambar​.

Setelah rangkaian seperti di depan disusun, anda bisa mengunggah sketsa berikut: 

Sketsa : lalu_lintas.ino
const int PIN_LED_MERAH = 7;

44
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

const int PIN_LED_KUNING = 6;


const int PIN_LED_HIJAU = 5;

void setup() {
pinMode(PIN_LED_MERAH, OUTPUT);
pinMode(PIN_LED_KUNING, OUTPUT);
pinMode(PIN_LED_HIJAU, OUTPUT);
}

void loop() {
// Merah
digitalWrite(PIN_LED_MERAH, HIGH);
delay(8000);
digitalWrite(PIN_LED_MERAH, LOW);

// Kuning
digitalWrite(PIN_LED_KUNING, HIGH);
delay(1000);
digitalWrite(PIN_LED_KUNING, LOW);

// Hijau
digitalWrite(PIN_LED_HIJAU, HIGH);
delay(2000);
digitalWrite(PIN_LED_HIJAU, LOW);
}

pada  sketsa  ini,  tiga pertanyaan berikut digunakan untuk mendefinisikan konstanta bernama 


PIN_LED_MERAH​, ​PIN_LED_KUNING​, DAN P
​ IN_LED_HIJAU​: 

const int PIN_LED_MERAH = 7;


const int PIN_LED_KUNING = 6;
const int PIN_LED_HIJAU = 5;

45
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Definisi  konstanta  ditandai  dengan  kata  kunci  const.  Dengan  menggunakan  pernyataan 
konstanta  maka  nilai  variabel  (PIN_LED_MERAH,  KUNING,  dan  HIJAU)  tidak  dapat  diubah 
sewaktu sketsa dieksekusi. 

Di  ​setup()​,  tiga  pertanyaan  berikut  digunakan  untuk  menentukan  mode  untuk  pin  yang 
dihubungkan ke LED merah, kuning dan hijau berupa OUTPUT:  

pinMode(PIN_LED_MERAH, OUTPUT);
pinMode(PIN_LED_KUNING, OUTPUT);
pinMode(PIN_LED_HIJAU, OUTPUT);
 
Artinya, Arduino dapat mengubah nilai dari ketiga pin tersebut. 

Contohnya sebagai berikut digunakan untuk menyalakan LED merah selama 8000 milidetik: 

digitalWrite(PIN_LED_MERAH, HIGH);
delay(8000);
digitalWrite(PIN_LED_MERAH, LOW);

Membuat LED Redup 


Untuk  membuat  LED  redup  kita  dapat  menggunakan  sinyal  analog  dimana  sebelumnya  kita 
bereksperimen  menggunakan  sinyal  digital  yaitu  dengan  nilai  1  dan  0,  nyala  dan mati, HIGH 
dan LOW. 

Seperti  yang  sudah  dijelaskan  sebelumnya,  untuk  menggunakan  data  analog  maka  kita 
dapat  menggunakan  pin  Analog  yang  berada  sebelah  kiri  (A0  -  A5).  Namun  pin  tersebut 
hanya  akan  kita  gunakan  sebagai  input  (walaupun  kita  bisa  menggunakannya  sebagai 
output  sinyal  digital).  Untuk  mendapatkan  output  dengan  data  analog  maka  kita  dapat 
menggunakan  pin  PWM  (Pulse  Width  Modulation)  yaitu  terdapat  pada  pin  digital  dengan 
nomor pin yang diawali dengan simbol tilde (~). Yaitu pin 3, 5, 6, 7, 10, 11. 

Pertama-tama, rangkaian seperti berikut perlu disusun terlebih dahulu menggunakan pin 5. 

46
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Lalu unggah sketsa berikut: 

Sketsa : intensitasLED.ino
const int PIN_LED = 5; // Pin PWM

void setup() {
pinMode(PIN_LED, OUTPUT);
}

void loop() {
analogWrite(PIN_LED, 255);
delay(200);
analogWrite(PIN_LED, 191);
delay(200);
analogWrite(PIN_LED, 127);
delay(200);
analogWrite(PIN_LED, 64);
delay(200);
analogWrite(PIN_LED, 0);
delay(200);
}
 
Pada  fungsi  loop  kita  menggunakan  perintah  ​analogWrite. ​Perintah  ini  digunakan  untuk 
memberikan  sinyal  analog  terhadap  ​PIN_LED  yaitu  pin  5.  Pada  pin PWM Arduino, lebar data 
yang  dimiliki  adalah  8  bit  oleh  karena  itu  nilai  maksimal  dari  data  analog  adalah  255 
(konversi dari bilangan biner 8 bit ke bilangan desimal yaitu 255). 

   

47
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Komunikasi Serial 

BAB III 
 
Ikhtisar Materi 
 
Pada  materi  ini  Anda  akan  dikenalkan  dengan  komunikasi  serial 
mulai  dari  definisi  sampai  dengan  cara  penggunaan  komunikasi 
serial.  Tentunya  fungsi  dan penerapan komunikasi serial ini pun akan 
dijelaskan. 
 
Pelajaran 
 
Syarat Pengetahuan 
- Dasar Elektronika (Materi Fisika SMA / SMK kelas 1) 
- Pernah Mencoba Salah Satu Bahasa Pemrograman 
 
 
Bahan 
 
Perangkat Aksesoris Bahan Lain 
Arduino UNO Resistor 220​Ω - 
Kabel USB Kabel Jumper 
Komputer LED 
Push Button 
 
Deskripsi 
 
Tujuan Belajar 1.  Mengenal  dasar  penggunaan  komunikasi 
serial 
 
 
Kosa Kata 
 
arduino, genuino 
microcontroller 
serial communication, serial monitor   

48
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Komunikasi  serial  adalah  salah  satu  metode  komunikasi  data  untuk  mengirimkan  data 
sekian  bit  pada  satu  waktu  tertentu  (misalnya  1  detik)  melalui  seutas  kabel.  Pada dasarnya 
komunikasi  serial  adalah  kasus  khusus  komunikasi  paralel  dengan  nilai  ​n  =  1,  atau  dengan 
kata  lain adalah suatu bentuk komunikasi paralel dengan jumlah kabel hanya satu dan hanya 
mengirimkan satu bit data secara simultan. 
 

Serial Monitor
Serial  Monitor  adalah  fasilitas  di  Arduino  IDE yang memungkinkan kita bisa memantau data 
komunikasi  antara  Arduino  dan  perangkat  komputer  kita.  Hal  ini  sangat  berguna  untuk 
memastikan  sketsa  yang  kita  buat  sesuai  dengan  yang  kita  kehendaki.  Selain  itu,  serial 
monitor  dapat  kita  gunakan  untuk melihat hasil suatu eksperimen dengan cepat, tanpa perlu 
menggunakan  peranti  keluaran  seperti  penampilan  ​LCD​,  sebagai  contoh  kita  ingin 
mengetahui  berapa  persen  tingkat  kelembaban  tanah  yang  dideteksi  oleh  sensor 
kelembaban  tanah  maka  kita  tidak  perlu  menggunakan  ​LCD  tambahan,  cukup dengan serial 
monitor  ini  data  dapat  ditampilkan.  Bentuk  jendela  serial  monitor  adalah  seperti  gambar 
dibawah ini. 

Di  samping  itu,  serial  monitor  juga  dapat  digunakan  untuk  mengirimkan  data  dalam  bentuk 
teks  dari  komputer  kita  ke  Arduino.  Hal  ini  juga  bermanfaat  dalam  beberapa  eksperimen, 

49
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

tanpa  perlu  melibatkan  peranti  masukan  tambahan  seperti  keypad.  Untuk  membuka  serial 

monitor maka kita cukup mengklik icon di sebelah kanan atas Arduino IDE. 

Pertukaran  data  antara  Arduino  dan komputer dilakukan melalui port serial. Itulah sebabnya, 


laju  bit  agar  kedua  peranti  dapat  bertukar  data  perlu  disinkronkan.  Jika  data  yang  dikirim 
sebesar  9600  bit  per  detik  maka  data  yang  diterima  pun  harus  sebesar  9600  bit  per  detik. 
Jika  besar  data  yang  diterima  dan  data  yang  dikirim  tidak  sama,  maka  tentu  saja  data 
tersebut  tidak  terbaca  oleh  Arduino  maupun  komputer  kita  karena  data  yang  diterima  tidak 
sempurna  dikirimkan  begitupun  sebaliknya.  Pada  gambar  dibawah  ini  terlihat bahwa laju bit 
untuk pertukaran data adalah 9600 baud atau bit per detik (bps).

Mengirimkan Data Dari Arduino


Untuk  mempraktekannya,  Anda  perlu  membuat  sketsa  seperti  yang  diperlihatkan  di  sketsa 
kirimSerial​. Sketsa tersebut mengirimkan beberapa nilai ke port serial dan hasilnya tentu saja 
bisa dilihat di Serial Monitor. 

Sketsa : kirimSerial.ino
void setup() {
Serial.begin(9600);

Serial.print("Halo, saya berusia ");


Serial.print(17);
Serial.println(" tahun");
Serial.println();
Serial.println("----------------");
}

void loop() {

}
 

50
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Hasil dari sketsa tersebut adalah sebagai berikut:

Pada  kode  program  yang  kita  ketikan  terdapat kode ​Serial.begin(9600). Kode ini adalah 


untuk  memberitahu  Arduino  bahwa kita akan menggunakan fitur komunikasi serial sehingga 
Arduino  nanti  nya  dapat  mengirimkan  data  ke  komputer  kita  dan  melihat  data  tersebut 
melalui  serial  monitor.  Angka  9600  pada  kode  program  tersebut  adalah  menunjukan  data 
yang harus dikirim oleh Arduino sebanyak 9600 bit dalam 1 detik (9600 bps). 

Kemudian  lihat  kembali  kode  program  tersebut  dimana  terdapat  perintah  ​Serial.print() 
dan  ​Serial.println()​.  Perintah  tersebut  digunakan  untuk  memberitahu Arduino bahwa di 
harus  mengirimkan  data  sesuai dengan isi dari ​Serial.print() tersebut. Perbedaan ​print 
dan  ​println  adalah  dimana  jika  menggunakan  print  maka  data  yang  dikirimkan  tidak  akan 
membuat  baris  baru,  berbeda  dengan  ​println  setelah  data  dikirimkan  maka  akan  dibuat 
baris baru untuk menampilkan data yang lainnya. 

Mengirimkan Data Dengan Format Bilangan Lain 


Untuk  menyajikan  angka  di  serial  monitor  ke  dalam  bentuk  berbagai  bilangan  caranya 
dengan  menyertakan  argumen  kedua,  yang  dapat  berupa  ​DEC  untuk  menyatakan  bilangan 
dalam sistem desimal (sistem bilangan berbasis 10), ​OTC untuk menyatakan bilangan dalam 
sistem  oktal  (sistem  bilangan  berbasis  8),  ​HEX  untuk  menyatakan  bilangan  dalam  sistem 
heksadesimal  (sistem  bilangan  berbasis  16),  atau  ​BIN  untuk  menyatakan  bilangan  dalam 
sistem biner (sistem bilangan berbasis 2). 

51
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Sketsa : sistemBilangan.ino
void setup() {
Serial.begin(9600);

int bilangan = 45;

Serial.println(bilangan);
Serial.println(bilangan, DEC);
Serial.println(bilangan, OCT);
Serial.println(bilangan, HEX);
Serial.println(bilangan, BIN);
Serial.println((char) bilangan);
}

void loop() {

}
 

Untuk menguji sketsa ini, kita cukup menggunakan serial monitor. Hasilnya seperti berikut: 

52
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Menentukan Jumlah Pecahan 


Anda  bisa  menggunakan serial.print()  atau  ​serial.println  dengan  argument 
pertama berupa bilangan pecahan yang hendak dikirim ke serial monitor dan argumen kedua 
berupa  angka  yang  menyatakan jumlah digit pecahan yang dikehendaki untuk ditampilkan di 
serial monitor. Contohnya pada sketsa berikut: 

Sketsa : digitPecahan.ino
void setup() {
Serial.begin(9600);

float bilangan = 450.5688;

Serial.println(bilangan, 6);
Serial.println(bilangan, 5);
Serial.println(bilangan, 4);
Serial.println(bilangan, 3);
Serial.println(bilangan, 2);
Serial.println(bilangan, 1);
Serial.println(bilangan, 0);
}

void loop() {

}
 

Pada sketsa ini,

Serial.println(bilangan, 6);

Membuat isi variabel bilangan ditampilkan dengan jumlah digit pecahan sebanyak 6. Hasil
eksekusi sketsa ini adalah seperti berikut:

53
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Mengirimkan Data Dari Komputer Ke Arduino 


Serial  monitor  dapat  digunakan untuk mengirimkan data dari komputer kita ke Arduino. Data 
yang  dikirimkan  berupa  teks.  Untuk  menangani  hal  ini,  mula-mula  dilakukan  pemeriksaan 
terhadap  ada  tidaknya  data  di  port  serial.  Dalam  hal  ini,  pemanggilan  terhadap 
Serial.available()  dilakukan.  Fungsi  anggota  ​available()  pada  objek  ​serial  adalah 
memberikan  nilai  balik  berupa  jumlah data dalam suatu byte yang belum pernah dibaca oleh 
Arduino. 

Hal itu dapat dituangkan menjadi kode semacam berikut:

if (Serial.available() > 0) {

Atau cukup ditulis menjadi

if (Serial.available()) {

54
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pernyataan  ​if  adalah  pernyataan  yang  digunakan  untuk  menjalankan  suatu  perintah  atau 
tindakan  tergantung  pada  kondisi ​if​. Jika kondisi terpenuhi, bagian yang tergantung oleh ​if 
akan  dijalankan.  Pada  contoh  dibawah  ini  ,  sekiranya ​serial.avaible() ​memberikan nilai 
balik  berupa  bilangan  bukan  nol,  perintah  yang  berada  di  dalam  tanda  {  dan  }  akan 
dijalankan.  Namun,  jika  ​serial.available() menghasilkan 0 (berarti tidak ada data di port 
serial), perintah yang berada didalam tanda { dan } tidak dijalankan. 

Tentu  saja,  didalam  tanda  {  dan  }  perlu  diberikan  perintah  untuk  membaca  data  yang 
terdapat  di  port  serial.  Salah  satu  caranya  adalah  dengan  membaca  setiap  byte data dalam 
bentuk  karakter.  Caranya  adalah  dengan  menuliskan  pernyataan  seperti  berikut:  ​char
karakter = Serial.read();

Pertama-tama,  variabel  ​karakter  dideklarasikan  bertipe  ​char  (tipe  karakter).  Kemudian, 


variable  ini  diberikan  nilai  berupa  karakter  yang  dibaca  dari  port  serial.  Ya,  ​serial.read()
lah  yang  membaca  sebuah  karakter  dari  port  serial  dan  nilai  baliknya  diberikan diberikan ke 
variable karakter. Dengan dasar-dasar seperti itu, Anda bisa menguji sketsa berikut: 

Sketsa : bacakarakter.ino
void setup() {
Serial.begin(9600);
}

void loop() {
if (Serial.available() > 0) {
char karakter = Serial.read();
Serial.print(karakter);
}
}
 

Setelah serial monitor terbuka, Anda bisa mengetik “PascalRobotik” lalu klik tombol send
maka diperoleh hasil seperti berikut:

55
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

selanjutnya,  jika  tulis  “Arduino”  dimasukkan  dengan  cara  yang serupa diatas, diperoleh hasil 


seperti berikut: 

Membaca Bilangan Dari Serial Monitor 


Objek  ​serial  memiliki  dua  fungsi  anggota  berbeda  yang  ditunjukkan  untuk  membaca  data 
bilangan, yaitu: 

● paraseInt()​ (berguna untuk membaca data bilangan bulat). 

56
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

● parseFloat()​ (berguna untuk membaca data bilangan riil).

Sketsa : bacaInteger.ino
void setup() {
Serial.begin(9600);
}

void loop() {
if (Serial.available()) {
int bilangan = Serial.parseInt();
Serial.println(bilangan);
}
}
 

Pada contoh ini, 

int bilangan = Serial.parseInt();

Digunakan  untuk  mendeklarasikan  bilangan  sebagai  variabel  bertipe  int  (yang  digunakan 
untuk  menampung  bilangan  bulat)  dan  kemudian  variable  ini  diisi  dengan  bilangan  bulat 
yang dibaca melalui ​Serial.parseInt().

Hasilnya  seperti  berikut  jika  ​Newline  disetel  di  Serial  Monitor  dan  data  123  dimasukan  di 
Serial Monitor. 

Sketsa : bacaFloat.ino
void setup() {
Serial.begin(9600);
}

void loop() {

57
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

if (Serial.available()) {
float bilangan = Serial.parseFloat();
Serial.println(bilangan);
}
}

Pada contoh ini,

float bilangan = Serial.parseFloat();

Digunakan untuk mendeklarasikan bilangan sebagai variabel bertipe float (yang


menampung bilangan riil) dan kemudian variable ini diisi dengan bilangan yang dibaca
melalui ​Serial.parseFloat()

Contoh berikut memperhatikan hasil setelah angka 123.4 dimasuk​an.

Mengendalikan LED Dengan Komunikasi Serial 


Mula-mula,  angka  inputan  yang  dikirim  dari  komputer  kita  ke  Arduino  melalui  serial monitor 
yang  kemudian  dibaca  oleh  Arduino.  Lalu,  inputan  tersebut  dibandingkan.  Jika  data  yang 
dikirim  adalah  angka  1  maka  LED  menyala.  Jika  yang  dikirim  angka  2  maka  LED 
dipadamkan. 

Buatlah rangkaian nya seperti berikut: 

58
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Sketsa : controlled.ino
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
while (!Serial);

Serial.println("Input 1 untuk menyalakan LED dan 2 untuk mematikan");


}

void loop() {
if (Serial.available()) {
int state = Serial.parseInt();

if (state == 1) {
digitalWrite(13, HIGH);
Serial.println("Perintah diterima, LED menyala");
}

if (state == 2){
digitalWrite(13, LOW);
Serial.println("Perintah diterima, LED mati");
}
}
}
 

Lalu setelah sketsa berhasil di compile dan diunggah, bukalah serial monitor dan masukan 
angka 1 atau 2. 

59
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Mengendalikan LED Dengan Tombol 


Seperti  yang  telah  dijelaskan  di  awal  bab  bahwa  kita  perlu  sebuah  alat  input  untuk 
melakukan  trigger  terhadap  Arduino,  kita  akan  mencoba  mempraktekannya  dengan 
menggunakan tombol atau kita bisa menyebutnya Push Button. 

Anda  bisa  menggunakan  modul  tombol  untuk  mempermudah  perwujudannya.  Modul  ini 
mengandung  tombol  tekan  dan  komponen  lain  seperti  resistor  sehingga  Anda  bisa 
menggunakan  modul  ini  tanpa  perlu  menyediakan  resistor 
tambahan. 

Modul  ini  dikenal  dengan  sebutan  modul  push  button  atau 


KY-004  buatan  keyes.  Namun,  secara  prinsip,  Anda  bisa 
menggunakan  modul  buatan  vendor  mana  saja.  Hal  ini 
penting  yang  dilakukan  adalah  mengetahui  isyarat  digital 
yang dibangkitkan oleh tombol sewaktu tombol ditekan. 

Mari  kita  praktekkan  untuk  mengetahui  isyarat  digital  yang  dihasilkan  oleh  modul  tombol 
ketika  ditekan.  Rangkaian  yang  perlu  disusun  kalau  menggunakan  model  KY-004  adalah 
seperti berikut:  

60
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Sketsa : ujiTombol.ino
const int PIN_TOMBOL = 3;
const int PIN_LED = 2;

void setup() {
pinMode(PIN_TOMBOL, INPUT);
pinMode(PIN_LED, OUTPUT);
}

void loop() {
int keadaanTombol = digitalRead(PIN_TOMBOL);
digitalWrite(PIN_LED, keadaanTombol);
}
 

Kita  lihat  pada  kode  program  ​digitalRead(PIN_TOMBOL); ​yang  berarti  bahwa  kita 
memerintahkan  Arduino  untuk  membaca  nilai  sinyal  digital  dari  pin  tombol  yaitu  pin  3. 
Dimana sinyal digital ini berupa 0 atau 1. 

Setelah  Arduino  membaca  sinyal  digital  tersebut  lalu  pada  kode  program 
digitalWrite(PIN_LED, keadaanTombol); ​yang  berarti  bahwa  Arduino  memberikan 
sinyal  digital  pada  pin  led  yaitu  pin  2  sesuai  dengan variabel PIN_TOMBOL. ​Jika pin tombol 
ditekan  (bernilai  1)  maka  pin  led  pun  bernilai  1,  jika  tidak  ditekan  (bernilai  0)  maka  pin  led 
pun bernilai 0. 

Untuk  data  input  yang  berupa  analog  maka  kita  akan  menggunakan  perintah 
analogRead();​. Ini akan kita bahas kembali nanti. 

   

61
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pemrograman Arduino 

BAB IV 
 
Ikhtisar Materi 
 
Pada  materi  ini  Anda  akan  dikenalkan  dengan  dasar-dasar  cara 
memprogram  di  Arduino  IDE  dan  perintah-perintah  pada  bahasa 
pemrograman  Arduino  yang  menjadi  dasar  pemrograman  di  Arduino 
IDE.  Sekaligus  mempraktekannya  menggunakan  salah  satu  inputan 
ke Arduino. 
 
Pelajaran 
 
Syarat Pengetahuan 
- Pengetahuan Mengenai Variabel dan Tipe Data 
- Pernah Mencoba Salah Satu Bahasa Pemrograman 
 
 
Bahan 
 
Perangkat Aksesoris Bahan Lain 
Arduino UNO Resistor 220​Ω - 
Kabel USB Kabel Jumper 
Komputer LED 
Push Button 
 
Deskripsi 
 
Tujuan Belajar 1. Mengenal dasar pemrograman 
 
 
Kosa Kata 
 
programming 
sketsa, arduino 
struktur kontrol   

62
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Seperti  yang  sudah  dijelaskan  sebelumnya  bahwa  Arduino  ini  adalah  perangkat 
pengembangan  yang  terdiri  dari  perangkat  lunak  dan  perangkat  keras  dimana  pada  sisi 
perangkat  keras,  Arduino  berdasar  pada  Wiring  (​http://www.wiring.org.co/​),  sebuah  papan 
pengembangan  seperti  hal  nya  Arduino  dan  pada  sisi  perangkat lunak Arduino IDE berdasar 
pada  Processing  (​https://processing.org/​),  sebuah  perangkat  lunak  dan  bahasa  untuk 
mempelajari  mengenai  pemrograman  dalam  konteks  seni  visual.  Lalu  pada  Arduino  IDE 
sendiri  mendukung  bahasa  C  dan  C++  dengan  tambahan  aturan  khusus  mengenai  struktur 
kode  nya  dimana  bahasa  pemrograman  inilah  yang  kita  namakan  dengan  ​Arduino 
Programming  Language  (Bahasa  Pemrograman  Arduino),  jadi  bahasa yang digunakan untuk 
memprogram Arduino menggunakan Arduino IDE adalah bahasa Arduino. 

Komentar 
Simbol  //  adalah  simbol  komentar.  Semua  kode  program  yang  dimulai  dengan  simbol 
tersebut  hingga  akhir  baris  diperlakukan  sebagai  komentar.  Komentar  adalah  keterangan di 
dalam  sketsa  yang  ditujukan  untuk  memberikan  penjelasan.  Dalam  praktiknya,  komentar 
dapat  digunakan  untuk  mematikan perintah-perintah tertentu selama pengembangan sketsa 
dilakukan. Sebagai contoh, ujilah sketsa berikut: 

Sketsa : komentar.ino
void setup() {
Serial.begin(9600);
//Serial.println("Ini tidak dieksekusi");
Serial.println("Ini diekseskusi");
}

// ini adalah komentar

void loop() {

}
 

63
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Symbol  //  di  depan  ​Serial.println(“Ini adalah komentar”);  membuat 


Serial.println()  tersebut  diperlakukan  sebagai  komentar,  bukan  sebagai  perintah.  Jika 
tanda // dibuang, akan diperoleh hasil seperti berikut: 

Hal ini dikarenakan komentar tidak akan di compile oleh Arduino IDE, melainkan
akan diabaikan sehingga komentar ini hanya berguna bagi kita yaitu pengembang
untuk menguji dan memberi catatan tersendiri bagi kita.

64
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Tipe Data 
Tipe  data  ini  dapat  kita  katakan sebagai himpunan dari semua data. Data apapun bentuknya 
dan  bagaimanapun  nilai nya maka memiliki jenis atau tipe. Contohnya dalam keseharian kita 
mengenal  bilangan  bulat  digunakan  pada  harga  barang,  Rp.  3.500,  digunakan  pada  data 
jumlah  buku  (jumlah  buku  ada  6  buah).  Atau  ada  juga  data  bilangan riil seperti ukuran berat 
56,4 Kg, ukuran kecepatan 45,3 Km/Jam, dll.  

Di  Arduino  dan  pemrograman  lain  tipe  data  digunakan  untuk  menentukan  jenis  data  dan 
jangkauan  nilai  yang  dapat  disimpan  dalam  memori.  Ketika  kita  menggunakan  tipe  data 
char ​sebagai  contoh  maka  data  yang  dapat  disimpan  berupa  karakter  seperti  ‘A’,  ’b’,  ’*’, ‘9’, 
dsb.  Ketika  tipe  data  ​int  digunakan  nilai  yang  disimpan  berupa  bilangan  bulat  seperti  5, 
2342, 946, -20, dsb. 

Nah,  Arduino  menyediakan  sejumlah  tipe  data.  Kita  dapat  memilih  yang  paling  tepat  untuk 
menyimpan atau memproses data. Tipe data yang perlu kita kenali adalah seperti berikut: 

Tipe Data  Keterangan  Kebutuhan 


Memori 

boolean  Tipe data yang hanya memiliki 2 kemungkinan yaitu  1 byte 


True​ atau F
​ alse 

char  Menampung data dengan tipe karakter  1 byte 

int  Menampung data bilangan bulat dari -32768 sampai  2 byte 


dengan 32767 

unsigned int  Menampung data bilangan bulat dari 0 sampai  2 byte 


dengan 65535 

long  Menampung data bilangan bulat -2147483648  4 byte 


sampai dengan 2147483647 

unsigned long  Menampung data bilangan bulat -2147483648  4 byte 


sampai dengan 2294967295 

float dan  Menampung data bilangan riil (pecahan).  4 byte 


double 

65
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Kita  juga  perlu  mengenal  perbedaan Angka dan Karakter (Number dan String). Angka adalah 


data  yang  dapat  diolah,  sedangkan  karakter  data  yang  dapat  diolah  namun  tidak  memiliki 
karakteristik angka. Lihat contoh berikut: 
1 + 1 = 2

Hasil nya adalah 2 karena 1 dan 1 adalah angka. 

“1” + “1” = 11

Hasilnya adalah 11 karena “1” dan “1” adalah karakter. Sama seperti contoh berikut ini: 

“pergi” + “ke” + “pasar” = pergikepasar

Lalu  kenapa  tidak  ada  spasi  disana?  Hal  itu  karena  dalam  karakter  yang  kita  tambahkan 
tersebut tidak ada karakter spasi, kecuali: 

“pergi “ + “ke” + “ “ + “pasar” = pergi ke pasar

Variabel 
Variabel  adalah  suatu  tempat  yang  digunakan  untuk  menyimpan  data  dan  nilai  yang  dapat 
diubah  sewaktu-waktu  ketika  sketsa  dieksekusi.  Bayangkan  sebuah  gelas,  gelas  tersebut 
hanya  boleh  digunakan  untuk  diisi  dengan  air  yang  cair  (tidak  boleh  batu,  tidak  boleh  pasir, 
tidak  boleh  besi,  tidak  boleh es). Kita beri nama gelas tersebut dengan ​gelasKaca. Dalam hal 
ini  gelas  adalah  suatu  variabel  untuk  menampung  air,  gelasKaca  adalah  nama  variabel, dan 
air  adalah  tipe  data.  Air  yang  ada  dalam  gelas  ini  bisa  10ml, 100ml, 1L. 1,6L, dst. Jumlah air 
ini lah nilai atau besar dari data nya. 

Sama  seperti  pada  pemrograman,  variabel  tersebut  memiliki  tipe  data,  nama  variabel,  dan 
nilai  yang  ditampung  variabel  tersebut.  Nantinya  variabel ini bisa digunakan dan diubah nilai 
nya  pada  saat  program  dieksekusi.  Sebelumnya  kita  pernah  menggunakan  variabel  dalam 
praktek kita yaitu seperti PIN_LED_MERAH, PIN_LED_KUNING, PIN_LED_HIJAU, dll. 

Pemberian  nama  variabel  memang  tidak  boleh  dilakukan  sembarangan.  Nama  variabel 
harus memenuhi ketentuan-ketentuan berikut. 

66
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

1. Nama  variable  hanya  dapat  diawali  dengan  huruf  atau  garis  bawah  Sebagai 
contohnya,  ​1resistor  tidak  memenuhi  aturan  ini.  Tapi  ​satuResistor ​memenuhi 
aturan ini. 
2. Nama  variabel  boleh  mengandung  huruf,  digit,  dan  garis  bawah  (_)  pada  karakter 
kedua  dan  seterusnya  Sebagai  contoh,  ​nama barang  ​tidak  memenuhi  aturan  ini 
karena  mengandung  spasi.  Begitu  juga  ​id#  tidak  memenuhi  aturan  ini  karena 
mengandung simbol #.  
3. Huruf  kecil  dan  kapital  dibedakan  (​case  sensitive​).  Dengan  demikian,  ​namaKomponen 
dan ​namakomponen​ adalah dua nama variabel yang berbeda. 
 

Deklarasi Variabel 
Deklarasi variabel dapat berupa seperti: 

● char x;
● char x= “aku”;

Pada  contoh  pertama,  variabel  x  bertipe  ​char  dan  tidak  ada  pemberian  nilai  ke  variabel 
tersebut.  Pada  keadaan  seperti  ini,  nilai  variabel  x  pada  saat  itu  tidak  ditentukan.  Jadi, 
nilainya  bisa  berupa  apa  saja.  Pada  bentuk kedua, variabel x dideklarasikan bertipe char dan 
diberi nilai awal berupa “​aku​”. Artinya isi dari variabel x adalah “​aku​” ;  

Bentuk seperti 

Char x=’a’;

Identik dengan 

Char x;

x=’a’;

Variabel  yang  dideklarasikan  di  luar  fungsi  seperti  ​setup()  maupun  ​loop()  dan  biasanya 
diletakkan  sebelum  kedua fungsi tersebut dinamakan ​variable global​. Variabel global adalah 
variabel  yang  dapat  diakses  dimana  saja,  termasuk  di  ​loop()​.  Sebaliknya,  ​variable  local 
adalah variabel yang dideklarasikan dalam suatu fungsi. 

67
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Variabel  global  diperlukan  jika  nilainya  ditunjukan  agar  tetap  dikenali  dari  satu pemanggilan 
loop()  ke  pemanggilan  berikutnya.  Pada  contoh berikut, nilai pencacah dapat dinaikan oleh 
loop()​.

long int pencacah = 0;

void setup() {
Serial.begin(9600);
}

void loop() {
pencacah++;

Serial.println(pencacah);
delay(1000);
}
 

Pada sketsa ini, 

pencacah++;

Digunakan untuk menaikkan nilai di pencacah sebesar 1. Contohnya hasil di Serial Monitor: 

68
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Contoh penggunaan variabel lokal:

Sketsa : lokal.ino
void setup() {
Serial.begin(9600);
}

void loop() {
long int pencacah = 0;

pencacah++;

Serial.println(pencacah);
delay(1000);
}

Hasilnya seperti berikut: 

69
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Kapan  ​const  digunakan  sebagai  pengganti  variabel?  Kita  telah  mencoba  untuk  membuang 
const  pada  sketsa-sketsa  contoh  di  modul  sebelum  ini.  ternyata,  hasilnya  sama  saja.  Ya, 
memang  begitu.  Kata  kunci  ​const  digunakan  untuk  menegaskan  bahwa  nama  yang 
digunakan  ​menyatakan  suatu  konstanta,  bukan  variable​.  Konstanta  berarti  nilai  yang  tidak 
dapat  diubah  sewaktu-waktu  di  sketsa  dieksekusi.  Sebagai  konsekuensi  penambahan  kata 
kunci const, isi nama tersebut tidak dapat diubah. 
 

Sistem Bilangan 
Arduino  mengizinkan  bilangan  ditulis  dalam  bentuk  desimal  (sistem  bilangan  berbasis  10) 
oktal  (sistem  bilangan  berbasis  8),  heksadesimal  (sistem  bilangan  berbasis  16)  ataupun 
biner  (sistem  bilangan  berbasis  2).  Nah  dasar  penulisan  bilangan  dalam  suatu  sistem 
bilangan adalah seperti berikut. 
● Bilangan  yang  ditulis  dengan  awalan  berupa  angka  merupakan  konstanta  dalam 
sistem  ​desimal​.  Angka  yang  digunakan  dapat  berkisar  dari  0  dan  9.  Contohnya  34 
dan 123.4. 
● Bilangan  yang  ditulis  dengan  awalan  0x  dan  0X  merupakan  konstanta  dalam  sistem 
heksadesimal​.  Angka  yang  digunakan  dapat  berkisar  dari  0  hingga  9  dan  huruf  A 
hingga F. Contohnya : 0x34 dan 0xAF. 

70
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

● Bilangan  yang  ditulis  dengan  awalan  0  merupakan  konstanta  dalam  sistem  ​oktal​. 
Angka yang digunakan dapat berkisar dari 0 hingga 7. Contohnya : 023 dan 017. 
● Bilangan  yang  ditulis  dengan  awalan  b  atau  B  merupakan  konstanta  dalam  sistem 
biner​. Angka yang digunakan dapat berupa 0 dan 1. Contohnya : b1001. 
 

Operator Aritmatika 
Untuk  kepentingan  menangani  operasi  aritmatika,  Arduino  menyediakan  operator  +,  -  ,  *  ,  /  , 
dan  %.  Kelima  operator  tersebut  dapat  digunakan  untuk  bilangan  bulat  maupun  riil.  Berikut 
adalah makna kelima operator tersebut: 

Operator  Keterangan  Contoh 

+  Menjumlahkan operand pertama dengan operand  +3 -> negatif tiga 


kedua jika diletakan di antara kedua operand   
tersebut, sedangkan jika diletakan di depan satu  3 + 2 -> lima 
operand maka menyatakan bilangan tersebut adalah 
bilangan positif 

-  Pengurangan operand pertama dengan operand  -3 -> negatif tiga 


kedua jika diletakan di antara kedua operand   
tersebut, sedangkan jika diletakan di depan satu  3 - 2 -> satu 
operand maka menyatakan bilangan tersebut adalah 
bilangan negatif 

*  Mengalikan operand pertama dengan operand  3 * 2 -> enam 


kedua 

/  Membagi operand pertama dengan operand kedua  3 / 2 -> satu koma 


lima 

%  Menghitung sisa bagi dari operand pertama  3 % 2 -> satu 


terhadap operand kedua 
 

Pada  operator  +  ,-  ,*  ,  dan  /,  jika  kedua  operand  bertipe  bilangan  bulat,  hasilnya  berupa 
bilangan bulat. Jika terdapat operand yang bertipe float, hasilnya bertipe float. 

71
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Operator  sisa  pembagian  berguna  untuk  memperoleh  sisa  pembagian  bilangan  bulat. 
Sebagai  contoh,  3  %  2  memberikan  1.  Nilai  1  merupakan  nilai  sisa  pembagian  3  dangan  2. 
Jika x mencatat hasil pembagian a dengan b, maka a % b menghasilkan a – b * x. 

Fungsi  itu  suatu  nama  yang  menyatakan  sejumlah  perintah.  Jika  nama  fungsi  dipanggil, 
perintah-perintah  yang  berada  di  dalamnya  dijalankan  dan  biasanya  satu  nilai  akan 
dikembalikan. Nilai inilah yang disebut nilai balik. 

Berikut adalah sejumlah fungsi yang berguna untuk menangani operasi aritmatika: 

Fungsi  Keterangan 
abs(x)  Fungsi  ini  memberikan  nilai  balik  berupa 
nilai  mutlak  bilangan  argumennya.  Nilai 
mutlak berupa bilangan positif. 
constrain(x,a,b)  Fungsi ini memberikan nilai balik berupa: 
● x  jika  x  berada  dalam  jangkauan  a 
dan b. 
● a jika x lebih kecil daripada a. 
● b jika x lebih besar dari pada b. 

map(x,minA,maxA,minB,maxB)  Fungsi  ini  memberikan  nilai  balik  berupa 


hasil  konversi  x  yang  berada  dalam 
jangkauan  minA  dan  maxA  ke  nilai  yang 
berada dalam jangkauan minB dan maxB. 
max(a,b)  Fungsi  ini  memberikan  nilai  balik  berupa 
nilai terbesar dari kedua bilangan a dan b. 
min(a,b)  Fungsi  ini  memberikan  nilai  balik  berupa 
nilai terkecil dari kedua bilangan a dan b. 
pow(a,b)  Fungsi untuk memperoleh a​b​. 
sqrt(x)  Fungsi untuk memperoleh akar kuadrat x. 

72
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Prioritas Pada Aritmatika 


Prioritas  1  dan  2  yang  disertakan  pada  tabel  yang  berisi  daftar  operator  aritmatika 
menyatakan  urutan  pengerjaan  kalau  dalam  suatu  ekspresi terdapat lebih dari satu operator 
yang berbeda. Sebagai contohnya, terdapat ekspresi: 

3 + 2 * 5

Berapakah  hasil  ekspresi  tersebut?  Kuncinya terletak pada prioritas + dan *. Karena prioritas 


*  lebih  tinggi  daripada  +,  maka  2  *  5  akan  dikerjakan  terlebih  dahulu.  Maka  akan  dikerjakan 
seperti ini ​(2 * 5) + 3​. 

Jika  prioritas  dua  operator  atau lebih adalah sama, pengerjaannya dimulai dari kiri ke kanan. 


Terdapat ekspresi seperti ini: 

3 * 2 % 4

Dengan  demikian,  ​3 * 2 % 4  akan  dikerjakan  sebagai  ​(3 * 2) % 4. Hasilnya adalah ​6 %


4​ atau 2
​ ​. 

Increment dan Decrement 


Perhatikan pernyataan berikut:
x = x+1;

Pernyataan tersebut digunakan untuk menaikan nilai pada variabel x sebesar 1. 

Di Arduino sering dijumpai pertanyaan semacam : 

x++;

y--;

pernyataan  ​x++​;  identik  dengan  ​x = x + 1​;​,  sedangkan  pernyataan  ​y--​;  identik  dengan ​y
= y – 1​. 

73
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Terdapat  operator  lain  seperti  operator  +=  yang  merupakan  salah  satu  operator  penugasan 
majemuk. Pernyataan x
​ +=1​ identik dengan x
​ = x + 1​; 

Tabel  berikut  mencantumkan  seluruh  operator  penugasan  majemuk  yang  berhubungan 


dengan operasi aritmatika: 

Operator  Keterangan  Contoh 

++  Increment  x++ 


Artinya tambahkan nilai x sebesar 1 

- -  Decrement  x- - 
Artinya kurangi nilai x sebesar 1 

+=  Penjumlahan  x += y 
gabungan  Artinya x = x + y 

-=  Pengurangan  x -= y 
gabungan  Artinya x = x - y 

*=  Perkalian  x *= y 
gabungan  Artinya x = x * y 

/=  Pembagian  x /= y 
gabungan  Artinya x = x / y 

&=  AND Gabungan  x &= y 


(Biner)  Artinya x = x & y 

|=  OR Gabungan  x |= y 
(Biner)  Artinya x = x OR y 
 

Ekspresi Boolean 
Ekspresi  Boolean  adalah  ekspresi  yang  menghasilkan  nilai  benar  (​true​)  atau  salah  (​false​),  0 
atau  1,  ​HIGH  atau  ​LOW​,  dst.  Ekspresi  seperti  ini  sering  digunakan  pada  pengambilan 
keputusan  dan  perulangan  (akan  dibahas  di  materi selanjutnya). Operator Boolean biasanya 
melibatkan operator perbandingan dan operator logika. 

74
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Operator Pembanding 
Operator  pembanding  atau  kadang  dinamakan  operator  relasional  digunakan  untuk 
melakukan  pembandingan.  Arduino  menyediakan  sejumlah  operator  pembanding  seperti 
yang tercantum pada tabel berikut: 

Operator  Keterangan  Contoh 

==  Menyatakan 2 operand yang  posisi_servo == 60 


nilai nya sama  menyatakan apakah posisi servo ini 60 
derajat 

!=  Menyatakan 2 operand tidak  posisi_servo != 60 


sama nilai nya  menyatakan apakah posisi servo ini bukan 
60 derajat 

<  Menyatakan operand pertama  posisi_servo < 60 


lebih kecil dari operand kedua  menyatakan apakah posisi servo ini kurang 
dari 60 derajat 

>  Menyatakan operand pertama  posisi_servo > 60 


lebih besar dari operand  menyatakan apakah posisi servo ini lebih 
kedua  dari 60 derajat 

<=  Menyatakan operand pertama  posisi_servo <= 60 


lebih kecil atau sama dengan  menyatakan apakah posisi servo ini kurang 
dengan operand kedua  dari atau sama dengan 60 derajat 

>=  Menyatakan operand pertama  posisi_servo >= 60 


lebih besar atau sama dengan  menyatakan apakah posisi servo ini lebih 
operand kedua  dari atau sama dengan 60 derajat 

Operator Logika
Operator  logika  adalah  operator  yang  dikenakan  pada  operand  bertipe  ​Boolean​.  Arduino 
memiliki  tiga  jenis  operator  logika,  yaitu  &&,  ||,  dan  !.  Operator  && dinamakan operator “dan” 
dan operator || dinamakan “atau”. Adapun operator ! dinamakan operator “bukan”. 

Operator  &&  dan  ||  melibatkan  dua  operator.  Tabel  berikut  memperlihatkan  sifat  operasi 
pada operator && dan ||. 

Ekspresi 1  Ekspresi 2  Hasil ||  Hasil && 


75
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Salah  Salah  Salah  Salah 


Salah  Benar  Benar  Salah 
Benar  Salah  Benar  Salah 
Benar  Benar  Benar  Benar 

Struktur Kontrol 
Struktur  kontrol  adalah  susunan  perintah  yang  menentukan  cara  memperlakukan 
perintah-perintah  tersebut  untuk  dieksekusi.  Secara  prinsip,  terdapat  tiga  jenis  struktur 
kontrol,  yaitu:  1).  Sekuensial,  2).  Seleksi,  3).  Perulangan.  Gambar  berikut  menunjukan 
perbedaan ketiga struktur kontrol tersebut secara visual: 

Bisa  tidaknya  untuk  menentukan  urutan  perintah  dalam  struktur  kontrol  sekuensial 
ditentukan  oleh tujuan yang terkandung di dalam perintah-perintah tersebut. Sebagai contoh, 
dikehendaki  untuk  memberikan  nilai  1  ke  A,  2  ke  B  dan  3  ke  C.  Pada  kasus  ini,  urutan 
perintah tidak penting. Anda boleh menuliskan perintah seperti berikut: 

A = 1; 

76
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

B = 2; 

C = 3; 

Namun, menuliskan perintah tidak seperti berikut pun sama saja: 

B = 2; 

C = 3; 

A = 1; 

Tidak demikian halnya dengan deretan tiga pernyataan berikut: 

Tmp = A; 

A = B; 

B = Tmp; 

Tiga  pernyataan  ini  digunakan  untuk  menukar  isi  variabel  A  dan  B.  Apabila  urutan  perintah 
diubah, A dan B tidak bisa dipertukarkan. 

Pernyataan IF 
Arduino  menyediakan pernyataan ​if​, ​if…else​, dan ​switch untuk menangani seleksi. Selain 
itu, terdapat pula satu operator yang digunakan untuk menangani seleksi. 

Bentuk i
​ f​ ​yang paling sederhana adalah seperti berikut; 

if(kondisi) {

Pernyataan-pernyataan;

Dalam hal ini, kondisi berupa ekspresi Boolean. 

Untuk mempraktikkan penggunaan ​if​ buat sketsa berikut ini: 

Sketsa : if.ino

77
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

void setup() {
Serial.begin(9600);

Serial.println("Masukkan tegangan (0-5V):");


}

void loop() {
if (Serial.available()) {
float tegangan = Serial.parseFloat();
String keterangan = "Digital = 1";
if (tegangan < 2.5)
keterangan = "Digital = 0";

Serial.print("Tegangan: ");
Serial.print(tegangan);
Serial.println(" volt");
Serial.println(keterangan);

Serial.println("\Masukkan tegangan (0-5V):");


}
}
 

Pada sketsa ini, 

if (Serial.available())

digunakan  untuk  memeriksa  keberadaan  data di port serial yang belum dibaca oleh Arduino. 


Jika data tersedia, kode yang berada di antara { dan } akan dijalankan. 

Pernyataan  berikut  digunakan  untuk  membaca  nilai  tegangan  yang  dimasukkan  dari  Serial 
Monitor: 

float tegangan = Serial.parseFloat();

78
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pernyataan: 

String keterangan = "Digital = 1";

digunakan untuk mengisi string ​“Digital = 1” ​ke variabel ​keterangan​. Lalu, pernyataan 

if (tegangan < 2.5)

keterangan = “Digital = 0”;

akan  mengubah  isi  keterangan  menjadi “Digital = 0”  hanya  kalau  nilai  ​tegangan  lebih 
kecil  daripada  ​2,5​.  Sekiranya  nilai  tegangan  tidak  lebih  kecil  dari  ​2,5​,  isi  keterangan  tetap 
berupa ​“Digital = 1”​. 

Contoh hasil pengujian dengan memasukan bilangan 3.5, 2.1, dan 2.5 secara berturut-turut
di Serial Monitor:

Pernyataan IF … ELSE
Pernyataan  ​if..else  digunakan  untuk  memilih salah satu dari dua kemungkinan yang akan 
dieksekusi. Bentuk penggunaannya seperti berikut: 

if (kondisi) {

Pernyataan-pernyataan A;

} else {

79
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pernyataan-pernyataan B; }

Sebagai contoh, kasus untuk menentukan isi keterangan pada sketsa​ if ​yang berupa 

String keterangan = “Digital = 1”;

If (tegangan < 2.5) {

Keterangan = “Digital = 0”; }

Dapat diselesaikan dengan if…else dengan menuliskan pernyataan berikut: 

If (tegangan < 2.5) {

Keterangan = “Digital = 0”;

Else

Keterangan = “Digital 1”; }

Inilah contoh sketsanya: 

Sketsa : if else.ino
void setup() {
Serial.begin(9600);

Serial.println("Masukkan tegangan (0-5V):");


}

void loop() {
if (Serial.available()) {
float tegangan = Serial.parseFloat();
String keterangan;
if (tegangan < 2.5)
keterangan = "Digital = 0";
else
keterangan = "Digital = 1";

Serial.print("Tegangan: ");

80
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Serial.print(tegangan);
Serial.println(" volt");
Serial.println(keterangan);

Serial.println("\Masukkan tegangan (0-5V):");


}
}

Contoh hasil pengujian dengan memasukan bilangan 3.5, 2.1 dan 2.5 secara berurutan di
Serial Monitor:

Kasus Banyak Pilihan 


Kalau  kemungkinan  yang  akan  ditangani  melebihi dua, ​if…else bertingkat biasa digunakan 
untuk menyelesaikannya. Silakan lihat contoh berikut: 

Sketsa : tigakemungkinan.ino
void setup() {
Serial.begin(9600);

81
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Serial.print("Masukkan nilai analog (0-1023): ");


}

void loop() {
if (Serial.available()) {
int nilaiAnalog = Serial.parseInt();
Serial.println(nilaiAnalog);

if (nilaiAnalog >= 700)


Serial.println("Media kering");
else
if (nilaiAnalog >= 300)
Serial.println("Media cukup basah");
else
Serial.println("Media basah");

Serial.print("\nMasukkan nilai analog (0-1023): ");


}
}

Pada  contoh  ini,  jika  ​nilaiAnalog >=700  menghasilkan  ​true​,  dimana  pernyataan 
Serial.println("Media kering"); ​dijalankan.  Jika  hasilnya  berupa  ​false​,  bagian  ​if
berikutnya  akan  dijalankan.  Dalam  hal  ini,  jika  ​nilaiAnalog >= 300  bernilai  ​true​, 
pernyataan  ​Serial.println("Media cukup basah");  dijalankan.  Jika  bernilai  ​false​, 
pernyataan ​Serial.println("Media basah"); ​dijalankan. 

Contoh  hasil  pengujian  dengan  memasukan  bilangan  1000,  400  dan  200  secara 
berturut-turut di Serial Monitor: 

82
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Switch 
Pernyataan  ​switch  digunakan  untuk  menangani  pemilihan  terhadap  satu  pilihan  diantara 
​ witch:​  
banyak pilihan. Bentuk penggunaan s
Switch (ekspresi) {
Case Nilai A:
Pernyataan-pernyataanA;
Break;
Case Nilai B:
Pernyataan-pernyataanB;
Break;
….
Case Nilai…:
Pernyataan-pernyataan…;
Break;
Default:
Pernyataan-pernyataan…; }

Apabila  nilai  ekspresi  dengan  Nilai  A,  maka  pernyataan-pernyataan  A  sampai  dengan  break 
dijalankan.  Dalam  hal  ini,  break  akan  mengakhiri  ​switch​.  Jika  ekpresi  tidak  berupa  Nilai  A, 
Pernyataan-pernyataanB  hingga  break  akan  dijalankan  sekiranya  jika  ekspresi bernilai sama 
dengan  Nilai  B  dan  break  menyebabkan  ​switch  berakhir.  Hal  ini  dilakukan  terus-menerus 

83
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

hingga  nilai  terakhir.  Jika  pada  ​case  terakhir,  nilai  ekspresi  tidak  cocok,  bagian  ​default 
akan dieksekusi. 
 
Contoh berikut menggambarkan penggunaan switch: 

void setup() {
Serial.begin(9600);

Serial.print("Masukkan angka (1-5): ");


}

void loop() {
if (Serial.available()) {
int angka = Serial.parseInt();
Serial.println(angka);

switch(angka) {
case 1:
Serial.println("Transistor");
break;
case 2:
Serial.println("Resistor");
break;
case 3:
Serial.println("Diode");
break;
case 4:
Serial.println("Kapasitor");
break;
case 5:
Serial.println("Potensiometer");
break;
default:

84
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Serial.println("--- Pilihan salah!");


}

Serial.print("\Masukkan angka (1-5): ");


}
}

Sketsa  ini  akan  membaca  bilangan  bulat  yang  dimasukan  dari Serial Monitor. Lalu, bilangan 


yang dibaca akan dicocokkan dengan salah satu angka yang ditangani melalui ​switch​. 

Contoh  hasil pengujian dengan memasukkan bilangan 1, 2, 3, 4, 5 dan 6 secara berturut-turut 
di Serial Monitor: 

Operator Penanganan Seleksi


Operator  di  Arduino  yang  ditujukan  untuk  menangani  seleksi  mempunyai  bentuk  pemakain 
seperti berikut: 

x ? a : b

85
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

dalam  hal  ini,  x  berupa  ekspresi  Boolean.  Adapun  a  dan  b  menyatakan  dua  nilai  yang  salah 
satu  dari  keduanya  menjadi  nilai  balik  ungkapan  ​x ? a : b​.  Dalam  hal  ini,  hasil  ungkapan 
​ rue​ atau b bernilai ​false​. 
tersebut berupa a jika ​x​ bernilai t

Contohnya: 

Sketsa : operatorBerkondisi.ino
void setup() {
Serial.begin(9600);

Serial.println("Masukkan tegangan (0-5V):");


}

void loop() {
if (Serial.available()) {
float tegangan = Serial.parseFloat();

String keterangan = tegangan < 2.5 ? "Digital = 1" :


"Digital = 0";

Serial.print("Tegangan: ");
Serial.print(tegangan);
Serial.println(" volt");
Serial.println(keterangan);

Serial.println("\nMasukkan tegangan (0-5V):");


}
}

Contoh hasil pengujian dengan memasukan bilangan 3,5, 2.1, dan 2.5 secara berturut-turut
di Serial Monitor:

86
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Perulangan 
Arduino  menyediakan  pernyataan ​while​, do..while dan ​for​. Anda bisa memilih salah satu 
yang  paling  tepat  untuk  menangani  kasus  yang  Anda  selesaikan.  Namun,  sebelum 
melakukan hal itu, Anda perlu mengetahui mencoba masing-masing terlebih dahulu. 

While 
Bentuk pemakaian while: 

While (kondisi) {

Pernyataan-pernyataan;

87
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pernyataan  ini  akan  membuat  bagian  pernyataan-pernyataan  dijalankan  selama  kondisi 


bernilai  ​true​.  Dalam  hal  ini,  kondisi  selalu  akan  diuji terlebih dahulu sebelum mengeksekusi 
bagian pernyataan-pernyataan. Contoh: 

Sketsa : bilGenap.ino
void setup() {
Serial.begin(9600);

int bilangan;

bilangan = 4; // Nilai awal


while (bilangan <= 40) {
Serial.println(bilangan);
bilangan += 2;
}
}

void loop() {

}
Perintah 

while (bilangan <= 40) {


Serial.println(bilangan);
bilangan += 2;
}

akan membuat 

Serial.println(bilangan);
bilangan += 2;

dieksekusi  terus-menerus  hingga  ungkapan  bilangan  <=  40  bernilai  ​false​.  Pertama  kali,  nilai 
bilangan berupa 4 setelah pernyataan berikut dijalankan: 

88
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

bilangan = 4;

lalu,  ungkapan  bilangan <= 40  diperiksa.  Karena  saat  ini  bilangan  bernilai  4,  kondisi 
tersebut  bernilai  ​true​.  Oleh  karena  itu,  kode  yang  berada  di  dalam  {  dan  }  dijalankan. 
Akibatnya,  angka  4  dikirim  ke  port  serial  dan  nilai  ​bilangan  menjadi  6. Setelah itu, bilangan 
<= 40 ​diperiksa  kembali.  Tentu  saja,  hasilnya  ​true​.  Akibatnya,  nilai  8 dikirim ke port serial. 
Hal  ini  dilakukan  terus  menerus  sampai  suatu  ketika  bilangan  bernilai  42,  yang  membuat 
kondisi bilangan ​<= 40​ bernilai ​false​ dan mengakhiri while. 

Oleh karena itu, akan didapatkan hasil seperti berikut: 

Adapun contoh berikut digunakan untuk menampilkan bilangan genap dari 40 menuju 4:

Sketsa : deretMenurun.ino
void setup() {
Serial.begin(9600);

int bilangan;

bilangan = 40; // Nilai awal


while (bilangan >= 4) {
Serial.println(bilangan);
bilangan -= 2;
}
}

89
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

void loop() {

Perhatikan nilai awal yang diberikan adalah nilai 40 yang dilakukan oleh: 

Bilangan = 40;

Akan membuat 

Serial.println(bilangan);
bilangan -= 2;

Oleh karena itu, akan didapatkan hasil seperti berikut: 

DO .. WHILE
Bentuk pemakain Do…while: 

Do {

Pernyataan-pernyataan;

} while (kondisi);

90
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Selama  kondisi  bernilai  benar  (​true​),  kode  yang  berada  di  dalam  {  dan  }  dijalankan 
terus-menerus.  Contoh  berikut  digunakan  untuk  menampilkan  bilangan  genap  antara  4  dan 
40: 

Sketsa : bilgenap2.ino
void setup() {
Serial.begin(9600);

int bilangan;

bilangan = 4; // Nilai awal


do {
Serial.println(bilangan);
bilangan += 2;
} while (bilangan <= 40);
}

void loop() {

}
 

Adapun contoh berikut digunakan untuk menampilkan genap dimulai dari 40 hingga 4:

Sketsa : deretMenurun2.ino
void setup() {
Serial.begin(9600);

int bilangan;

91
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

bilangan = 40; // Nilai awal


do {
Serial.println(bilangan);
bilangan -= 2;
} while (bilangan >= 4);
}

void loop() {

}
 

FOR
Pernyataan for mempunyai bentuk penggunaan seperti berikut: 

For (inisialisasi; kondisi; kenaikan) {

Pernyataan-pernyataan;

Contoh berikut digunakan untuk menampilkan bilangan genap antara 4 dan 40: 

Sketsa : bilGenap3.ino
void setup() {
Serial.begin(9600);

for (int bil = 1; bil <= 10; bil++) {


if (bil == 5)
break;

Serial.println(bil);
}
}

92
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

void loop() {

Adapun contoh berikut untuk menampilkan genap dimulai dari 40 hingga 4: 

Sketsa : deretMenurun3.ino
void setup() {
Serial.begin(9600);

int bilangan;

for (bilangan = 40; bilangan >= 4; bilangan -= 2) {


Serial.println(bilangan);
}
}

void loop() { }

Break Pada Perulangan


Pernyataan  Break  dapat  digunakan  untuk  mengakhiri  perulangan  tanpa  perlu  menunggu 
kondisi pada perulangan dievaluasi. Bentuk penggunaannya: 

Break;

Untuk memahami break, buatlah contoh seperti berikut: 

Sketsa : break.ino
void setup() {
Serial.begin(9600);

for (int bil = 1; bil <= 10; bil++) {


if (bil == 5)

93
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

break;

Serial.println(bil);
}
}

void loop() {

Hasilnya berupa gambar di bawah ini:

Hal ini disebabkan pada saat bil bernilai 5, pernyataan 

If (bil == 5)

Break;

Membuat b
​ reak;​ dijalankan. Akibatnya, for berakhir sehingga angka 5 tidak pernah muncul. 

Penerapan Pada Perangkat Keras


Contoh  yang  diberikan  disini,  yakni  untuk  mengontrol  8  LED.  Dalam  hal  ini,  hanya  satu  LED 
yang  menyala  pada  setiap  saat  dan  LED  yang  dihidupkan  akan  tampak  berjalan  dari  kiri  ke 
kanan.  Nah,  sebagai  perwujudannya,  silakan  untuk  menyusun  rangkaian  berikut  terlebih 
dahulu. 

94
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Selanjutnya, pengujian dilakukan dengan menggunakan sketsa berikut: 

Sketsa : delapanLed.ino
void setup() {
for (int pin = 2; pin <= 9; pin++){
pinMode(pin, OUTPUT);
}
}

void loop() {
for (int pin = 2; pin <= 9; pin++) {
digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);
}
}

Pada ​setup() ​terdapat perintah: 

for (int pin = 2; pin <= 9; pin++)

95
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

pinMode(pin, OUTPUT);

Perintah  ini  digunakan  untuk  mengatur  mode  pin  2  hingga  9  sebagai  OUTPUT.  Tanpa  for, 
perintah yang perlu ditulis menjadi seperti berikut: 

pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);

pada ​loop()​ terdapat perintah: 

for (int pin = 2; pin <= 9; pin++) {


digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);
}

Perintah  ini  digunakan  untuk  mengatur  pin  2  hingga  9  secara  bergantian  agar  LED  yang 
terhubung  dengan  pin  yang  sesuai  dengan  variabel  pin  menyala  selama  satu  detik.  Hal  ini 
yang  membuat  LED  tampak  menyala  bergerak  dari  kiri  ke  kanan.  Tanpa  for,  Anda  harus 
menulis  kode  yang  Panjang  atau  dengan  melakukan trik tertentu. Sudah tentu, kehadiran for 
mempermudah menuangkan kode.   

96
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Objek 
Objek  adalah  bentuk  dari  suatu  kelas,  yang  dapat  mengandung  anggota  data  dan  fungsi 
anggota  (atau  secara  khusus  dinamakan  metode).  Serial  adalah  contoh  objek bawaan yang 
disediakan  oleh  Arduino,  yang  digunakan  untuk  menangani  port  serial.  Sebagai  contohnya, 
pada pemanggilan ​Serial.prntln​()​, println adalah fungsi anggota milik objek Serial. 

Sering  kali  kita  perlu  membuat  sendiri  suatu  objek  berdasarkan  kelas  yang  tersedia  di 
Arduino  atau  tersedia  karena  kita  melibatkan  suatu  pustaka.  Pada  materi  selanjutnya, Anda 
akan  mempraktekkan  penggunaan  kelas  Keypad  untuk  membentuk  objek  bernama  Keypad 
seperti berikut: 

Keypad keypad = keypad(makeKeymap(tombol),

pinBaris, pinKolom, 4, 3);

ketika Anda menuliskan perintah seperti 

string nama;

Anda  sebenarnya  membuat  objek.  Dalam  hal  ini,  nama  adalah  objek  yang  berisi  string 
kosong  dan  string  adalah  nama  kelas.  Lalu,  Anda  bisa  mengakses  jumlah  karakter  dalam 
string  kapan  saja  dengan  menggunakan  fungsi  ​length​()​.  Jadi,  ​nama.length()  akan 
menghasilkan jumlah karakter dalam objek nama. 

Fungsi 
Semua  sketsa  yang  pernah  Anda  buat  sebenarnya  selalu  melibatkan  fungsi.  Paling  tidak, 
Anda menuliskan definisi s
​ etup() ​dan l
​ oop()​. Contoh definisi fungsi: 

void setup() {

Serial.begin(9600);

97
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pada  definisi  tersebut,  void  ​setup() ​adalah  bagian  judul  fungsi  dan ​{
Serial.begin(9600); } ​adalah tubuh fungsi.

Secara umum, pendefinisian fungsi berbentuk seperti berikut: 

tipeNilaiBalik namaFungsi(daftar_argumen_jika_ada) {

pernyataan-pernyataan;

Fungsi  bawaan  ​abs  adalah  contoh  fungsi  yang  memberikan  nilai  balik  berupa  nilai  absolut 
bilangan  yang  menjadi  argumennya.  Sebagai  contoh,  ​abs(-3.5)  ataupun  ​abs(3.5)
memberikan  nilai  balik  berupa  ​3.5​. nah, pada keadaan seperti ini, tipe nilai balik ​float,​  yang 
berarti bilangan riil. 

Fungsi  yang  memberikan  nilai  balik  harus  mengandung  perintah  yang  digunakan  untuk 
menyebutkan nilai balik. Pernyataan return digunakan untuk keperluan ini. Pada kasus fungsi 
absolut, pernyataan return berupa: 

return bil < 0 ? -bil : bil;

atau 

return (bil < 0 ? -bil : bil);

perhatikan  terlebih  dahulu  ekspresi  ​bil < 0 ? -bil : bil;​.  Ekspresi  ini  melibatkan 
operator  berkondisi.  Ekspresi  ini  menghasilkan  ​-bil  sekiranya  ​bil < 0  bernilai  ​true​. 
Sebaliknya,  jika  ekspresi bil < 0  bernilai  ​false​,  nilai  baliknya  berupa  ​bil​.  Hasil  dari 
ekspresi  ​bil < 0 ? -bil : bil  inilah  yang  menjadi  nilai  balik  fungsi  absolut. Contohnya 
sketsa yang mendefinisikan fungsi ​absolut​()​: 

Sketsa : contohNilaibalik.ino
void setup() {
Serial.begin(9600);

Serial.println(absolut(-3.5));
Serial.println(absolut(3.5));
}

98
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

void loop() {

float absolut(float bil) {


return bil < 0 ? -bil : bil;
}
 

Hasil eksekusi 

Sketsa : duaArgumen.ino
void setup() {
Serial.begin(9600);

Serial.print(duplikasi('-', 10));
Serial.print("0");
Serial.print(duplikasi('>', 5));
}

99
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

void loop() {

String duplikasi(char karakter, int jumlah) {


String hasil = "";
for (int j = 1; j <= jumlah; j++)
hasil = hasil + karakter;

return hasil;
}

Perhatikan pada judul fungsi berikut: 

String duplikasi(char karakter, int jumlah)

Antara  deklarasi  dua  parameter  (argument)  dipisahkan  oleh  koma.  Pada  pemanggilan 
fungsi, kedua argument dipisahkan oleh koma. Contohnya 

Duplikasi(‘-‘, 10)

Hasil pengujian: 

Array 
Array  atau  larik  adalah  suatu  nama  yang  dapat  digunakan  untuk  menyimpan  sejumlah  data 
yang  sejenis  (setipe).  Sebagai  contohnya,  kita  memiliki  5  komponen.  Jika  masing-masing 
dicatat dalam satu variabel, diperlukan 5 variabel yang dideklarasikan sebagai berikut: 

String komponen1, komponen2, komponen3, komponen4, komponen5;

Lalu, pencatatan nama komponen dilakukan seperti berikut: 

100
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Komponen1 = ‘Transistor’;
Komponen2 = ‘Resistor’;
Komponen3 = ‘LDR’;
Komponen4 = ‘Potensiometer’;
Komponen5 = ‘Thermistor’;
Untuk  mengisikan  data  ke  array,  indeks  perlu  disertakan,  yang  ditulis  didalam  [  ].  Indeks 
berupa bilangan bulat yang dimulai dari 0. Indeks 0 menyatakan elemen pertama array. 

Contoh: 

Komponen[0] = ‘Transistor’;
Komponen[1] = ‘Resistor’;
Komponen[2] = ‘LDR’;
Komponen[3] = ‘Potensiometer’;
Komponen[4] = ‘thermistor’;

Sketsa : contohArray.ino
void setup() {
Serial.begin(9600);

// Deklarasi array
String komponen[5];

// Penugasan ke elemen array


komponen[0] = "Transistor";
komponen[1] = "Resistor";
komponen[2] = "LDR";
komponen[3] = "Potensiometer";
komponen[4] = "Thermistor";

// Perintah untuk menampilkan isi array


for (int j = 0; j < 5; j++) {
Serial.print("Indeks = ");
Serial.print(j);
Serial.print(" -> ");

101
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Serial.println(komponen[j]);
}
}

void loop() {

Hasilnya 

Jika  Anda  bermaksud  membentuk  array  yang  nilainya  sudah  baku,  array  dapat  diinisialisasi 
sewaktu  dideklarasikan.  Yang  menyatakan  mendeklarasikan  namaBulan  yang  mempunyai 
13 elemen bertipe string. Contoh: 

String namaBulan[13] = {

"", "Januari", "Februari", "Maret",

"April", "Mei", "Juni", "Juli",

"Agustus", "September", "Oktober",

"November", "Desember" };

Sketsa yang menggunakan deklarasi seperti itu dapat dilihat dibawah ini: 

102
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Sketsa :namaBulan.ino
String namaBulan[13] = {
"", "Januari", "Februari", "Maret",
"April", "Mei", "Juni", "Juli",
"Agustus", "September", "Oktober",
"November", "Desember"
};

void setup() {
Serial.begin(9600);
}

void loop() {

Serial.print("Masukkan kode bulan (1-12): ");


while (!Serial.available());

int kodeBulan = Serial.parseInt();


Serial.println(kodeBulan);
Serial.println(namaBulan[kodeBulan]);
}
 

Hasilnya: 

103
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Tabel Dan Array 


Tabel  mengandung  sejumlah  baris  dan  sejumlah  kolom.  Bentuk  seperti 
ini,  sepanjang  tipe  data  semua  elemen  sama,  dapat  diterjemahkan  ke 
array  berdimensi  dua.  Sebagai  contoh,  terdapat  gambar  seperti  gambar 
disamping. 

Data  pada  peranti  keypad  ini  hendak  dinyatakan  dalam  bentuk  array 
untuk  kepentingan  suatu  pemrosesan.  Nah,  data  tersebut  dapat 
dinyatakan seperti berikut: 

char tombol[4][3] = {

{'1', '2', '3'},

{'4', '5', '6'},

{'7', '8', '9'},

{'*', '0', '#'}

};

Pada  bentuk  seperti  ini,  setiap  elemen  diakses  dengan  menggunakan  dua  indeks,  yakni 
indeks untuk baris dan indeks untuk kolom. 

104
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Sebagai  contoh,  elemen  bernilai  ‘8’  mempunyai  indeks  barus  berupa  2  dan  indeks  kolom  1 
penulisannya: tombol 8 maka array tombolnya [2] [1]. 

Sketsa : table.ino
char tombol[4][3] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};

void setup() {
Serial.begin(9600);

for (int baris = 0; baris < 4; baris++) {


​for (int kolom = 0; kolom < 3; kolom++) {
Serial.print(tombol[baris][kolom]);
Serial.print(" ");
}

Serial.println(); // Pindah baris


105
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

}
}

void loop() {

Hasilnya​:

Pengolahan String
String  adalah  deretan  karakter  yang  bisa  memiliki  nol,satu,  atau  banyak  karakter.  String 
banyak  diperlukan  dalam  aplikasi  terutama  berkedudukan  sebagai  perintah  dalam  bentuk 
teks.  Hal  terpenting  yang  perlu  dipelajari  adalah  cara  memanipulasi  string.  Sebagai  contoh, 
jika  Anda  menggunakan  string  berkelas  string,  operator  +  dapat  dipakai  untuk 
menggabungkan  string  atau  karakter  ke  string  misalnya,  dideklarasikan  suatu  string  seperti 
berikut: 

String st = “”;

Berdasarkan deklarasi tersebut, dimungkinkan untuk memberikan perintah seperti berikut: 

st = st + ‘a’;

maka, st berisi string “a”. jika kemudian ditambahkan: 

st = st + ‘b’;

106
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

st  akan  berisi  string  “ab”.  Cara  seperti  ini  bermanfaat  untuk  membentuk  ​string  berdasarkan 
peranti yang menghasilkan keluaran dalam bentuk karakter, misalnya pada keypad. 

Selain  itu,  ​string  berkelas  string  memiliki  fungsi-fungsi  anggota  yang  bermanfaat  untuk 
memproses  string,  seperti  untuk  mengubah  setiap  huruf  di  dalam  string  menjadi  huruf 
kapital  atau  sebaliknya,  mengambil  substring,  atau  membuang  space  putih  yang  terletak  di 
awal dan akhir string. Silahkan untuk mempelajari isi tabel berikut. 

Fungsi Anggota  keterangan 


chatrAt(n)  Fungsi  ini  berguna  untuk  mendapatkan karakter di string 
pada indeks n. 
compare(string2)  Fungsi  ini  digunakan  untuk membandingkan string objek 
dengan string2. 
Nilai balik fungsi berupa: 
● Nilai negatif kalau string < string2 
● Nol kalau string dan string2 sama 
● Nilai positif kalau string > string2 

concat(string1,string2)  Fungsi  ini  menggabungkan  string1  dan  string2  dan 


hasilnya berupa string baru. 
endsWith(string2)  Fungsi ini memberikan nilai balik berupa ​true kalau string 
berakhiran  dengan  string2.  Untuk  keadaan  sebaliknya, 
nilai balik berupa f​ alse​. 
equals(string2)  Fungsi ini identic dengan penggunaan operator ==. 
equalslgnoreCase(string2)  Fungsi  ini  digunakan  untuk  membandingkan  string 
seperti  pada  ​equals  dengan  mengabaikan  perbedaan 
huruf kecil dan huruf kapital. 
indexOf(nilai)  Fungsi  ini  berguna  untuk  memperoleh  indexs  di  string 
indexOf(nilai, x)  tempat  ditemukannya  nilai  (bisa  berupa sebuah karakter 
atau  string)  di  dalam  string.  Jika  dari  disebutkan, 
pencaharian dimulai dari posisi x. 
lastIndexOf(nilai)  Serupa  dengan  ​indexOf()​,  tetapi  pencarian  dimulai  dari 
lastIndexOf(nilai, x)  akhir string menuju ke awal string. 

107
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

length()  Fungsi  ini  memberikan  nilai  balik  berupa  panjang  string 


(jumlah karakter di string) 
replace(substring1,  Fungsi  ini  memberikan  nilai  balik  berupa  string  baru 
substring2)  dengan  substring1  yang  terdapat  di  string  akan  diganti 
dengan substring2 
setCharAt(n, kar)  fungsi  ini berguna untuk merubah karakter pada indeks n 
dengan karakter kar. 
startsWith(string2)  Fungsi  ini  memberikan  nilai  true  kalau  string  berawalan 
dengan string2. 
subtring(dari)  Fungsi  ini  menghasilkan  string  baru  yang  merupakan 
subtring(dari, sampai)  bagian  dari  string  dimulai  indeks  x  sehingga  y.  kalau 
argument  kedua  tidak  disebutkan,  substring  dimulai 
pada posisi x hingga akhir string. 
toCharArray(penyangga, n)  Menyalin  karakter-karakter  di  string  ke  penyangga  yang 
mempunyai jumlah n byte. Tidak ada nilai balik. 
toLowerCase()  Setiap  huruf  kapital  di  string  akan  diubah  menjadi  huruf 
kecil. 
toUpperCase()  Setiap  huruf  kecil  di  string  akan  diubah  menjadi  huruf 
kapital. 
trim()  Setiap  spasi  putih  yang  berada  di  awal  dan  akhir  string 
akan  dihapus.  Termasuk  spasi  putih  adalah  carriage 
return dana linefeed. 
 

Inilah contohnya sketsanya: 

Sketsa : fungsiString.ino
void setup() {
Serial.begin(9600);

String teks = " Tes..tes..123! ";

Serial.println("0123567890123456");
Serial.println(teks);

108
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Serial.println(teks.length());

teks.trim();
Serial.println(teks);
​ Serial.println(teks.length());

teks.toUpperCase();
Serial.println(teks);

teks.toLowerCase();
Serial.println(teks);
}

void loop() {

Berikut contoh pengujian di Serial Monitor:

109
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Piranti Keluaran dan Display 

BAB V 
 
Ikhtisar Materi 
 
Pada  materi  ini  Anda  akan  dikenalkan  beberapa  piranti  keluaran 
dimana  piranti  keluaran  ini  akan  digunakan  sebagai  aktuator  dan 
display dalam mempelajari Arduino. 
 
Pelajaran 
 
Syarat Pengetahuan 
- Pengetahuan Mengenai Perbedaan Input dan Output 
- Pernah Mencoba Salah Satu Bahasa Pemrograman 
- Paham Mengenai Struktur Kontrol 
 
 
Bahan 
 
Perangkat Aksesoris Bahan Lain 
Arduino UNO Resistor 220​Ω - 
Kabel USB Kabel Jumper 
Komputer LED 
Push Button 
 
Deskripsi 
 
Tujuan Belajar 1. Mengenal pengoperasian output 
2. Menggunakan library 
 
 
Kosa Kata 
 
struktur kontrol 
output, servo, 7 segment   

110
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Motor Servo 
Motor  servo  adalah  perangkat  keluaran  yang  perputaran  nya  dapat  diatur  di  sudut  tertentu 
dia  harus  berhenti.  Misalnya  saja  berputar  sebanyak  90  derajat.  Ada  banyak  sekali  jenis 
motor  servo,  tiap  jenis  tersebut  biasanya  dibedakan  dengan  torsi  nya.  Torsi  berhubungan 
dengan  daya  putar  motor  atau  tenaga  dari  motor  tersebut. Torsi yang besar dapat memutar 
beban  yang  lebih  berat.  Namun  kali  ini  karena  kita  dalam  proses  belajar  maka  kita  akan 
menggunakan  motor  servo  SG90  dengan  alasan  harga  yang  sangat  murah.  Motor  servo 
tersebut seperti diperlihatkan pada gambar berikut. 

 
Motor servo mempunyai 3 kabel: 
● Merah dihubungkan ke sumber tegangan 5V. 
● Coklat dihubungkan ke ground. 
● Orange dihubungkan ke pin Digital Arduino untuk mengontrol posisi motor. 
 
Biasanya  pengaplikasian  motor  servo  ini  terdapat  pada  perwujudan  lengan  robot  dan 
berbagai  bentuk  lain  yang  memerlukan  gerakan  seperti  hal  nya  sendi  pada  tubuh.  Perlu 
diketahui biasanya motor servo ini hanya bisa digerakan dengan sudut putaran 180 derajat. 
 
Buatlah rangkaian seperti berikut: 

111
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

 
 
Adapun sketsa yang digunakan untuk menguji rangkaian diatas adalah seperti berikut. 

Sketsa : servo.ino
#include <Servo.h>

Servo myservo;

void setup()
{
myservo.attach(6);
}

void loop()
{
myservo.write(90);
}

Pada  kode  program  ​#include <Servo.h>  ini  artinya  kita  menggunakan  library  atau  kode 
program  lain  di  luar  kode  program  yang  kita  gunakan.  Dalam  hal  ini  kode  program  tersebut 
memiliki  nama  berkas  Servo.h.  Library  ini  telah  ada  secara  default  pada  Arduino  IDE,  untuk 
menambahkannya maka kita masuk ke ​Sketch​ -> ​Include Library -​ > ​Servo​.  

112
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Maka otomatis library akan dimasukan ke sketsa kita. 

Kemudian  pada  baris  ​Servo myservo ​kita  menggunakan  object  ​Servo  yang  nantinya  kita 
gunakan  untuk  mengendalikan  servo.  Pada  kode  program  ​myservo.attach(6);  ini  adalah 
perintah  untuk memberitahu Arduino bahwa servo ada pada pin 6. Kemudian untuk memutar 
servo  ke  posisi  tertentu  maka  digunakan  perintah  ​myservo.write(90); ​dimana 90 adalah 
posisi servo berputar dalam satuan derajat. 

113
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Servo  adalah  perangkat  yang  pintar  dimana  servo  dapat  menerima  data  mengenai  posisi 
hanya  dengan  menggunakan  satu  pin.  Di  dalam  servo  terdapat  motor  driver  dan  sebuah 
sirkuit  yang  dapat  mengirimkan  kembali  data  untuk  dapat  memastikan  bahwa  servo  telah 
mencapai  posisi  yang  telah  ditentukan.  Lalu  bagaimana  cara  kerja  servo  yang  hanya 
menggunakan  sinyal  digital  saja  (padahal  bayangan  kita  adalah  sinyal  analog  karena  dia 
dapat memposisikan di lebih dari 2 posisi). 

Untuk  mengendalikan  servo  kita  perlu  memahami  cara  kerja  PWM  karena  cara  kerjanya 
hampir  mirip  dengan  teknik  PWM.  Setiap  ​cycle  pada  sinyal  tersebut  dibaca  per  20  milidetik 
dan  sebagian  besar  nilainya  adalah  LOW.  Setiap  permulaan  perputaran  sinyal  maka 
diposisikan  sebagai  HIGH  untuk  waktu 1 dan 2 milidetik. Pada sinyal waktu 1 milidetik maka 
dinyatakan  0  derajat  dan  pada  waktu  2  milidetik  dinyatakan  sebagai 180 derajat. Metode ini 
adalah  metode  yang  baik,  grafik  diatas  dapat kalian jadikan bayangan bagaimana cara kerja 
servo.  Jika  ada  listrik  selama  2  milidetik  maka 180 derajat, jika ada listrik selama 1 milidetik 
maka 0 derajat, jika ada listrik selama 1.5 milidetik maka 90 derajat, dst. 

Piezo Speaker (Buzzer)


Piezo  speaker  biasa  disebut  juga  dengan  ​piezo  bender​,  ​piezo  buzzer​,  ​crystal  loudspeaker​, 
atau  ​beep  speaker  adalah  sebuah  loudspeaker  (perangkat  yang  mengubah  listrik  menjadi 
suara)  yang  menggunakan  efek  piezoelectric  untuk  menghasilkan  suara.  Efek  piezoelektrik 
adalah  suatu  kemampuan  yang  dapat  menghasilkan  suatu  arus  listrik  jika  ada  sebuah 
tekanan. 

114
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Prinsip  kerja  piezo  buzzer  ini  adalah  dengan  memberikan  listrik  ke  material  piezoelektrik 
sehingga  ukuran  atau  bentuk  dari  material  tersebut  berubah  yang  akhirnya  perubahan 
tersebut  menghasilkan  suara.  Namun  ketika  tidak  ada  listrik  di  material  piezoelektriknya 
maka  bentuk  nya  akan  kembali  ke  asalnya.  Lalu  bagaimana  gerakan  tersebut  dapat 
menghasilkan  suara?  jawabannya adalah sama seperti penghasil suara lainnya yaitu dengan 
membuat getaran, perubahan bentuk tadi akan menghasilkan getaran. 

Berikut perubahan bentuk material piezoelektrik tersebut: 

Perbedaan Speaker Piezoelektrik dan Speaker Elektrodinamis 


Keduanya  mirip  dimana  keduanya  mampu  mengubah  beda  potensial  menjadi gerakan. Tapi 
terdapat perbedaan karakteristik yang berpengaruh terhadap valuasi di elektronika modern. 

Speaker  elektrodinamis  dibuat  dengan  membiarkan  listrik  mengalir  melalui  gulungan  kawat 
di  depan  medan  magnet.  Gaya  tarik  menarik  antara  kawat  dan  magnet  ini  digunakan  untuk 
menggerakan  kerucut  pada  speaker  yang  akhirnya  menghasilkan  getaran,  dan  tentu  saja 
getaran  ini  menghasilkan  suara.  Magnet,  kawat, dan kerucut tadi memiliki keterbatasan fisik 
pada  faktor  tingkat  ketipisan  bahan  nya  sehingga  tidak  efektif  untuk  menghasilkan  suara 
dengan  kualitas  atau  volume  yang  dapat  didengar  manusia.  Sementara  piezoelektrik  dapat 
dibuat  dengan  material  yang  sangat  tipis  dengan  masih  tetap  dapat  mengeluarkan  suara 
yang  dapat  diterima  telinga.  Hal  lainnya  yang  membuat  piezoelektrik  ini  lebih  baik  di  sisi 
tertentu  adalah  karena  dapat  berfungsi  dengan  melakukan  kontak  langsung  terhadap 
substansi  selain  udara,  itulah  mengapa  piezoelektrik  dapat  digunakan  meski  di  dalam  air, 
berbeda dengan speaker elektromagnetis tradisional yang harus terlindungi dari air. 

115
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Di  pasaran ada banyak produsen pembuat perangkat ini, ada yang berbentuk modul ada pula 
yang tidak. Kali ini kita akan belajar menggunakan buzzer tanpa menggunakan modul. 

Buzzer  memiliki  dua  pin  yaitu  positif  dan  negatif  tentunya,  kita 
dapat  mengatur  tinggi  rendah  nya  nada  pada  buzzer,  tentu  saja 
itu  artinya  kita  perlu  menggunakan  sinyal  analog  oleh  karena  itu 
kita gunakan pin PWM. 

https://github.com/bhagman/Tone#ugly-details 

Adapun sketsa untuk menggunakan buzzer adalah sebagai berikut: 

Sketsa : buzzer.ino
void setup()
{
pinMode(11, OUTPUT);
}

void loop()
{
tone(11, 1400);
delay(500);
noTone(11);
delay(500);

116
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pada  ​setup()  tentu  kita  harus  memberitahu  Arduino  bahwa  pin  11  akan  kita  gunakan 
sebagai  output.  Pada  ​loop()  terdapat  kode  program  ​tone(11, 1400);  dimana  kode  ini 
berarti  kita  memberikan perintah pada Arduino untuk mengeluarkan frekuensi 1400 hz. Perlu 
dicatat  1400  disini  adalah  frekuensi  dan  bukan  volume.  Semakin  besar  frekuensi  maka 
semakin  tinggi  nada  yang  dihasilkan,  sama  seperti  piano dimana satu tombol mewakili satu 
tanda  nada.  Lalu  terdapat  perintah  ​noTune(11);  yang  berarti  kita  memerintahkan  Arduino 
bahwa jangan keluarkan bunyi di pin 11. 

Tidak  dimungkinkan  untuk  mengeluarkan  suara  di  bawah  31  hz  karena  kecepatan 
microcontroller  yang  digunakan  Arduino  UNO  memiliki  kecepatan  16  MHz.  Lebih  detailnya 
silahkan melihat penjelasan di h
​ ttps://github.com/bhagman/Tone#ugly-details​. 

Seven Segment Display 


Seven segment display atau penampil tujuh segmen adalah komponen 
yang  biasa  digunakan  untuk  menampilkan  satu  angka.  Komponen  ini 
sebenarnya  mengandung  7  LED  dimana  masing-masing LED mewakili 
satu  penyusun.  Ada  dua  jenis  seven  segment  yaitu  common  anode 
dan  common  cathode.  Pada  jenis  common  anode,  semua  sisi  positif 
dalam  keadaan  terhubung  maka  dari  itu  kita  tidak  perlu 
menghubungkan  VCC,  cukup  dihubungkan  dengan  GND.  Pada  jenis  common  cathode, 
semua  sisi  negatif  dalam  keadaan  terhubung  maka  dari  itu kita tidak perlu menghubungkan 
GND,  cukup  dihubungkan  dengan  VCC.  Gambar  berikut  menunjukan  penampilan  tujuh 
segmen berjenis common anode dan cathode dan perbedaannya. 

117
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Dengan  dasar-dasar  yang  diuraikan  di  tabel  tersebut,  membuat  huruf  seperti  a  dan  b 
dimungkinkan.  Contoh  jika  kita  ingin  menampilkan  angka  1  pada  seven  segment  common 
anode  maka  kita  perlu  menyalakan  LED  b  dan  c.  Sekarang,  marilah  untuk  menyusun 

118
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

rangkaian  berikut,  yang  menghubungkan  antara penampilan tujuh segmen berjenis common 


cathode/anode dan Arduino: 

Sketsa : seg7katode.ino
const byte SEGMEN[10] = {
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B10111110, // 6
B11100000, // 7
B11111110, // 8
B11110110 // 9
};

const int PIN_SEGMEN[8] = { 10, 9, 8, 7, 6, 5, 4, 3};

119
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

void setup() {
Serial.begin(9600);

// Inisialisasi pin segmen


for (int j = 0; j < 8; j++)
pinMode(PIN_SEGMEN[j], OUTPUT);
}

void loop() {
// Tampilkan 0 s/d 9
for (int j = 0; j < 10; j++) {
Serial.println(j);
tampilkanAngka(j);
delay(2000);
}

delay(3000);
}

void tampilkanAngka(int angka)


{
// Abaikan kalau angka tidak antara 0 dan 9
if ((angka < 0) || (angka > 9))
return;

byte dataSegmen = SEGMEN[angka];


for (int j = 0; j < 8; j++) {
int bit = bitRead(dataSegmen, 7-j);

if (bit == HIGH)
digitalWrite(PIN_SEGMEN[j], HIGH);
else

120
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

digitalWrite(PIN_SEGMEN[j], LOW);
}
}
Data penyusun angka di penampilan tujuh segmen dinyatakan dengan: 

const byte SEGMEN[10] = {

B11111100, // 0

B01100000, // 1

B11011010, // 2

B11110010, // 3

B01100110, // 4

B10110110, // 5

B10111110, // 6

B11100000, // 7

B11111110, // 8

B11110110 // 9

};

Adapun  array  berikut  digunakan  untuk  menyatakan  pin-pin  yang  secara  berturut-turut 
digunakan untuk segmen A,B,C,D,E,F,G dan DP: 

const int PIN_SEGMEN[8] = { 10, 9, 8, 7, 6, 5, 4, 3};

mengingat  setiap  LED  akan  dikontrol  oleh  Arduino,  mode  OUTPUT  digunakan  untuk  semua 
pin tersebut. Hal ini dilakukan oleh pernyataan: 

for (int j = 0; j < 8; j++)

pinMode(PIN_SEGMEN[j], OUTPUT); }

di  loop(),  perintah  yang  diberikan  adalah  untuk  menampilkan  angka  0  hingga  9.  Hal  ini 
dilaksanakan oleh: 

121
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

for (int j = 0; j < 10; j++) {

Serial.println(j);

​ tampilkanAngka(j);

delay(2000);

Proses  untuk  menampilkan  sebuah  angka  ditangani  oleh  fungsi  tampilkanAngka().  Dalam 
hal  ini,  bitread()  digunakan  untuk  memperoleh sebuah bit, yang selanjutnya digunakan untuk 
menentukan  LED  yang  sesuai  dengan  bit  tersebut  hendak  dinyalakan  (HIGH)  atau 
dipadamkan(LOW). 

Sketsa : seg7Anode.ino
const byte SEGMEN[10] = {
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B10111110, // 6
B11100000, // 7
B11111110, // 8
B11110110 // 9
};

const int PIN_SEGMEN[8] = { 10, 9, 87, 6, 5, 4, 3};

void setup() {
Serial.begin(9600);

// Inisialisasi pin segmen


for (int j = 0; j < 8; j++)

122
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

pinMode(PIN_SEGMEN[j], OUTPUT);
}

void loop() {
// Tampilkan 0 s/d 9
for (int j = 0; j < 10; j++) {
Serial.println(j);
tampilkanAngka(j);
delay(2000);
}

delay(3000);
}

void tampilkanAngka(int angka) {


// Abaikan kalau angka tidak antara 0 dan 9
if ((angka < 0) || (angka > 9))
return;

byte dataSegmen = SEGMEN[angka];


for (int j = 0; j < 8; j++) {
int bit = bitRead(dataSegmen, 7-j);

if (bit == HIGH)
digitalWrite(PIN_SEGMEN[j], LOW);
else
digitalWrite(PIN_SEGMEN[j], HIGH);
}
}
Secara  prinsip,  kode  ini  menyerupai  pada  sketsa  yang  mengendalikan  penampilan  tujuh 
segmen  berjenis  common  cathode.  Hal  ini  yang  membedakan,  pada  jenis  common  anode, 
LED menyalakan kalau diberikan isyarat LOW atau 0. 

123
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Seven Segment 4 Angka 


Penampil  tujuh  segmen  yang  mengandung  empat  angka  dapat 
berjenis  common  anode  maupun  common  cathode.  Ukurannya  juga 
bermacam-macam.  Namun,  secara  prinsip  mempunyai  persamaan, 
yakni  memiliki  12  pin.  Contoh  penampil  7  segmen  dengan  empat 
angka dan susunan pin-pinnya yang ditunjukan pada gambar berikut: 

Adapun rangkain yang digunakan untuk mengujinya adalah seperti berikut: 

Untuk  mempermudah  dalam  program  penampil  7  segmen  yang  mengandung  empat  angka, 
pustaka bernama ​Sevseg​ dapat digunakan. Pustaka ini dapat di unduh di: 

www.//github.com/DeanIsMe/SevSeg​. 

Sebelumnya  kita  pernah  menggunakan  sebuah  library  yaitu  untuk  mengendalikan  motor 
servo.  Ada  berbagai  komponen  lain  yang  terkadang  memerlukan  library  yang  tidak 
disediakan  oleh  Arduino  IDE,  oleh  karena  itu  kita  perlu  memasang  sendiri  library  tersebut 
dengan cara masuk ke menu S
​ ketch​ -> I​ nclude Library​ -> ​Add Zip Library​. 

124
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Sketsa untuk menguji rangkaian di depan adalah seperti berikut: 

Sketsa : Seg7empatAngka.ino
#include "SevSeg.h"

const int INTERVAL = 1000; // 1 detik


const int JUM_DIGIT = 4; // Jumlah angka di penampil
// tujuh segmen
SevSeg sevseg;

125
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

void setup() {
byte pinAngka[] = {14, 15, 16, 17};
byte pinSegmen[] = {10, 9, 8, 7, 6, 5, 4, 3};

sevseg.begin(COMMON_CATHODE, JUM_DIGIT, pinAngka, pinSegmen);


sevseg.setBrightness(90);
}

void loop() {
static unsigned long timer = millis();

if (millis() - timer > INTERVAL) {


timer = millis();

// Bangkitkan bilangan acak yang kurang dari 100


float nilai = random (10, 99) + (random(0, 100) / 100.0);

// Peroleh bilangan bulat yang mencakup


// 2 digit pecahan. Misal 34.56 menjadi 3456
int bilangan = nilai * 100;
sevseg.setNumber(bilangan, 2);
}

sevseg.refreshDisplay();
}

Penggunaan pustaka S
​ evSeg​ ditandai dengan baris: 

#include "SevSeg.h"

Definisi  konstanta  berikut  digunakan  untuk  menentukan  batas  waktu  untuk  memulai 
penggantian angka yang akan ditampilkan di penampil tujuh segmen: 

const int INTERVAL = 1000;

126
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Adapun  definisi  berikut  digunakan  untuk  menentukan  jumlah  angka  pada  penampil  7 
segmen: 

const int JUM_DIGIT = 4;

Pembentukan objek untuk mengakses penampil 7 segmen dilakukan oleh pernyataan: 

SevSeg sevseg;

Penentuan  array  yang  menyatakan  pin-pin  yang  digunakan  untuk  mengatur  segmen  pada 
penampil  7  segmen  dan  pin-pin  yang  mengontrol  setiap  angka  di  penampil  7  segmen 
dilakukan oleh dua pernyataan berikut: 

byte pinAngka[] = {14, 15, 16, 17};

byte pinSegmen[] = {10, 9, 8, 7, 6, 5, 4, 3};

angka  14  menyatakan  pin  A0,  angka  15  menyatakan  pin  A1,  angka  16  menyatakan  pin  A2, 
dan angka 17 menyatakan pin A3. 

Inisialisasi penampil 7 segmen dilakukan oleh pernyataan: 

sevseg.begin(COMMON_CATHODE, JUM_DIGIT, pinAngka, pinSegmen);

argument  pertama  menyatakan  jenis  penampil  tujuh  segmen  yang  digunakan.  Jika jenisnya 
adalah  common  anode,  gunakan  konstanta  COMMON_ANODE.  Argument  kedua 
menyatakan jumlah digit pada penampil 7 segmen. Argument ketiga berupa array yang berisi 
daftar  pin  yang  digunakan  dimulai  dari  pin  untuk  mengakses  segmen  A  hingga  DP. 
Argument keempat berupa array berisi pin-pin pengontrol angka di penampil 7 segmen. 

Perintah  berikut  digunakan  untuk  mengontrol  kecerahan  pada  penampil  7  segmen  sebesar 
90%: 

sevseg.setBrightness(90);

Pernyataan  berikut  pada  loop()  digunakan  untuk  mendeklarasikan  variabel  statis timer yang 


bertipe unsigned long dan diberi nilai awal berupa waktu di Arduino: 

static unsigned long timer = millis();

variabel  statis  adalah  variabel  lokal  yang  dideklarasikan  hanya  sekali  saja  ketika  loop() 
dipanggil  yang  pertama  kali.  Nilai  variabel  ini  tidak  hilang  ketika  loop()  berakhir.  Perintah 

127
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

berikut  digunakan untuk mengeksekusi perintah yang berada di dalam { } kalau selisih antara 
waktu sekarang dan timer melebihi nilai INTERVAL: 

if (millis() - timer > INTERVAL) { …. }

jika  ekspresi  milis()  -  timer  >  INTERVAL  terpenuhi,  pernyataan  pertama  yang  dieksekusi 
adalah timer = millis(); 

pernyataan ini membuat waktu sekarang disimpan di timer. 

Pernyataan  berikut  digunakan  untuk  memperoleh  bilangan  riil  secara  acak  dengan  nilai 
kurang dari 100: 

float nilai = random (10, 99) + (random(0, 100) / 100.0);

Selanjutnya, 

int bilangan = nilai * 100;

digunakan  untuk  mengalikan  bilangan  riil  dengan  angka  100.  Tujuannya  adalah  untuk 
memperoleh  bilangan  bulat yang mengandung dua digit angka pecahannya. Sebagai contoh, 
bilangan riil 56,78 akan diubah menjadi 5678. Bilangan inilah yang dikirimkan ke pernyataan: 

sevseg.setNumber(bilangan, 2);

dalam hal ini, angka 2 menyatakan letak tanda DP berada pada digit kedua. 

Tanpa tergantung oleh kondisi if, pernyataan berikut selalu dieksekusi: 

sevseg.refreshDisplay();

Kegunaannya adalah bentuk memperbaharui tampilan di penampil 7 segmen. 

Seven Segment 4 Angka Dengan 4 Pin 


Sebelumnya  kita  belajar  mengenai  seven  segment  4  digit  dengan  banyak  pin,  namun  ada 
juga  yang hanya menggunakan 4 pin. Peranti ini bisa digunakan untuk menampilkan jam dan 
menit.  Keempat  pin  berlabel  ​GND,  VCC,  DIO  dan  CLK  secara  berturut-turut.  Jika  memang 

128
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

seperti itu, model ini dinamakan TM1637 karena menggunakan ​IC TM1637 untuk mengontrol 
penampil tujuh segmen. 

Transmisi  data  serial  antara  Arduino  dan  modul  ini  sangat  rumit.  Jadi  kita  akan 
menggunakan  pustaka  yang  ditulis  untuk  modul  ini  agar  dapat  membantu  pengiriman data. 
Yang  perlu  Anda  lakukan  adalah  mengunduh  pustaka  tersebut  dan  memanggilnya  dalam 
program  aplikasi.  Setelah  file  header  dimasukkan,  controller  melakukan komunikasi dengan 
sendirinya  dan  karakter  tampilan  yang  diperlukan  akan  dikirim  ke  modul.  Pustaka  ini  dapat 
diunduh di: h
​ ttps://github.com/avishorp/TM1637/releases​. 

Alasan mengapa menggunakan TM1637 adalah sebagai berikut: 

1. Modul  dapat  dihubungkan  ke  sistem  apapun  dengan  hanya  menggunakan  2  (dua) 
pin.  Untuk  menampilkan  karakter  yang  kita  inginkan  maka  hanya  perlu  melalui  dua 
pin  ini.  Dengan  demikian  kita  dapat  menghemat  pin  yang  lain  di  Arduino  untuk 
menangani input dan output yang lainnya. 
2. Harganya murah, ada banyak display lain namun dengan harga yang lebih mahal. 
3. Modul  ini  tidak  membutuhkan  power yang besar dan bisa diterapkan pada perangkat 
mobile. 
4. Banyak  sekali  library  dan  program  yang  telah  dibuat  untuk  menggunakan  modul  ini 
sehingga memudahkan kita pada saat pemasangan. 

Modul  ini  dapat  bekerja  pada  daya  5V (tegangan lebih tinggi dapat menyebabkan kerusakan 


permanen).  

129
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Pin CLK dihubungkan ke pin 2 arduino. Pin DIO dihubungkan ke pin 3 arduino. Pin VCC
dihubungkan ke pin 5V Arduino. Pin GND dihubungkan ke pin GND Arduino.

Sketsa : tm1637Formatjam.ino
#include <TM1637Display.h>

const int CLK = 2;


const int DIO = 3;
TM1637Display display(CLK, DIO);

void setup()
{
display.setBrightness(0x0a);
}

void loop()
{

130
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

display.showNumberDec(8888);
}
Penggunaan pustaka TM1637 ditandai dengan baris:

#include "TM1637Display.h"

Pin Arduino yang dihubungkan ke pin CLK dan DIO didefinisikan melalui:

const int PIN_CLK = 2;

const int PIN_DIO = 3;

pernyataan berikut digunakan untuk membentuk objek yang digunakan untuk mengakses
penampil 7 segmen:

TM1637 tm1637(PIN_CLK, PIN_DIO);

argument pertama dan kedua menyatakan pin-pin di Arduino yang dihubungkan ke pin CLK
dan DIO. DIO adalah pin untuk data input dan output dan CLK adalah pin untuk ​clock.

Untuk mengatur tingkat kecerahan menggunakan perintah (dalam bilangan hexadesimal):

display.setBrightness(0x0a);

Kemudian untuk menampilkan angka ke penampil 7 segment, maka gunakan perintah: 

display.showNumberDec(8888); 

   

131
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Piranti Masukan 

BAB VI 
 
Ikhtisar Materi 
 
Pada  materi  ini  Anda  akan  dikenalkan  beberapa  piranti  masukan 
dimana  piranti  masukan  ini  akan  digunakan  sebagai  sensor  dalam 
mempelajari Arduino. 
 
Pelajaran 
 
Syarat Pengetahuan 
- Pengetahuan Mengenai Perbedaan Input dan Output 
- Pernah Mencoba Salah Satu Bahasa Pemrograman 
- Paham Mengenai Struktur Kontrol 
- Paham Perbedaan Data Analog dan Digital  
 
 
Bahan 
 
Perangkat Aksesoris Bahan Lain 
Arduino UNO Resistor 220​Ω - 
Kabel USB Kabel Jumper 
Komputer LED 
Push Button 
 
Deskripsi 
 
Tujuan Belajar 1. Mengenal pengoperasian output 
2. Menggunakan library 
 
 
Kosa Kata 
 
struktur kontrol 
output, servo, 7 segment   

132
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Sensor 
Sensor  adalah  peranti  yang  mengukur  besaran  nyata  dalam  bentuk  analog  menjadi  data 
yang dapat dipahami oleh komputer dengan menggunakan ADC (analog to digital converter). 
Dalam  terminology  yang  lebih  mudah  dipahami,  sensor  adalah  peranti  yang  mengubah 
parameter  fisik  seperti  temperature,  tekanan,  kecepatan,  atau  kelembaban,  menjadi  isyarat 
listrik.  Sebagai  contoh,  temperatur  dapat  diterjemahkan  menjadi  tegangan  listrik. 
Berdasarkan tegangan yang dapat, temperature dapat dihitung. 

LDR (Light Dependent Resistor) 


LDR  adalah  sebuah  Resistor  yang  tidak  memiliki  polaritas.  Perbedaan  dari  LDR  dan  resistor 
yang  biasa  kita  gunakan  sebelumnya  adalah  bahwa  LDR  ini  termasuk  resistor  variabel yang 
nilai  resistansinya  dapat  kita  atur.  Untuk  mengatur  nilai  resistansi  tersebut  maka 
menggunakan  cahaya.  Semakin  besar  intensitas  cahaya 
yang  didapatkan,  maka  semakin  besar  pula  nilai 
resistansinya.  Oleh  karena  sifatnya  itulah  LDR  ini  dapat 
digunakan sebagai sensor cahaya. 

Untuk  mempermudahkan  dalam  mempraktikkan  komponen 


ini,  modul  modul  yang  berisi  sensor  LDR  perlu  digunakan. 
Gambar  di  samping  menunjukan  contoh  modul  LDR 
bernama  KY-018  buatan  keyes.  Namun,  modul  LDR  buatan 
vendor mana pun bisa digunakan. 

Module  KY-018  mengandung  tiga  pin  dengan  nama  berupa  S,  +,  dan  -.  Untuk  modul  lain 
Namanya  dapat  berupa  A0,  GND,  VCC,  dan  D0.  Pada  modul  yang  berisi  4  pin,  gunakan  A0, 
VCC (identik dengan listrik +) dan GND (identik dengan listrik -). 

Sensor-sensor  lain  pun  yang  menggunakan  modul  buatan  keyes  seperti  ini  cara 
memprogramnya  sama  dan  cara  memasang  pin  nya  sama.  Yang  perlu  kita  perhatikan 
adalah  bentuk  datanya,  sebagai  contoh  pada  modul  LDR  ini  tentu  saja  menggunakan  data 
133
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

analog  karena  untuk  mendapatkan  nilai  resistansi  berdasarkan  cahaya  (seberapa  cerah 
cahaya nya), oleh karena itu kita gunakan pin A0 pada modul. 

Rangkaian yang diperlukan untuk menguji modul LDR adalah seperti berikut: 

Pin  S  dihubungkan  ke  pin  analog  A0.  Pin  +  (tengah)  dihubungkan  ke  pin  5V.  pin  – 
dihubungkan ke pin GND. 

Sketsa untuk menguji rangkaian tersebut adalah seperti berikut: 

Sketsa : ujiLDR.ino
void setup() {
Serial.begin(9600);
}

void loop() {
int nilaiLDR = analogRead(A0);

134
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Serial.println(nilaiLDR);
delay(500);
}
Sketsa  diatas  untuk  mendapatkan  nilai  cahaya  yang  kemudian  kita  tampilkan  di  serial 
monitor.  Nilai  dari  sensor  dapat  kita  lihat  pada  serial  monitor, ini lah salah satu fungsi serial 
monitor  dimana  kita  tidak  perlu perangkat output untuk hanya sekedar melihat nilai keluaran 
dari suatu sensor. 

Kode  program  ​analogRead(A0) ​adalah  untuk  membaca  nilai  analog  dari  pin  A0.  Nilai 
maksimal  dari  pembacaan  analog  pada  pin  analog  adalah  sebesar  1023  dan  nilai 
minimalnya  adalah  0.  Kita  juga  dapat  menggunakan  pin  PWM  sebagai input namun jika kita 
menggunakan  PWM  maka  nilai  maksimal nya adalah 255 dan nilai minimalnya adalah 0. Hal 
ini  karena  besar  data  maksimal  pada  pin  digital  adalah  8  bit  dan  pada  pin  digital  adalah  10 
bit. 

Untuk  inputan  melalui  pin  analog  maka  kita  sebenarnya  tidak  perlu  melakukan  inisialisasi 
dengan  ​pinMode(A0, INPUT);  karena  Arduino  sendiri  mengetahui  bahwa  pin  tersebut 
menggunakan ADC. 

Berikutnya,  kita  akan  membuat  LED  yang  dapat  menyala  otomatis  ketika  cahaya  di 
sekitarnya kurang, dan akan mati otomatis ketika cahaya di sekitarnya cukup.  

Buatlah rangkaian seperti berikut: 

135
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Contoh sketsanya seperti berikut: 

Sketsa : ledLDR.ino
const int PIN_LED = 7;
const int AMBANG = 600;

void setup() {
pinMode(PIN_LED, OUTPUT);
}

void loop() {
int nilaiLDR = analogRead(A0);
if (nilaiLDR >= AMBANG) {
digitalWrite(PIN_LED, HIGH);
} else {
digitalWrite(PIN_LED, LOW);
}

136
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Nilai  ambang  disini  adalah  sesuai  dengan  kebutuhan,  tidak  harus  600  karena  tergantung 
kondisi  di  lingkungan,  kita  lah  yang  menetapkan  ambang  tersebut.  Untuk  menentukannya 
maka  harus  melihat  nilai nya di serial monitor berapa nilai nya ketika ada cahaya dan berapa 
nilainya  ketika  cahaya  berkurang,  dari  situlah  kita  bisa  menentukan  saat  nilai  diatas  atau 
dibawah berapa LED akan menyala. 

Curah Hujan
Untuk  mengukur dan mendeteksi apakah 
cuaca  sedang  hujan  atau  tidak,  maka 
kita  dapat  menggunakan  sensor  curah 
hujan. 

Cara  kerja  sensor  hujan  ini  cukup 


mudah.  Panel  yang  digunakan  untuk 
mendeteksi  air  dibuat  dengan  membuat 
serangkaian  jalur  tembaga  yang terbuka, 
jalur  tersebut  akan  bertindak  sebagai 
resistor  variabel  (seperti  potensiometer) 
yang  nilai  tahanannya  bervariasi  sesuai 
dengan jumlah air di permukaannya. 

Nilai resistansi nya berbanding terbalik dengan jumlah air: 

● Semakin  banyak  air  di  permukaan  sensor  berarti konduktivitas nya semakin baik dan 


akan menghasilkan resistensi yang lebih rendah. 
● Semakin  sedikit  air  di  permukaan  berarti  konduktivitas  nya  semakin  buruk  dan  akan 
menghasilkan resistensi yang lebih tinggi. 

Sensor  menghasilkan  tegangan  output  sesuai  dengan  besar  hambatannya,  dengan  nilai 
besar output ini lah kita dapat menentukan seberapa besar intensitas hujan nya. 

137
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Ikhtisar Perangkat Keras 

Umumnya sensor hujan ini memiliki 2 (dua) komponen utama yang terpisah yaitu: 

Papan Sensor 

Sensor ini berisi panel dengan serangkaian jalur tembaga yang terbuka agar dapat terkena 
air. Jalur-jalur tersebut tidak terhubung, dan akan terhubung jika terkena air karena seperti 
yang kita tahu bahwa air adalah penghantar listrik yang baik. 

Modul 

Sensor  ini  juga  berisi  modul  elektronik  yang 


menghubungkan  panel  sensor  ke  Arduino.  Modul  ini 
menghasilkan  tegangan  output  sesuai  dengan  tahanan 
panel dan tersedia di pin Analog Output (AO). 

Pada  modul  terdapat  sebuah  resistor  variabel  yaitu 


sebuah  trimpot  yang  dapat  kita  atur  nilai  resistansi  nya, 
nilai  resistansi  yang  kita  atur  ini  sebagai  cara  untuk 
mengatur  tingkat  sensitifitas.  Biasanya  pengaturan 
sensitifitas ini digunakan jika kita akan menggunakan data digital sebagai inputnya. 

Buatlah rangkaian seperti berikut: 

138
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Buatlah sketsa sebagai berikut:

Sketsa : deteksiAir.ino
void setup() {
Serial.begin(9600);
}

void loop() {
int nilaiA0 = analogRead(A0);
Serial.println(nilaiA0);

delay(500);
}
 

Kelembaban Tanah
Sensor ini sama seperti sensor curah hujan yaitu menggunakan modul, yang berbeda
adalah bentuk panel nya dimana pada sensor curah hujan panel tersebut berbentuk persegi
empat, sementara pada sensor kelembaban panel tersebut berbentuk seperti garpu tala
yang berfungsi untuk ditancapkan pada tanah.

139
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Terdapat beragam sensor ini. Gambar di samping ini


memperlihatkan contoh sensor.

Contoh tersebut mempunyai kode YL-100. Namun,


banyak vendor yang menyediakan produk serupa,
misalnya FC-28 dan SparkFun Soil Moisture Sensor.

Cara menghubungkan sensor ini ke Arduino ditunjukkan


di gambar ini:

Pin A0 dihubungkan ke pin analog A0. Pin GND dihubungkan ke pin GND Arduino. Pin VCC
dihubungkan ke pin 5V Arduino.

Adapun sketsa yang digunakan untuk menguji rangkaian di atas adalah seperti berikut:

Sketsa : kelembaban.ino
void setup() {
Serial.begin(9600);
}

void loop() {
int nilaiA0 = analogRead(A0);
Serial.println(nilaiA0);

140
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

delay(1000);
}

Pada  dasarnya,  cara penggunaan dan cara membuat kode programnya adalah sama dengan 


sensor  curah  hujan.  Bahkan  cara  memprogramnya  pun  sama  karena  ketiga sensor tersebut 
membaca  keadaan  fisik  yang  ada di sekeliling dia menjadi gelombang elektromagnetik yang 
diatur menggunakan resistor. Ketiga sensor tersebut menggunakan resistor variabel. 

Sensor Jarak
Untuk  mengukur  jarak,  kita  bisa  menggunakan  banyak  media  beberapa  diantaranya  adalah 
menggunakan  cahaya  ataupun  suara.  Untuk  mengetahui  jarak,  sebelumnya  kita  harus  tahu 
terlebih dahulu bagaimana cara mengetahui jarak. Rumus yang digunakan adalah: 

S = t.v 
S = Jarak 
t = Waktu Tempuh 
v = Kecepatan 

Pada  pembahasan  ini  kita  akan  menggunakan  media  suara  /  bunyi untuk menghitung jarak. 


Seperti  yang  kita  tahu,  bahwa  suara ini merambat melalui media zat padat, zat cair, dan gas. 
Suara  sendiri  memiliki  kecepatan  rambatan  yaitu  1.224  km/jam  di  udara  dan  5.400 km/jam 
di  air  (jauh  lebih  cepat  daripada  di  udara).  Suara  sendiri  kecepatan  perambatannya  akan 
lebih lambat jika merambat pada suhu dan tekanan yang lebih rendah. 

Cara  kerja  sensor pengukur jarak yang menggunakan suara ini adalah dengan mengeluarkan 


suara  dari  transmitter,  kemudian  suara  tersebut  merambat  melalui  udara  sampai  mengenai 
objek  yang  ingin  diukur  jaraknya  yang  kemudian  suara  tadi  akan  dipantulkan  oleh  objek 
tersebut ke receiver. Hasilnya dihitung menggunakan rumus tadi. 

141
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Sebagai  contoh,  kita  tahu  kecepatan  perambatan  suara  di  udara  adalah  1.224  km/jam  atau 
kita  dapat  mengkonversinya  menjadi  0.0343  cm/µs  (µs  adalah  satuan  internasional  untuk 
microsecond  dimana  1  µs  =  0.000001  detik).  Setelah  suara  tersebut  dipantulkan, suara tadi 
diterima oleh receiver setelah 2000µs. Maka cara menghitungnya adalah: 

v = 1224 km/jam = 0.0343 cm/µs 


t = 0.001 detik 

S = (v . t) / 2 
S = (0.0343 cm/µs . 2000 µs) / 2 
S = 68,2 cm / 2 
S = 34,3 cm 

Ada  pertanyaan  yaitu  mengapa  pada  rumus  kita  harus  membagi  nya  dengan  2?  hal  itu 
karena  jarak  antara  sensor  dan  objek  sebenarnya  hanya  setengahnya  sejak  suara 
dikeluarkan. Karena suara merambat dari sensor ke objek dan kembali lagi ke sensor.  

Untuk  sensor  jarak  yang  menggunakan  media  suara  maka  akan  menggunakan  suara 
ultrasonik,  yaitu  suara  yang  gelombangnya  diatas  20.000  Hz.  Suara  ini tidak dapat didengar 
oleh  telinga  manusia  (nadanya  sangat  tinggi),  sedangkan  manusia  hanya  bisa  mendengar 
suara  dengan  frekuensi  20  Hz  sampai  dengan  20.000  Hz.  Untuk  suara  yang  memiliki 
frekuensi  dibawah  20  Hz  kita  namakan  infrasonik.  Hewan  seperti  kucing  dapat  mendengar 
suara infrasonik, dan hewan seperti kelelawar dan paus dapat mendengar suara ultrasonik. 

Ragam  sensor  pengukur  jarak  yang  menggunakan 


ultrasonic  ini  cukup  banyak,  diantaranya  seperti 
LV-MaxSonar-EZ1,  PING,  dan  HC-SR04.  HC-SR04 
termasuk  sensor  pengukur  jarak yang sangat populer dan 
mampu  mengukur pada jarak 2 cm hingga 3 meter. Selain 
harganya  murah,  cara  menggunakannya  juga  mudah. 
Sensor  ini  mempunyai  empat  pin.  Kegunaan 
masing-masing adalah seperti berikut: 

1. VCC  sebagai  tegangan  positif  dihubungkan  ke 


tegangan 5V Arduino. 
2. GND sebagai listrik negatif dihubungkan ke ground Arduino. 

142
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

3. Trig  dihubungkan  ke  pin  digital  Arduino.  Pin  ini  berfungsi  untuk  mengirimkan  isyarat 
dalam bentuk gelombang suara berfrekuensi 40 KHz. 
4. Echo  dihubungkan  ke  pin  digital  Arduino.  Pin  ini bertanggung jawab untuk menerima 
gelombang yang dipantulkan oleh objek yang berada di depan sensor. 

Cara  kerja  sensor  ini  adalah dengan mengeluarkan gelombang suara ultrasonik pada bagian 


Trigger  dan  menerima  pantulan  suara  ultrasonik  pada  bagian  Receiver. 

Pada  bagian  depan  sensor  HC-SR04  kita  dapat  melihat  silinder  putih,  itu  adalah  ultrasonic 
transducer.  Satu  sebagai  transmitter  (mengeluarkan  suara  ultrasonik)  dan satu lagi sebagai 
receiver  (menerima  suara  ultrasonik).  Untuk  dapat  mengeluarkan  suara  maka  kita  perlu 
memberikan  listrik  pada  pin  Trig  setidaknya  setiap  10  µs.  Dengan  begitu  sensor  akan 
mengeluarkan  suara  dengan  siklus  8  kali  pada  frekuensi  40  kHz  (40.000  Hz).  Lalu  suara 
akan  merambat  dan  memantul  dari  objek  ke  Echo  dimana  pada  pin  Echo  ini  akan 
memberikan  output  berupa  waktu  yang  ditempuh  suara  untuk  merambat  dalam  satuan 
microsecond. 

143
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Kita  dapat  menggunakan  fungsi  ​pulseIn()  pada  kode  Arduino  untuk  membaca  panjang 
dari  gelombang  dari  Echo.  Setelah  itu  kita  dapat  menggunakan  rumus yang telah dijelaskan 
diatas untuk mengetahui jarak dari objek. 

Spesifikasi Sensor

Tegangan  5 V 

Frekuensi   40 kHz 

Jarak Pengukuran  2 - 400 cm 

Resolusi  3 mm 

Sudut Pengukuran  15 Derajat 

Sinyal Input (Trigger)  10 µs 


 

144
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Setiap perangkat elektronik yang diproduksi memiliki datasheet, jika kita ingin mengetahui 
segala hal tentang perangkat tersebut, maka kita harus melihat datasheet tersebut. 
https://www.makerguides.com/wp-content/uploads/2019/02/HCSR04-Datasheet.pdf 

Contoh hubungan antara ​HC-SR04​ dan Arduino: 

Sketsa yang digunakan untuk menguji rangkaian di atas adalah seperti berikut: 

Sketsa : ukurJarak.ino
#define trigPin 2
#define echoPin 3
long durasi;
int jarak;

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}

145
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

durasi = pulseIn(echoPin, HIGH);


jarak = durasi * 0.034 / 2;

Serial.print("Jarak = ");
Serial.print(jarak);
Serial.println(" cm");

delay(50);
}
 

Pertama-tama, pin trigger dan echo didefinisikan: 

#define trigPin 2
#define echoPin 3

Pernyataan ​#define​ digunakan untuk memberi nama pada nilai konstan. Kompiler akan 
mengganti referensi ke konstanta ini dengan nilai yang ditentukan ketika program 
dikompilasi. Jadi dimanapun kita menyebutkan t
​ rigPin​, kompiler akan menggantinya 
dengan nilai 2 saat program dikompilasi. 

Selanjutnya kita mendefinisikan dua buah variabel: 

long durasi;
int jarak;

146
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

durasi​ digunakan untuk menyimpan nilai antara pengiriman dan penerimaan suara. Dan 
variabel ​jarak​ digunakan untuk menyimpan hasil perhitungan jarak. 

Pada  prosedur  setup()  kita  memberikan  perintah  pada  Arduino  bahwa  pin  Trig  ini  kita 
gunakan sebagai output dan pin echo kita gunakan sebagai input.

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

Lalu pada prosedur loop(), kita perintahkan agar sensor mengeluarkan suara selama 10 ​µs. 
Sebagai  catatan  agar  kita  mendapatkan  sinyal  yang  bersih  maka  kita  harus  mematikan  pin 
trigger selama 5 µs, jadi suara akan dikeluarkan setiap 5 µs. 

digitalWrite(trigPin, LOW);
delayMicroseconds(5);|

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

Selanjutnya  kita  perlu  membaca  panjang  gelombang  yang  diterima  oleh  pin  Echo.  Kita 
gunakan  fungsi  pulseIn()  untuk  dapat  melakukan  ini.  Fungsi  ini  untuk  menghitung  waktu 
tunggu  antara  pin  mulai  posisi  HIGH  ke  posisi  LOW.  Setelah  itu  baru  kita  kalkulasi  jaraknya 
menggunakan rumus yang telah dibahas sebelumnya. 

durasi = pulseIn(echoPin, HIGH);


jarak = durasi * 0.034 / 2;

Akhirnya, kita tampilkan jarak tersebut pada serial monitor.


Serial.print("Jarak = ");
Serial.print(jarak);
Serial.println(" cm");

Agar pembacaan tidak terlalu cepat maka kita tambahkan delay tiap selesai menampilkan 
jarak. 

147
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Menggunakan Library 

K​ita  dapat  menggunakan  library  yang  bernama  ​NewPing  ​yang  ditulis  oleh  Tim  Eckel  yang 
dapat  digunakan  untuk  berbagai  macam  jenis  sensor  jarak  menggunakan  ultrasonik.  Versi 
terbaru dari library ini dapat diunduh di: 
https://bitbucket.org/teckel12/arduino-new-ping/downloads/ 

Anda  mungkin  memperhatikan  bahwa  kode  program  yang  menggunakan  pustaka  NewPing 
jauh  lebih  pendek  daripada  kode  yang  kita  gunakan  sebelumnya.  Selain  itu,  library NewPing 
menyertakan  beberapa  fitur  bagus  lainnya.  Misalnya  memungkinkan  kita  untuk  mengatur 
jarak maksimal. 

Library  ini  memang  menyertakan  beberapa contoh yang dapat kita gunakan, tetapi tentu kita 


harus  memodifikasinya  agar  sesuai  dengan  pengaturan  rangkaian  kita.  berikut  kode contoh 
kode  program  yang  telah  dimodifikasi  dan  dapat  digunakan  dengan  rangkaian  yang  sama 
seperti sebelumnya. 

Sketsa : ukurJarak_NewPing.ino
#include <NewPing.h>

#define trigPin 2
#define echoPin 3
#define MAX_DISTANCE 350

NewPing sonar(trigPin, echoPin, MAX_DISTANCE);


float duration, distance;

void setup() {
Serial.begin(9600);
}

void loop() {

148
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

delay(50);
duration = sonar.ping();
distance = (duration / 2) * 0.0343;

Serial.print("Distance = ");
Serial.print(distance);
Serial.println(" cm");

Kita  juga  dapat  menggunakan  ​distance = sonar.ping_cm()  atau  ​distance =


sonar.ping_in()  untuk  mendapatkan  jarak  yang  dalam  satuan  sentimeter  atau  inci. 
Dengan fungsi ini kita tidak perlu melakukan pengukuran durasi dan menghitung jarak. 

Membrane Keypad 3x4 


Keypad  atau  kadang  disebut  membrane  keypad  yang  berisi 
12  tombol  bisa  digunakan  untuk  memasukan  angka  dari  0 
sampai  9.  Selain  itu,  peranti  ini  dilengkapi  dengan  tombol  * 
dan # dengan Jumlah pin 7. Seperti gambar disamping. 

Untuk  mempermudah  dalam  memprogram  keypad,  pusaka 


bernama  ​keypad  dilibatkan.  Pusaka  ini  dapat  diunduh  di: 
https://playground.arduino.cc/Code/Keypad/#Download 

149
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Untuk menguji keypad, rangkaian berikut perlu disusun sesuai dengan gambar berikut: 

Sketsa yang digunakan untuk menguji adalah seperti berikut: 

Sketsa : keypad.ino
#include <Keypad.h>

char tombol[4][3] =
{
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};

byte pinBaris[] = {3, 4, 5, 6};


byte pinKolom[] = {7, 8, 9};
Keypad keypad = Keypad(makeKeymap(tombol), pinBaris, pinKolom, 4, 3);

150
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

void setup() {
Serial.begin(9600);
}

void loop() {
char kode = keypad.getKey();
if (kode != NO_KEY){
Serial.println(kode);
}
delay(100);
}
Pustaka keypad dilibatkan melalui: 

#include <keypad.h>

Array berikut digunakan untuk menyatakan susunan karakter yang menyusun keypad: 

char tombol[4][3] =
{
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
Array berikut ini menyatakan pin-pin yang menyusun baris pada keypad: 

byte pinBaris[] = {3, 4, 5, 6};

array berikut menyatakan pin-pin yang menyusun kolom pada keypad: 

byte pinKolom[] = {7, 8, 9};

pembuatan objek untuk mengakses keypad dilakukan oleh pernyataan berikut: 

Keypad keypad = Keypad(makeKeymap(tombol), pinBaris, pinKolom, 4,


3);

151
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

argument  pertama  menentukan  susunan  nama-nama  tombol.  Argumen  kedua  menyatakan 


array  yang  berisi  pin-pin  di  Arduino  yang  dihubungkan  ke  pin-pin  baris  di  keypad.  Argumen 
ketiga  menyatakan  array yang berisi pin-pin di Arduino yang dihubungkan ke pin-pin kolom di 
keypad.  Argumen  keempat  menyatakan  jumlah  baris  di  keypad  dan  argumen  kelima 
menyatakan jumlah kolom di keypad. 

Pembacaan tombol dilakukan oleh: 

char kode = keypad.getKey();

Dalam  hal  ini,  getKey()  ,menghasilkan  nilai  yang  sama  dengan  ​NO_KEY  jika tidak ada tombol 
yang  ditekan.  Oleh  karena  itu,  jika  hasil  fungsi  ini  berupa  ​NO_KEY​, kode ini tidak perlu dikirim 
ke port serial. Hal ini ditangani oleh pernyataan:

if (kode != NO_KEY){
Serial.println(kode);

Berikut contoh rangkaian keypad dan LED: 

Sketsa  ini  dikembangkan  berdasarkan  kode  pada  sketsa  keypad  3x3.  Itulah  sebabnya, 
bagian yang sama tidak perlu dibahas kembali. 

152
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Setelah kode tombol yang diklik diperoleh melalui: 

char kode = keypad.getKey();

Kode ‘0’ atau ‘1’ digunakan untuk mengontrol LED. Pernyataan yang mengatur hal ini adalah: 

if(kode == ‘1’){

digitalWrite(PIN_LED, HIGH);

}else{

if(kode == ‘0’){

digitalWrite(PIN_LED, LOW);

Pin  yang  berhubungan  dengan  LED  dibuat  menjadi  HIGH  untuk  menyalakan  LED  sekiranya 
kode berisi karakter 1 atau LOW untuk mematikan LED kalau kode berisi karakter 0. 

berikut merupakan sketsanya: 

Sketsa : keypadLed.ino
#include <Keypad.h>

const int PIN_LED = 2;

char tombol[4][3] =
{
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};

byte pinBaris[] = {3, 4, 5, 6};


byte pinKolom[] = {7, 8, 9};

153
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Keypad keypad = Keypad(makeKeymap(tombol), pinBaris, pinKolom, 4, 3);

void setup() {
Serial.begin(9600);
pinMode(PIN_LED, OUTPUT);
}

void loop() {
char kode = keypad.getKey();
if(kode == '1'){
digitalWrite(PIN_LED, HIGH);
}else{
if(kode == '0'){
digitalWrite(PIN_LED, LOW);
}
}
}

Membrane Keypad 4x4


Keypad 4x4 mengandung 16 tombol. Selain tombol-tombol yang terdapat di keypad 3x4,
keypad ini mengandung huruf. Secara prinsip, cara memprogramnya keypad 4x4 serupa
dengan keypad 3x4.

154
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Adapun cara merangkainya diperlihatkan pada gambar dibawah ini:

Berikut menguji rangkaian di atas, sketsa berikut perlu diunggah:

Sketsa : keypad4x4.ino
#include <Keypad.h>

char tombol[4][4] = {
{'1', '2', '3', 'A'},

155
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

{'4', '5', '6', 'B'},


{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

byte pinBaris[] = {3, 4, 5, 6};


byte pinKolom[] = {7, 8, 9, 10};
Keypad keypad = Keypad(makeKeymap(tombol), pinBaris, pinKolom, 4, 4);

void setup() {
Serial.begin(9600);
}

void loop() {
char kode = keypad.getKey();
if (kode != NO_KEY){
Serial.println(kode);
}
}
Sketsa ini tidak jauh beda dengan sketsa ​keypad 3x4​. Perbedaan pertama terletak pada: 

char tombol[4][4] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

Dalam  hal  ini,  tombol  adalah  array  dua  dimensi  berukuran 4x4. Kedua, array pinKolom berisi 


4 elemen, yang dideklarasikan sebagai berikut: 

byte pinKolom[] = {7, 8, 9, 10}; 

156
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Inputan PIN Menggunakan Keypad


Untuk  mewujudkan  hal  ini,  password  disimpan  pada  variable  password  yang dideklarasikan 
bertipe  string  dengan  isinya  berupa  “DA124”.  Nah,  untuk  mengujinya,  kita  harus 
menggunakan  rangkaian  seperti  yang  digunakan  pada  sketsa  ​keypad  4x4​.  Selanjutnya, 
unggah sketsa berikut: 

Sketsa : password.ino
#include <Keypad.h>

char tombol[4][4] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

String password = "DA124";


String sandiPemakai;

byte pinBaris[] = {3, 4, 5, 6};


byte pinKolom[] = {7, 8, 9, 10};
Keypad keypad = Keypad(makeKeymap(tombol), pinBaris, pinKolom, 4, 4);

int posisi = 0;
boolean aksesDitolak = false;

void setup() {
Serial.begin(9600);
}

void loop() {
char kode = keypad.getKey();

157
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

if (kode == NO_KEY){
return; // Akhiri loop()
}

if (kode == '*'){
sandiPemakai = ""; // Kosongkan
return; // Akhiri loop()
}

if (kode == '#') {
if (sandiPemakai.equals(password)) {
Serial.println("Akses Diterima");
delay(2000);
Serial.println("Pintu sudah ditutup kembali");
}else{
Serial.println("Akses ditolak");

sandiPemakai = ""; // Kosongkan


return; // Akhiri loop
}

sandiPemakai = sandiPemakai + kode;


Serial.println(sandiPemakai);
}
}
Adapun  kode  berikut ditujukan untuk memproses perbandingan isi ​sandiPemakaian dengan 
isi password sekiranya isi kode berupa ‘#’; 

if(kode == '#') {

if (sandiPemakai.equals(password)) {

Serial.println("Akses Diterima");

delay(2000);

158
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat
Fundamental Arduino Microcontroller Kit 

Serial.println("Pintu sudah ditutup kembali");

}else{

Serial.println("Akses ditolak");

sandiPemakai = ""; // Kosongkan

return; // Akhiri loop

Perbandingan kedua string dilakukan dengan menggunakan: 

sandiPemakai.equals(password)

Jika kedua string sama, tiga pernyataan berikut dieksekusi: 

Serial.println("Akses Diterima");

delay(2000);

Serial.println("Pintu sudah ditutup kembali");

Jika kedua string tidak sama, pernyataan berikut dijalankan: 

Serial.println("Akses ditolak");

Setelah  ​if..else  dijalankan,  string  sandiPemakai  dikosongkan  dan  prosedur loop()


diakhiri.  Adapun  jika  kode  tidak  berupa  ‘*’  maupun  ‘#’,  isi  kode  ditambahkan  diakhir 
sandiPemakai  dan  ​Serial.println(kode)​;  dijalankan.  Dalam  hal  ini, 
Serial.println(kode)​; adalah ​perintah  yang  ditujukan  untuk  melacak  hasil  sementara 
pada variabel s
​ andiPemakai​. 

159
Gedung LKP Pascal Lembaga Pelatihan
Jl. Gerilyawan No. 1 PASCAL
Kota Cirebon, Jawa Barat

Anda mungkin juga menyukai