02 Arduino Rev.1
02 Arduino Rev.1
2 PENGENALAN ARDUINO
Arduino merupakan suatu proyek open-source yang diinisiasi oleh Massimo Banzi, David Cuartielles, David
Mellis, dan Nicholas Zambetti. Arduino terdiri dari dua perangkat, yaitu perangkat keras (hardware) dan
perangkat lunak (software). Sifat open-source ini memperbolehkan pengguna untuk mengakses informasi
sumber seperti skematis rangkaian listrik untuk perangkat keras dan kode pemrograman untuk perangkat lunak.
Perangkat keras Arduino dapat kita beli dengan harga yang relatif murah bila dibandingkan dengan development
board sejenis. Selain itu perangkat lunak yang ada dapat kita gunakan secara gratis dan dapat berjalan di sistem
operasi Windows, Linux, maupun Macintosh.
Arduino telah berkembang cukup lama, sehingga saat ini di pasaran sudah ada berbagai tipe Arduino. Beberapa
tipe papan yang dibuat oleh Arduino:
• Arduino Duemilanove : tipe paling tua, memakai prosesor 8 bit ATmega 328 dan chip FTDI untuk
komunikasi ke komputer.
• Arduino Uno : penerus Duemilanove dengan prosesor ATmega328P, dan prosesor ATMEGA8U2-MU
untuk komunikasi ke komputer.
• Arduino Nano: sama seperti UNO, namun dengan bentuk yang lebih kecil. Terdapat jenis papan standar
dan yang telah dilengkapi perangkat tambahan seperti BLE, WIFI dan LoRa.
• Arduino Mega 2560 : berbasis ATmega 2560, yang digunakan untuk mengendalikan lebih banyak
perangkat dari seri ATmega328P.
• Arduino Due: seri dengan 32 bit Atmel SAM3X8E ARM Cortex-M3, untuk penggunaan yang lebih
kompleks dari seri Mega 2560.
dan seri-seri lainnya yang terus mereka kembangkan sesuai dengan kebutuhan.
2.1 TUJUAN
Dengan praktikum ini diharapkan mampu menguasai beberapa kompetensi khusus yang berhubungan dengan
mikroprosesor berbasis Arduino. Beberapa kompetensi khusus tersebut antara lain :
• Mengenal arsitektur perangkat keras Arduino, dan mampu mengoneksikannya ke piranti lain dengan
aman.
• Mampu melakukan pemrograman mikroprosesor Arduino dengan Arduino IDE.
• Menjelaskan perangkat keras Arduino dengan masukan luaran LED, Tombol dan Potensiometer
• Melakukan pemrograman dasar mikroprosesor
• Mampu menggunakan fungsi serial monitor untuk mengamati jalannya program Arduino, sebagai
pendeteksi jika terdapat kesalahan kode.
TF2016/Modul-1/1
2.2 ALAT & BAHAN
Untuk praktikum ini diperlukan alat dan bahan seperti pada tabel 2.1. Peserta diharapkan dapat menjaga kehati-
hatian dengan memperhatikan panduan praktikum dan petunjuk dari dosen serta asisten praktikum.
Tabel 2.1 Alat dan Bahan
Pada modul praktikum ini akan digunakan Arduino NANO dengan inti mikroprosesor ATmega328P, yang telah
dipasang pada kit Human Machine Interface (HMI) . Beberapa spesifikasi adalah sebagai berikut.
TF2016/Modul-1/2
Pada gambar di atas dapat dilihat bawah Arduino Nano ini memiliki 13 blok pin digital, D0-D13, yang dapat
difungsikan sebagai INPUT dan OUTPUT dengan fungsi pinMode(), digitalWrite(), dan
digitalRead(). Masing-masing digital pin ini bisa bekerja dengan dua level sinyal yaitu HIGH (sekitar 3 – 5
Volt) atau LOW (sekitar 0 - 2 Volt). Beberapa pin memiliki fungsi antara lain:
• UART (serial interface) untuk komunikasi serial receive (RX) and transmit (TX), khusus pin D0 (RX) dan
D1 (TX).
• Interrupt, adalah masukan yang dapat memicu perubahan jalannya program secara langsung, berguna
untuk masukan yang sifatnya penting dan mendesak, misalnya sinyal alarm. Pin yang bisa menerima
interupsi adalah pin D2 dan D3.
• PWM (Pulse Width Modulation) output, adalah luaran berupa pulsa periodik dengan lebar pulsa yang
bisa diatur. Hanya ada 6 pin yang sanggup untuk PWM yaitu D3, D5, D6, D9, D10 dan D11.
• SPI (Serial Parallel Interface) pada pin D10 (SS), D11 (MOSI), D12 (MISO) dan D13 (SCK), untuk
komunikasi dengan piranti serial.
• Digital output, misalnya untuk luaran ke LED. Dalam hal ini pin D13 sudah memiliki LED.
• Digital input, misalnya untuk menerima masukan dari tombol.
Selain itu Arduino Nano juga memiliki 8 blok pin Analog A0 - A7 dengan yang dapat difungsikan antara lain
sebagai :
• Analog Input, untuk menerima masukan sinyal yang harganya antara 0 – 5 Volt, dan akan dikonversi
menjadi angka 0 – 1023 (10 bit).
• I2C pada pin A4 (SDA) dan A5 (SCL), bisa digunakan untuk komunikasi antar Arduino.
TF2016/Modul-1/3
Gambar 2.2 Besar arus total pada pin Arduino Nano
Sumber: https://arduinoinfo.mywikis.net/wiki/ArduinoPinCurrent
Sebagai pengetahuan awal untuk menghindari kerugian, terdapat 10 perlakuan yang PASTI akan merusak papan
Arduino yaitu:
TF2016/Modul-1/4
Tabel 2.3 Komponen kit HMI
No Komponen Fungsi
1 Arduino Nano Mikroprosesor kit ini
2 LED (4 buah) LED yang menampilkan 4 bit luaran digital
3 BCD to 7 segmen decoder IC mengubah sinyal 4 bit menjadi sinyal untuk menyalakan 7 segment
4 LED 7 Segment LED menampilkan angka 0 – 9
5 Shift register Chip untuk mengontrol LCD berdasar luaran dari mikroprosesor
6 LCD Tampilan teks 2x16
7 Keypad Jajaran tombol untuk masukan angka dan beberapa huruf
8 Keypad encoder Chip untuk mengodekan sinyal keypad menjadi 4 bit masukan
9 Potensiometer Potensiometer geser untuk masukan analog
10 Tombol hijau (START) Tombol yang dapat ditekan untuk masukan analog (START)
11 Tombol merah (CANCEL) Tombol yang dapat ditekan untuk masukan digital (CANCEL)
12 Konektor DIP 10 Konektor untuk memberi daya / menyambung ke kit lain
TF2016/Modul-1/5
Tabel 2.4 Pemetaan pin Arduino modul HMI
SPI I2C
DIGITAL ANALOG
MODUL KOMPONEN 0 1 2 3 4 5 6 7 8 9 10 11 12 13 A0 A1 A2 A3 A4 A5 A6 A7
HMI LCD (x8) (SPI master) 1 1 1
BCDto7S 1 1 1 1
BCDto7S-Latch enable 1
LED (x4) 1 1 1 1
LED enable 1
Keypad-data 1 1 1 1
Keypad-ready 1
Potensiometer 1
Switch Green 1
Switch Red 1
Komunikasi (I2C slave) 1 1
TOTAL 1 1 2 2 2 2 1 1 1 1 0 1 1 1 1 1 1 1 1 1
Gambar 2.5 Koneksi Arduino ke Masukan Tombol dan Potensiometer; serta konektor DIL 10 untuk catu daya
TF2016/Modul-1/6
2.3.5 KESELAMATAN KIT HMI
Tindakan berikut akan merusak kit HMI, JANGAN dilakukan.
1. Terbalik memasang konektor DIP10, karena itu sama saja dengan memasang catu daya (VCC dan GND)
secara terbalik ke kit, akan menyebabkan Arduino maupun chip-chip lainnya rusak.
2. Lupa memasang konektor DIP10, dan hanya memakai daya dari USB yang terkoneksi ke Arduino. Ketika
semua perangkat (LED, 7 segment,LCD, dll) dihidupkan, arus yang ditarik akan melebihi 200mA, dan
menyebabkan Arduino rusak.
3. Melepas / pasang komponen ke kit saat daya maupun kabel USB masih terhubung ke kit.
1. Apa yang dimaksud dengan digital output ? Berapa besar tegangan dan arus digital output Arduino ?
2. Apa yang dimaksud dengan digital input ? Berapa besar tegangan dan arus digital input Arduino ?
3. Perhatikan skema koneksi Arduino ke 4 LED. Tahanan dalam LED bisa diabaikan, sementara tahanan
R10 hingga R13 adalah 330 Ohm, dan transistor T1 berfungsi sebagai low-side switching. Hitunglah arus
yang akan diambil rangkaian ini, lalu jelaskan apakah rangkaian ini masih aman bagi Arduino !
Untuk peserta yang memiliki Laptop, unduhlah program Arduino IDE dari situs
http://arduino.cc/en/main/software, kemudian lakukan pemasangan perangkat lunak tersebut dan
jalankan untuk mengujinya.
Untuk yang tidak memiliki, silakan melakukan review pemasangan Arduino IDE dengan memanfaatkan
video tutorial yang terdapat di Internet.
TF2016/Modul-1/7
2.5 PRAKTIKUM
Sebagai persiapan awal praktikum ini, peserta dapat melakukan dengan hati-hati urutan kerja berikut :
1. Hidupkan laptop/komputer yang telah disediakan kemudian jalankan Arduino IDE yang telah dipasang.
2. Persiapkan kit HMI yang tersedia satu set untuk masing-masing kelompok.
3. Pastikan steker catu daya terlepas dari sumber listrik kemudian koneksikan catu daya ke kit HMI dengan
menggunakan konektor DIP 10. Lakukan perlahan dengan mengikuti takik pada konektor agar tidak
terbalik.
4. Koneksikan catu daya ke jala-jala listrik. LED merah Arduino pada kit HMI akan menyala apabila kit
dalam keadaan baik dan siap digunakan.
5. Koneksikan kabel mikro USB (ujung yang kecil) ke Arduino Nano pada kit HMI.
6. Koneksikan kabel USB (ujung yang besar) ke salah satu port USB pada laptop/komputer.
Sebagai praktikum awal, peserta dapat menggunakan Serial Monitor yang terdapat pada Arduino IDE untuk:
Mengucapkan salam
Bertanya nama
Mengucapkan salam berkali kali pada nama
1 /* File : B01_hello.ino
2 * Deskripsi : Menanyakan nama (1 huruf) lalu menyapa hello ...
3 * Oleh : NIM / NAMA
4 */
5
6 char nama; //tipe data
7
8 // subrutin persiapan, akan jalan sekali saja saat awal
9 void setup() {
10 Serial.begin(9600);
11 delay(1000);
12 Serial.println("Halo,");
13 Serial.println(“Siapa nama mu?”);
14 }
15
16 // sub rutin yang akan berjalan terus berulang-ulang
17 void loop() {
// akan dilakukan pemeriksaan kemudian merespon input huruf yang
18
diberikan
19 if(Serial.available()){
20 nama = Serial.read();
TF2016/Modul-1/8
21 Serial.print("Selamat Siang, ");
22 Serial.println(nama)
23 }
24 }
Untuk memrogramnya kit HMI dengan menggunakan Arduino IDE, ikutilah langkah-langkah berikut:
1. Pilih menu “File – New”, akan muncul layar editor baru, dengan kode sumber kosong yang hanya berisi
subrutin setup() dan loop().
2. Ketiklah kode sumber 2.1 pada layar putih seperti terlihat pada gambar 2.7.
3. Setelah selesai, pilih menu “Save” (atau Save As) dan beri nama file yang sesuai dengan keterangan di
kode tersebut (B01_hello_NIM.ino).
Selanjutnya untuk memeriksa kebenaran kode sumber yang telah diketik, lakukanlah compile dan kemudian
unggah kode tersebut ke Arduino dengan menu upload. Silakan mengikuti tahapan berikut:
1. Tentukan dulu tipe mikroprosesor. Pilih menu “Tools”. Pada bagian “Board” pilihlah “Arduino Nano”
dan pada bagian “Processor” pilihlah “ATmega328P”.
2. Tentukan port serial (USB) yang terkoneksi ke Arduino pada submenu “port”.
3. Lakukan kompilasi (dengan klik tombol “Compile”, menu “Sketch – Verify/Compile”, atau tekan key
Ctrl+R).
TF2016/Modul-1/9
4. Akan terdapat pesan kesalahan berwarna oranye di atas blok hitam beserta keterangan kesalahannya.
Dalam kasus ini kesalahan merujuk pada hilangnya tanda penutup “;” pada baris ke-22. Silakan
memperbaiki dan lakukan kompilasi ulang.
5. Unggah program ke mikroprosesor (dengan klik tombol “Upload”, pilih menu “Sketch – Upload”, atau
tekan key Ctrl+U).
Setelah diprogram, Arduino akan otomatis berjalan. Untuk mencoba komunikasi antara Arduino dengan
komputer:
1. Pada Arduino IDE, jalankan Serial Monitor (klik tombol “Serial Monitor”, pilih menu “Tools – Serial
Monitor”, atau tekan key “Ctrl+Shift+M”). Akan muncul suatu layar baru.
2. Pada layar akan muncul pesan dari Arduino
3. Ketiklah nama Anda sesuai yang diminta
4. Amati salam berulang-ulang dari Arduino
Program untuk masalah itu mirip dengan program pada simulator (praktikum sebelumnya), hanya nomor pin-
nya saja yang berubah.
1. Pilih menu “File – New”. Akan muncul layar editor baru, dengan kode sumber kosong yang hanya
berisi subrutin setup() dan loop().
2. Ketiklah kode sumber 2.2 pada blok kode.
3. Setelah selesai, pilih menu “Save” (atau Save As). Beri nama file yang sesuai (B01_blink_NIM.ino).
1 /* File : B02_led_blink.ino
* Deskripsi : menyalakan 1 LED dengan periode 1
2
detik
3 * Oleh : NIM / NAMA
4 */
5
6 // konstanta pin LED pertama
7 // menggunakan direktif #define
TF2016/Modul-1/10
8 #define PIN_LED 4
9 #define PIN_ENABLE 9
10
// subrutin persiapan, akan jalan sekali saja saat
11
awal
12 void setup() {
13 Serial.begin(9600);
14 Serial.println("LED Blinking");
15
16 // atur mode pin ke LED sebagai OUTPUT
17 pinMode(PIN_LED, OUTPUT);
18 pinMode(PIN_LED_ENABLE, OUTPUT);
19
20 // enable LED
21 digitalWrite(PIN_LED_ENABLE, HIGH);
22 }
23
24 // sub rutin yang akan berjalan terus berulang-ulang
25 void loop() {
26 // nyala matikan LED pertama
27 Serial.print("Nyala ...");
28 digitalWrite(PIN_LED, HIGH);
29 delay(1000);
30 Serial.println("Padam");
31 digitalWrite(PIN_LED, LOW);
32 delay(1000);
33 }
Cobalah program ini dengan prosedur:
LED terhubung ke pin D4,D5,D6, dan D7; sementara LED enable ke pin D9.
LED menyala dari kiri ke kanan dengan periode 1 detik.
Silakan melengkapi kode 2.3 sehingga berjalan seperti spesifikasi yang diinginkan. Sebagai petunjuk, kode ini
mirip dengan modul praktikum 1 yang telah dilakukan dengan simulator UnoArduSim sebelumnya.
TF2016/Modul-1/11
Kode 2.3 LED Running
1 /* File : B03_led_running.ino
* Deskripsi : menyalakan 4 LED dari kiri ke kanan dengan periode 1
2
dtk
3 * Oleh : NIM / NAMA
4 */
5
6 // konstanta pin
7 #define PIN_LED 4
8 #define PIN_ENABLE 9
9
10 // subrutin persiapan, akan jalan sekali saja saat awal
11 void setup() {
12 Serial.begin(9600);
13 Serial.println("LED Running");
14
15 // atur mode 4 pin ke LED sebagai OUTPUT
16 for (int i=0; i<4; i++) {
17 pinMode(PIN_LED+i, OUTPUT);
18 }
19 pinMode(PIN_LED_ENABLE, OUTPUT);
20
21 // enable LED
22 . . . .
23 }
24
25 // sub rutin yang akan berjalan terus berulang-ulang
26 void loop() {
27 int i; // variabel untuk loop
28
29 // buat LED running dari kiri ke kanan pakai for
30 for (. . . ) {
31 digitalWrite(PIN_LED+i, HIGH);
32 delay(1000);
33 digitalWrite(PIN_LED, LOW);
34 Serial.print(i);
35 }
36 Serial.println();
37 }
TF2016/Modul-1/12
Untuk mencoba, diinginkan bahwa LED1 akan menyala jika tombol RED ditekan, dan LED4 menyala jika tombol
GREEN ditekan. Spesifikasi program:
LED1 terhubung ke pin D4, LED4 ke pin D7, LED enable ke pin D9.
Tombol RED terhubung ke pin D2, dengan mode pull up.
Tombol GREEN terhubung ke pin A6, dengan mode pull down.
Jika tombol RED ditekan, LED1 menyala.
Jika tombol GREEN ditekan, LED2 menyala.
Berikut ini adalah kode sumber program. Perhatikan cara baca tombol yang berbeda.
1 /* File : B04_button.ino
2 * Deskripsi : menyalakan LED berdasar penekanan tombol
3 * Oleh : NIM / NAMA
4 */
5
6 // konstanta pin LED pertama
7 // menggunakan direktif #define
8 #define PIN_LED1 4
9 #define PIN_LED4 7
10 #define PIN_BUTTON1 3
11 #define PIN_BUTTON2 A6
12
13 // subrutin persiapan, akan jalan sekali saja saat awal
14 void setup() {
15
16 Serial.begin(9600);
17 Serial.println("LED Push Button");
18
19 // atur mode pin ke LED sebagai OUTPUT
20 pinMode(PIN_LED1, OUTPUT);
21 pinMode(PIN_LED4, ...);
22
23 // atur mode pin ke LED sebagai INPUT
24 pinMode(PIN_BUTTON1, INPUT);
25 // untuk A6, sebagai analog input tak perlu diatur modenya
26 }
27
28 // sub rutin yang akan berjalan terus berulang-ulang
29 void loop() {
30 int pb1, pb2; // variabel penerima masukan
31
32 // tombol RED, pull-up, digital input
33 pb1 = digitalRead(PIN_BUTTON1); // baca push button
TF2016/Modul-1/13
34 Serial.print("Button 1 =");
35 Serial.println(pb1);
36 // nyalakan LED sesuai nilai pb1
37 if (pb1 = 0) {
38 digitalWrite(PIN_LED1, HIGH);
39 }
40 else {
41 digitalWrite(PIN_LED1, LOW);
42 }
43
44 // tombol GREEN, pull-down, analog input
45 pb2 = analogRead(PIN_BUTTON1); // baca push button
46 Serial.print("Button 2 =");
47 Serial.println(pb1);
48 if (pb1 = 0) {
49 digitalWrite(PIN_LED1, HIGH); // outputkan ke LED
50 }
51 else {
52 digitalWrite(PIN_LED1, LOW); // outputkan ke LED
53 }
54
55 // nyalakan LED sesuai nilai pb2
56 . . .
57
58 }
Pada kode 2.4 terdapat perlakukan khusus pada LED yang perlu diaktifkan, kesalahan penggunaan kode dan
kelalaian pemilihan konstanta sehingga tidak diperoleh luaran sesuai dengan spesifikasi. Silakan mencermati dan
memperbaiki kode tersebut.
Buatlah sebuah program yang akan menyalakan 4 LED, di mana terangnya LED diatur melalui potensiometer.
Spesifikasi program:
TF2016/Modul-1/14
Berikut ini adalah kode sumber program. Perhatikan cara baca tombol yang berbeda.
1 /* File : B05_potentiometer.ino
2 * Deskripsi : menyalakan LED berdasar posisi potensiometer
3 * Oleh : NIM / NAMA
4 */
5
6 // konstanta
7 #define PIN_LED 4
8 #define PIN_LED_ENABLE 9
9 #define PIN_POTENTIOMETER A7
10
11 // subrutin persiapan, akan jalan sekali saja saat awal
12 void setup() {
13
14 Serial.begin(9600);
15 Serial.println("LED Potentiometer");
16
17 // atur mode 4 LED sebagai OUTPUT
18 for ( . . . ) {
19 . . .
20 }
21
22 // untuk PIN_LED_ENABLE dan PIN_POTENTIOMETER
23 // tak perlu diatur modenya
24
25 // karena akan menyala terus, nyalakan semua LED
disini
26 for ( . . . ) {
27 . . .
28 }
29 }
30
31 // sub rutin yang akan berjalan terus berulang-ulang
32 void loop() {
33 int ain, aout; // variabel analog
34
35 // baca potensiometer,
36 // seharusnya bisa menerima angka 0-1023
37 ain = analogRead(PIN_POTENTIOMETER);
38 Serial.print("A input =");
39 Serial.println(ain);
40
41 // konversi ain kea out, dimana range aout adalah 0-
255
TF2016/Modul-1/15
42 aout = ain * 256 / 1024;
43
44 // atur kecerahan nyalakan LED sesuai nilai pb1
45 analogWrite(PIN_LED_ENABLE, aout);
46 Serial.print("A output =");
47 Serial.println(aout)
48
49 }
Silakan melengkapi bagian kode 2.5 yang hilang dengan melihat percobaan ataupun modul sebelumnya untuk
kontrol pengulangan dan juga cermati kesalahan sederhana lainnya.
2.7 LAPORAN
Tulislah baris kode kesalahan dan penambahan yang diperlukan pada praktikum di atas sehingga dapat berjalan
sesuai spesifikasi yang diinginkan. Kemudian kumpulkan pada Dosen/Asisten di akhir praktikum.
2.8 PUSTAKA
Jazi Eko Istiyanto, Pengantar Elektronika & Instrumentasi, Pendekatan Project Arduino, 2014
http://arduino.cc/
TF2016/Modul-1/16