MIKROKONTROLLER
B. KOMPETENSI DASAR
3.15 Menerapkan program aplikasi sederhana sistem minimum mikrokontroller
4.15 Membuat program aplikasi sederhana sistem minimum mikrokontroller
E. MATERI
1. Dasar- dasar Arduino
Arduino Dikembangkan dari thesis hernando Barragan pada tahun 2004, seorang
mahasiswa asal kolombia. Judul thesisnya yaitu “Arduino-Revolusi Open Hardware”. Arduino di
awali diruang kelas Interactive Design Institute di Ivrea (IDII), pada tahun 2005 di Ivrea, Italia.
Arduino ditemukan oleh Massimo Banzi dan David Cuartielles dengan tujuan awal yaitu untuk
membantu para siswa membuat perangkat desain dan interaksi dengan harga yang murah
dibandingkan perangkat lain yang tersedia pada saat itu, seperti BASIC Stamp yang harganya
cuup mahal bagi pelajar saat itu. Arduino berasal dari Bahasa Italia yang berarti teman yang
berani. Pada bulan Mei 2011, Arduino sudah terjual lebih dari 300.000 unit. Arduino saat ini sudah
menjadi saalah satu platform OSHW (Open Source Hardware)
Arduino adalah sebuah board mikrokontroller yang bersifat open source, dimana desain
skematik dan PCB bersifat open source, sehingga kita dapat menggunakan maupun
memodifikasinya. Board Arduino menggunakan chip / mikrokontroller Atmel AVR.
Page
1
Software untuk membuat, mengkompilasi, dan mengupload program yaitu Arduino IDE yang
juga bersifat open source. Software ini dapat diunduh di pada situs http://www.arduino.cc.
Arduino IDE menghasilkan file hex dari baris kode instruksi program menggunakan Bahasa C
yang dinamakan sketch setelah dilakukan compile dengan perintah verify/ compile.
Bootloader chip / IC pada Arduino Board telah diisi oleh program dinamakan Arduino
bootloader, yang memungkinkan kita men-gupload code program tanpa menggunakan hardware
tambahan (tanpa amenggunakan programmer dari luar, seperti AVR-ISP, STK 500, parallel
programmer, usb programmer). Bootloader akan aktif selama beberapa detik ketika board
mengalami reset.
A. Board Arduino
Arduino merupakan papan-tunggal mikrokontroler serba guna yang bisa diprogram dan
bersifat open-source. Platform Arduino sekarang ini menjadi sangat populer dengan
pertambahan jumlah pengguna baru yang terus meningkat. Hal ini karena kemudahannya
dalam penggunaan dan penulisan kode program. Tidak seperti kebanyakan papan sirkuit
pemrograman sebelumnya, Arduino tidak lagi membutuhkan perangkat keras terpisah
(disebut programmer atau downloader) untuk memuat atau meng-upload kode baru ke dalam
mikrokontroler. Cukup dengan menggunakan kabel USB untuk mulai menggunakan
Arduino.Selain itu, Arduino IDE menggunakan bahasa pemrograman C++ dengan versi yang
telah disederhanakan, sehingga lebih mudah dalam belajar pemrograman. Arduino akhirnya
berhasil menjadi papan sirkuit pemrograman paling disukai hingga menjadikannya sebagai
bentuk standar dari fungsi mikrokontroler dengan paket yang mudah untuk diakses.
Hardware dan software Arduino dirancang bagi para seniman, desainer, pe- hobi, hacker,
pemula dan siapapun yang tertarik untuk menciptakan objek interaktif dan pengembangan
lingkungan. Arduino mampu berinteraksi dengan tombol, LED, motor, speaker, GPS,
kamera, internet, ponsel pintar bahkan dengan televisi. Fleksibilitas ini dihasilkan dari
kombinasi ketersediaan software Arduino yang gratis, papan perangkat keras yang murah,
dan keduanya yang mudah untuk dipelajari. Hal inilah yang menciptakan jumlah pengguna
menjadi sebuah komunitas besar dengan berbagai kontribusinya yang telah dirilis pada
berbagai proyek dengan berbasiskan Arduino.
Arduino Uno merupakan versi terbaru dari keluarga Arduino, berbasis mikrokontroler
ATmega328, menyempurnakan tipe sebelumnya, Duemilanove. Perbedaan Arduino tersebut
adalah tidak menggunakan IC FTDI (Future Technology Devices International) USB to Serial
sebagai driver komunikasi USB-nya tetapi menggunakan mikrokontroler ATmega8U2 yang
diprogram sebagai konverter USB ke serial. Uno sendiri diambil dari bahasa Italia yang
artinya 1 (satu). Gambar 1 adalah board Arduino Uno dengan spesifikasi hardware :
• Microcontroller : ATmega328
• Tegangan Operasi : 5 V
• Tegangan Input : 7 – 12V
• Digital I/O : 14 pin
• PWM : 6 channel
• Analog Input : 6 channel
• Memory : 32KB Flash PEROM (0,5 KB digunakan oleh bootloader), 2KB SRAM dan
1KB EEPROM
• Frekuensi Clock : 16 MH
Page
2
Gambar 1. Board Arduino Uno
Beberapa produk board yang diproduksi Arduino yang ada dipasaran, seperti pada
tabel 1 dibawah ini :
Tabel 1. Produk Board Arduino
No Nama Board No Nama Board
1 Arduino Uno 14 Lilypad Arduino
2 Arduino Leonardo 15 Arduino NG
3 Arduino Due 16 Arduino Extreme
4 Arduino Yun 17 Arduino Diecimila
5 Arduino Tre 18 Arduino Mega
6 Arduino Micro 19 Arduino Mega 2560
7 Arduino Robot 20 Arduino Pro
8 Arduino Esplora 21 Arduino Pro Mini
9 Arduino Mega ADK 22 Arduino Ethernet
10 Arduino Flo 23 Arduino Duemilanove
11 Arduino USB 24 Arduino Shields
12 Arduino Nano 25 Arduino Single Side Serial
13 Arduino Serial 26 Arduino Mini
Gambar 2. memperlihatkan bagian utama dari papan Arduino uno, yakni terminal
power supply, port USB, pin digital I/O, tombol reset, mikrokontroler ATmega328 dan pin
analog input.
Þ Power Supply
Pada Arduino board, ada 2 (dua) pilihan sumber tegangan yang dapat digunakan, yakni dari
port USB maupun dari power supply eksternal. Dengan menghubungkan port USB di
Page
3
komputer/laptop dengan Arduino maka secara otomatis power supply Arduino bersumber
dari port USB. Untuk sumber tegangan eksternal (non-USB) yakni dengan menghubungkan
Arduino board dengan sumber tegangan DC. Tegangan yang direkomendasikan adalah 7
sampai 12 V, jika kurang dari 7V akan menyebabkan ketidakstabilan tegangan, sedangkan
jika lebih dari 12V akan menyebabkan panas dan akibat fatal berupa kerusakan pada board
Arduino.
Þ Input–Output
Port Arduino berbeda penamaannya dengan sistem minimum mikrokontroler atau
microntroller development system. Sebagai contoh pada system minimum ATmega8535
penamaan port adalah PORTA, PORTB, PORTC dan PORTD, untuk akses per-bit maka
PORTA.0 s/d PORTA.7, contoh lain pada AT89S51 maka PORT0, PORT1 dan seterusnya.
Sistem penamaan port pada Arduino merupakan urutan nomor port, mulai dari nomor nol (0),
satu (1) dan seterusnya. Untuk digital I/O dengan nama pin 1, 2 sampai 13, sedangkan untuk
analog input menggunakan nama A0, A1 sampai A5.
Pada Arduino uno terdapat 14 pin digital input – output. Secara umum berfungsi sebagai port
input – output biasa, namun ada beberapa pin yang mempunyai fungsi alternatif. Sebagai
contoh, pin 2 dan 3 juga sebagai pin interupsi eksternal. Kemudian pin 5,6,9,10 dan 11 dapat
dipakai untuk PWM (Pulse Width Modulation) yang sering dipakai untuk kendali motor DC
maupun motor servo. Tabel 2 menunjukkan nomor dan fungsi pin pada Arduino uno
Tabel 2. Konfigurasi pin Arduino Uno
Þ Analog Input
Arduino memiliki 6 pin analog input, berfungsi membaca sinyal masukan analog seperti sensor
analog. Meskipun demikian pin analog input dapat pula digunakan untuk keperluan digital I/O.
Tabel 3. menunjukkan nomor dan fungsi pin input analog.
Page
4
pengatur suhu, display LCD, dan masih banyak yang lainnya. Gambar 3. adalah contoh produk
alat menggunakan Arduino.
Page
5
diupload sebelumnya. Jika IDE hendak mengupload program baru, bootloader seketika
menghentikan eksekusi program berganti menerima data program untuk selanjutnya
diprogramkan dalam memori program mikrokontroler.
Hubungan komunikasi data antara IDE arduino dengan board Arduino digunakan
komunikasi secara serial dengan protokol RS232. Jika board arduino sudah dilengkapi
dengan komunikasi serial RS232 (biasanya USB), maka dapat langsung ditancapkan ke
USB komputer. Piranti serial RS232 ini digunakan jika board arduino atau arduino buatan
sendiri tidak dilengkapi dengan piranti serial 232.
Page
6
Gambar 7. Memilih Board
• Pilih port serial (Gambar 8)
Pilih perangkat serial Arduino dari menu Tools | Serial Port. Biasanya Port akan
otomatis terdeteksi.
Page
7
Gambar 10. Interface Arduino IDE
Interface Arduino IDE tampak seperti gambar 10. Dari kiri ke kanan dan atas ke bawah,
bagian-bagian IDE Arduino terdiri dari:
• Verify
Pada versi sebelumnya dikenal dengan istilah Compile. Sebelum aplikasi diupload ke
board Arduino, biasakan untuk memverifikasi terlebih dahulu sketch yang dibuat. Jika
ada kesalahan pada sketch, nanti akan muncul error. Proses Verify / Compile
mengubah sketch ke binary code untuk diupload ke mikrokontroller.
• Upload
Tombol ini berfungsi untuk mengupload sketch ke board Arduino. Walaupun kita tidak
mengklik tombol verify, maka sketch akan di-compile, kemudian langsung diupload ke
board. Berbeda dengan tombol verify yang hanya berfungsi untuk memverifikasi source
code saja.
• New Sketch
Membuka window dan membuat sketch baru
• Open Sketch
Membuka sketch yang sudah pernah dibuat. Sketch yang dibuat dengan IDE Arduino
akan disimpan dengan ekstensi file .ino
• Save Sketch
Menyimpan sketch, tapi tidak disertai mengcompile.
• Serial Monitor
Membuka interface untuk komunikasi serial, nanti akan kita diskusikan lebih lanjut pada
bagian selanjutnya
Page
8
• Keterangan Aplikasi
Pesan-pesan yang dilakukan aplikasi akan muncul di sini, misal "Compiling" dan "Done
Uploading" ketika kita mengcompile dan mengupload sketch ke board Arduino
• Konsol
Pesan-pesan yang dikerjakan aplikasi dan pesan-pesan tentang sketch akan muncul
pada bagian ini. Misal, ketika aplikasi mengcompile atau ketika ada kesalahan pada
sketch yang kita buat, maka informasi error dan baris akan diinformasikan di bagian
ini.
• Baris Sketch
Bagian ini akan menunjukkan posisi baris kursor yang sedang aktif pada sketch.
• informasi Port
Bagian ini menginformasikan port yang dipakah oleh board Arduino.
Page
9
Secara sederhana, sketch dalam Arduino dikelompokkan menjadi 3 blok (Gambar 12), yakni
: Header, Setup dan Loop. Untuk program yang lebih kompleks akan ada blok lain berupa fungsi-
fungsi pendukung.
Header
Pada bagian ini biasanya ditulis definisi-definisi penting yang akan digunakan selanjutnya
dalam program, misalnya penggunaan library dan pendefinisian variable. Code dalam blok ini
dijalankan hanya sekali pada waktu compile. Di bawah ini contoh code untuk mendeklarasikan
variable led (integer) dan sekaligus di isi dengan angka 13
int led = 13;
Setup
Di sinilah awal program Arduino berjalan, yaitu di saat awal, atau ketika power on Arduino
board. Biasanya di blok ini diisi penentuan apakah suatu pin digunakan sebagai input atau output,
menggunakan perintah pinMode. Initialisasi variable juga bisa dilakukan di blok ini
// the setup routine runs once when you press reset:
Loop
Blok ini akan dieksekusi secara terus menerus. Apabila program sudah sampai akhir blok,
maka akan dilanjutkan dengan mengulang eksekusi dari awal blok. Program akan berhenti
apabila tombol power Arduino di matikan. Di sinilah fungsi utama program Arduino kita berada.
void loop() {
digitalWrite(led, HIGH); // nyalakan LED
delay(1000); // tunggu 1000 milidetik
digitalWrite(led, LOW); // matikan LED
delay(1000); // tunggu 1000 milidetik
}
Page
10
Pengenalan Pemograman Arduino
Arduino diprogram menggunakan bahasa pemrograman C. Pada materi kali ini, kita akan
mencoba mengenal beberapa dasar dalam memprogram arduino menggunakan bahasa C pada
IDE Arduino yang telah kita install pada materi sebelumnya.
• Struktur Pemograman
Setiap program Arduino (biasanya disebut sketch) memiliki setidaknya dua fungsi
(biasanya disebut routines).
void setup()
{
Tempat mengetik kode program
}
Semua code yang diletakkan diantara tanda kurung kurawal { } akan dijalankan sekali saat
program mulai dijalankan.
void loop()
{
Tempat mengetik kode program
}
Fungsi ini akan dijalankan setelah fungsi setup. Setelah itu fungsi ini akan terus dijalankan
berulang kali, dan akan berhenti jika kita melepaskan catu daya Arduino dari sumber listrik.
• Syntax
Salah satu hal yang membuat bahasa C cukup merepotkan yaitu elemen formating yang
harus dipahami (namun, ini juga yang membuat bahasa C menjadi bahasa pemrograman yang
powerful). Jika kita menguasainya maka kita tidak akan terlalu kesulitan dalam memrogram
Arduino
void loop()
{
...program yang dibaca
//baris ini tidak akan dibaca oleh program
void loop()
{
...program yang dibaca
/* apapun yang diketik diantara tanda ini tidak akan dibaca oleh
program
*/
...program yang dibaca
}
{}(kurung kurawal)
Digunakan untuk mendefinisikan awal dan akhir dari code program.
Contoh:
void loop()
{//awal program
...program
...program
...program
}//akhir program
;(semicolon)
Setiap baris code harus diakhiri dengan tanda ; (biasanya tanda ini yang sering lupa
digunakan oleh pemula sehingga program tidak bisa di compile)
Contoh :
void loop()
{
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
• Variable
Variable adalah tempat untuk menyimpan data. Variable memiliki nama, nilai, dan tipe data.
Statementnya biasa disebut deklarasi.
Þ Int (integer)
Tipe data yang paling sering digunakan, menyimpan data sebesar 2 bytes (16 bits).
Menyimpan nilai dari -32,768 sampai 32,768.
Þ Long (long)
Digunakan jika datanya lebih besar dari data integer. Menggunakan 4 bytes (32 bits)
memori RAM dan memiliki range - 2,147,483,648 dan 2,147 ,483,648.
Þ Boolean (Boolean)
Variable sederhana yang menyimpan nilai True atau False. Sangat berguna karna hanya
menggunakan 1 bit memori RAM.
Page
12
Þ Float (Float)
Digunakan untuk floating point math (decimals). Memori yang digunakan 4 bytes (32
bits) RAM range nilai antara -3.4028235E+38 dan 3.4028235E+38.
Þ Char (Character)
Menyimpan sebuah karakter mengunakan ASCII code (contoh: 'A' = 65). Memori 1 byte
(8 bits) RAM. Arduino menggunakan strings sebagai sebuah array dari banyak char
• Math Operator
Operator digunakan untuk memanipulasi nilai (cara kerjanya sama seperti matematika
sederhana)
= : (sama dengan ) (contoh. x = 10 *2 (x sekarang sama dengan 20))
% : modulo (contoh. 12 % 10 ( sisa setelah dibagi yaitu 2))
+ : (penambahan)
- : (pengurangan)
* : (perkalian)
/ : (pembagian)
• Comparasion Operator
Operator yang digunakan untuk perbandingan secara logical
== : (Sama dengan)
(contoh, 12 == 10 F ALSE atau 12 == 12 TRUE)
!= : (tidak sama dengan)
(contoh, 12 != 10 TRUE atau 12 != 12 F ALSE)
< : (lebih kecil dari)
(contoh, 12 < 10 F ALSE atau 12 < 12 FALSE atau 12 < 14 TRUE)
> : (lebih besar dari)
(contoh, 12 > 10 TRUE atau 12 > 12 F ALSE atau 12 > 14 FALSE)
• Control Structure
Program memerlukan kontrol untuk mengendalikan hal-hal apa yang akan dilakukan
selanjutnya, berikut adalah beberapa contoh dasar metode pengontrolan.
IF … ELSE
if(kondisi A) Awalnya, Program akan mengecek
{ (kondisi A).
Kode program A Jika (kondisi A) TRUE/BENAR. program
} akan mengeksekusi (kode program A)
Page
13
FOR …
Digunakan ketika kita ingin mengulangi code sebuah nilai beberapa kali, nanti akan kita
pelajari lebih lanjut pada contoh kasus agar lebih mudah memahaminya.
For (int i = 0; i < (menghitung ke atas i++ Atau kebawah i-- )
#repeats; i++){ }
• Digital
Þ pinMode(pin, mode);
Digunakan untuk menyeting mode pin, Pin adalah nomer pin yang ingin digunakan (pin
0 sampai pin 19). Mode bisa berupa INPUT atau OUTPUT.
Contoh :
pinMode (13,INPUT); “artinya pin 13 pada arduino kita gunakan
sebagai input.”
Þ Int digitalRead(pin);
Sebuah pin yang sudah kita seting sebagai input dapat memberikan pin arduino nilai
HIGH (+5 volt) atau LOW (Ground).
Contoh :
int digitalRead(13); “program akan membaca nilai pada pin 13,
apakah ada tegangan (+5 volt). jika ada, maka
program akan membaca nilai HIGH dan jika
tidak ada tegangan (ground) , maka program
membaca nilai LOW”
• Analog
Meskipun Arduino merupakan mesin digital namun, Arduino juga dapat digunakan untuk
mengoprasikan analog (dengan sedikit trik).
Contoh :
int analogRead(pin); Ketika input dari pin analog diseting
sebagai INPUT, kita dapan membaca
Page
14
tegangan inputnya.
Nilainya mulai dari 0 (untuk 0 volt) dan
1024 (untuk 5 Volt).
4. Aplikasi Single dan Double Digit Seven Segment menggunakan Arduino Uno
Dalam membuat aplikasi single digit seven segment kita memerlukan beberapa komponen
seperti seven segment, resistor, dan Arduino Uno.
Þ Seven segment
Display 7 segment merupakan komponen yang berfungsi sebagai penampil karakter
angka dan karakter huruf. Display 7 segment sering juga disebut sebgai penampil 7
ruas. Pada display 7 segment juga dilengkapi karakter titik (dot) yang sering
dibutuhkan untuk karakter koma atau titik pada saat menampilkan suatu bilangan.
Display 7 segment terdiri dari 7 penampil karakter yang disusun dalam sebuah
kemasan sehingga dapat menampilkan karakter angka dan karakter huruf. Terdapat
7 buah penampil dasar dari LED (Light Emiting Diode) yang dinamakan karakter A-F
dan karakter dot. Bentuk susunan karakter penampil karakter A-F pada display 7
segmen dapat dilihat pada gambar berikut.
Page
15
Gambar 14. Segment Common Anode
Rangkaian Internal Display 7 Segment Common Cathoda
Page
16
Gambar 17. Double Digit 7 Segment Gambar 18. Singel Digit 7 Segment
Þ Resistor
Resistor adalah komponen elektronika dua saluran yang
didesain untuk menahan arus listrik dengan memproduksi
penurunan tegangan di antara kedua salurannya sesuai
dengan arus yang mengalirinya. Resistor dapat
diumpamakan dengan sebuah papan yang digunakan
untuk menahan aliran air yang deras di parit kecil. Dengan
Gambar 19. Resistor
adanya tahanan papan ini, maka arus air menjadi
terhambat alirannya. Makin besar papan yang
dipergunakan untuk menahan air parit, makin kecil air yang
mengalir. Begitu pula peran resistor dalam elektronika,
makin besar resistansi (nilai tahanan), makin kecil arus dan
tegangan listrik yang melaluinya. Satuan resistor adalah
Ohm (simbol: Ω).
Þ 7 Segment 2 Digit
Berikut gambar PIN pada 7 Segment 2 Digit
Page
17
DAFTAR PUSTAKA
Santoso, Hari. 2015. Panduan Praktis Arduino untuk Pemula. trenggalek : www.elangsakti.com.
Andrianto, Heri dan Aan Darmawan. 2016. Arduino Belajar Cepat dan Pemrogrmannya. Bandung
: Informatika Bandung.
Faudin, Agus. 2017. Cara Mengakses Modul Display LCD 16 x 2. ………… : …………. Diakses
pada tanggal 30 Agustus 2019 di https://www.nyebarilmu.com/cara-mengakses-modul-
display-lcd-16x2/
Purnama, Agus. 2018. LCD (Liquid Cristal Display). …………..:………… diakses pada tanggal 30
Agustus 2019 di https://elektronika-dasar.web.id/lcd-liquid-cristal-display/
Sakti, Elang. 2014. Cara Kerja Sensor Ultrasonic, Rangkaian dan Aplikasinya. …….. : …………
Diakses pada tanggal 29 Agustus 2019 di https://www.elangsakti.com/2015/05/sensor-
ultrasonik.html
Page
18