01-Simulator Rev2
01-Simulator Rev2
1.1 TUJUAN
Unduhlah program UnoArduSim dari situsnya (pada modul ini digunakan versi 2.6.0). Pasanglah program
tersebut sebagai berikut:
TF2016/Modul-1/1
Setelah langkah itu anda akan mendapatkan folder UnoArduSimV2.6. Jalankan program simulator dengan
langkah:
1.4 PRAKTIKUM
TF2016/Modul-1/2
Gambar 3 Pengaturan blok LED
Arduino menggunakan Bahasa pemrograman C/C++ yang sudah disederhanakan. Pada layar sebelah kiri, kita
bisa meng-edit kode sumber. Di sebelahnya ada kolom berisi perintah-perintah dasar Arduino. Untuk latihan
pertama ini :
TF2016/Modul-1/3
3. Untuk menghentikan jalannya program, pilih menu “Execute – Halt”.
Salah satu keunggulan simulator untuk pembelajaran adalah, kita dapat menggunakan mode debug untuk
mengamati jalannya program, sehingga lebih memudahkan dalam memahami program tersebut. Mari kita coba:
1. Pilih menu “Execute – Reset”, agar mikroprosesor kembali ke kondisi awal mula.
2. Pilih menu “Execute – Step Into” (atau tekan tombol F4).
3. Perhatikan di panel kode sumber, nampak ada baris warna abu-abu yang menunjukkan perintah yang
sedang dijalankan.
4. Tekan kembali tombol F4, maka perintah berikutnya akan dijalankan.
5. Demikian seterusnya, kita dapat mengikuti jalannya program satu-satu dengan menekan tombol F4.
Step Into : laksanakan satu perintah, jika ada pemanggilan subrutin maka masuk ke subrutin tersebut.
Step Over : laksanakan satu perintah, jika ada pemanggilan subrutin maka selesaikan saja tanpa masuk
ke subrutin tersebut.
Step Into : laksanakan satu perintah, jika ada pemanggilan subrutin maka masuk ke subrutin tersebut.
Step Out-of : jalan sampai keluar dari subrutin yang tengah berlangsung.
Run To : gunakan mouse, klik suatu baris yang akan dituju. Tekan F7, maka program akan berjalan
sampai baris tersebut.
Berikut ini adalah kode sumber program. Perhatikan hal-hal yang baru:
Penggunaan variabel
Membaca masukan dari push button
1 /* File : A02_led_push_button.ino
5 */
TF2016/Modul-1/5
6
7 // konstanta pin LED pertama
9 #define PIN_LED1 8
10 #define PIN_BUTTON1 3
11
12 // subrutin persiapan, akan jalan sekali saja saat awal
13 void setup() {
15 pinMode(PIN_LED1, OUTPUT);
16
17 // atur mode pin ke LED sebagai INPUT
18 pinMode(PIN_BUTTON1, INPUT);
19 }
20
21 // sub rutin yang akan berjalan terus berulang-ulang
22 void loop() {
26 }
Ketik dan compile kode sumber tersebut seperti prosedur sebelumnya. Selanjutnya jalankan dan coba program
sebagai berikut:
Pastikan simulator dalam keadaan STOP dengan memerhatikan ikon dalam keadaan abu-abu. Aturlah blok pada
simulator sebagai berikut :
TF2016/Modul-1/6
1. Pilihlah blok LED, isikan pin = 08; warna = B (blue); mode koneksi ke ground
2. Pilih blok lainnya, isikan pin = 09; warna = G (green); mode koneksi ke ground
3. Pilih blok Push Button, isikan pin = 03; mode koneksi normal HIGH (pull-up)
4. Pilih blok Push Button, isikan pin = 02; mode koneksi normal HIGH (pull-up)
1 /* File : A03_Dua_push_button.ino
2 * Program : Dua Push Button
3 * Deskripsi : Mengendalikan LED dengan operator
4 * Oleh : NIM / NAMA
5 */
6 // konstanta pin LED pertama dan kedua
7 // menggunakan direktif #define
8 #define PIN_LED1 8
9 #define PIN_LED2 9
10 #define PIN_BUTTON1 3
11 #define PIN_BUTTON2 2
12
13 // subrutin persiapan, akan jalan sekali saja saat awal
14 void setup() {
15 // atur mode pin ke LED sebagai OUTPUT
16 pinMode(PIN_LED1, OUTPUT);
17 pinMode(PIN_LED2, OUTPUT);
18
19 // atur mode pin ke LED sebagai INPUT
20 pinMode(PIN_BUTTON1, INPUT);
21 pinMode(PIN_BUTTON2, INPUT);
22 }
23
24 // sub rutin yang akan berjalan terus berulang-ulang
25 void loop() {
26 boolean input1; // variabel penerima masukan
TF2016/Modul-1/7
27 input1 = digitalRead(PIN_BUTTON1); //baca push button 1
28 boolean input2; // variabel penerima masukan
29 input2 = digitalRead(PIN_BUTTON2); //baca push button 2
30
31 boolean result; //menampung hasil logika
result = input1 && input2; //keadaan result bergantung hasil
32 operator (&&)
33 digitalWrite(PIN_LED1, result); //outputkan ke LED 1
digitalWrite(PIN_LED2, !result); //outputkan ke LED 2, negasi
34 result
35 }
Setelah selesai meng-edit kode sumber 3 ke simulator, coba jalankan dan amati nyala LED 1 dan 2. Kemudian :
Gambar 9 Tombol 02 dalam keadaan “lepas” dan tombol 03 dalam keadaan “tahan”
3. Kamu dapat mengamati hasil dari logikan AND (&&) pada nyala LED 1 dan 2. Untuk lebih jelas kamu
dapat memperhatikan tabel berikut :
Dari tabel di atas kamu dapat mengetahui bahwa logika AND (&&) hanya akan bernilai true jika kedua keadaan
yang dibandingkan bernilai true. Dan keadaan setelah negasi (!) adalah kebalikan dari keadaan semua, ini dapat
kamu perhatikan pada nyala LED2 di mana keadaan LED2 merupakan negasi dari keadaan LED1.
TF2016/Modul-1/8
LED menyala dari kiri ke kanan dengan periode 1 detik.
Berikut adalah kode sumber untuk melaksanakan program tersebut. Perhatikan fitur baru:
Penggunaan konstanta
1 /* File : A04_led_running.ino
2 * Program : LED Running
3 * Deskripsi : menyalakan 4 LED dari kiri ke kanan
4 * Oleh : NIM / NAMA
5 */
6
7 // konstanta pin LED pertama
8 // menggunakan direktif #define
9 #Define PIN_LED 4
10
11 // subrutin persiapan, akan jalan sekali saja saat awal
12 void setup() {
13 // atur mode 4 pin ke LED sebagai OUTPUT
14 // perhatikan penggunaan konstanta PIN_LED untuk LED pertama
15 // kemudian ditambah angka untuk LED selanjutnya
16 pinMode(PIN_LED, OUTPUT);
17 pinMode(PIN_LED+1, OUTPUT);
18 pinMode(PIN_LED+2, OUTPUT);
19 pinMode(PIN_LED+3, OUTPUT);
20 }
21
TF2016/Modul-1/9
22 // sub rutin yang akan berjalan terus berulang-ulang
23 void loop() {
24 // nyala matikan LED pertama
25 digitalWrite(PIN_LED, HIGH);
26 delay(1000);
27 digitalWrite(PIN_LED, LOW);
28
29 // nyala matikan LED kedua
30 digitalWrite(PIN_LED+1, HIGH);
31 delay(1000);
32 digitalWrite(PIN_LED+1, LOW);
33
34 // nyala matikan LED ketiga
35 digitalWrite(PIN_LED+2, HIGH);
36 delay(1000);
37 digitalWrite(PIN_LED+2, LOW);
38
39 // nyala matikan LED keempat
40 digitalWrite(PIN_LED+3, High);
41 delay(1000);
42 digitalWrite(PIN_LED+3, LOW);
43
44 /* akan berulang kembali ke LED pertama
45 */
46
*) Kode di atas mengandung kesalahan, akan terlihat saat di-compile. Coba benarkan.
Jalankan program tersebut, amati apakah keempat LED memang menyala seperti diinginkan.
TF2016/Modul-1/10
1.4.5 KONTROL PENGULANGAN
Pada percobaan sebelumnya telah dibuat program lampu berjalan sesuai kode 3. Program tersebut akan
berjalan dengan benar, namun dari latihannya dapat dirasakan bahwa selama menulis harus dilakukan salin-
tempel dan perubahan pada sedikit variabel. Akan tetapi, untuk mengontrol LED dengan jumlah yang banyak
misalnya 100 buah atau lebih, proses ini sangat tidak efektif dan efisien. Oleh karena itu digunakan kontrol
pengulangan yang memungkinkan satu blok perintah dilaksanakan berkali-kali sesuai kondisi tertentu.
Bahasa C menyediakan tiga jenis pengulangan yaitu FOR, WHILE dan DO-WHILE. Jika digunakan dengan tepat,
kode menjadi singkat dan jalannya program akan efisien.
1. Apa variabel yang berubah (contoh pada percobaan LED Running, variabel nomor pin).
2. Berapa nilai awalnya (pada contoh dimulai dengan pin 4 ).
3. Berapa besar perubahannya (pada contoh adalah 1).
4. Berapa nilai akhirnya (pada contoh adalah PIN_LED = 7).
1 /* File : A05_led_pengulangan.ino
2 * Program : LED Running
3 * Deskripsi : menyalakan 4 LED dari kiri ke kanan dengan pengulangan
4 * Oleh : NIM / NAMA
5 */
6
7 // konstanta pin LED pertama
8 // menggunakan direktif #define
9 #define PIN_LED 4
10 #define PIN_LED3 7
11
12 // subrutin persiapan, akan jalan sekali saja saat awal
13 // contoh setup dengan pengulangan
14 void setup() {
15 for(int pin=PIN_LED; // variabel yg berubah, diberi nilai awal
16 pin <= PIN_LED3; // syarat terus, sesuai nilai akhir
17 pin++) // perubahan
18 {
19 pinMode(pin,OUTPUT); // bagian yang diulang
20 }
21 }
22
23 // sub rutin yang akan berjalan terus berulang-ulang
24 // nyala dari LED1 hingga LED4 dengan pengulangan
25 void loop(){
TF2016/Modul-1/11
26 // loop for, ditulis dalam 1 baris
27 for(int pin=PIN_LED; pin <= PIN_LED3; pin++) {
28 digitalWrite(pin,HIGH);
29 delay(1000);
30 digitalWrite(pin,LOW);
31 }
32 }
Pada contoh tersebut, yang perlu dipelajari adalah :
1. Perintah pengulangan for. Nampak bahwa perintah ini memiliki bagian kontrol dalam kurung () dan
bagian yang diulang dalam kurung {}. Bagian kontrol terdiri atas:
Inisialisasi: dijalankan sekali saja di awal pengulangan pertama.
Pemeriksaan: dijalankan di awal setiap pengulangan, jika berharga false maka pengulangan
berhenti.
Perubahan dijalankan di akhir setiap pengulangan.
2. Bagian pemeriksaan biasanya memakai operator komparison (==, !=, <, >, <=, >=) dikombinasikan
dengan operator boolean (&&, ||, !). Kesalahan kecil yang fatal di sini adalah salah menulis operator
(==) menjadi operator (=).
3. Pengubahan memakai operator inkremen (i++). Hal ini sama saja dengan menulis i=(i+1), namun lebih
singkat dan efisien.
1 /* File : A06_led_seleksi.ino
2 * Program : LED Running
3 * Deskripsi : menyalakan 4 LED dengan seleksi
4 * Oleh : NIM / NAMA
5 */
6
7
8 // konstanta pin LED pertama
9 // menggunakan direktif #define
10
11 #define PIN_BUTTON1 8
TF2016/Modul-1/12
12 #define PIN_LED 4
13 #define PIN_LED3 7
14
15 // subrutin persiapan, akan jalan sekali saja saat awal
16 // contoh setup dengan pengulangan
17
18 void setup(){
19 for(int pin=PIN_LED; // variabel yg berubah, diberi nilai awal
20 pin <= PIN_LED3; // syarat terus, sesuai nilai akhir
21 pin++) // perubahan
22 {
23 pinMode(pin,OUTPUT); // bagian yang diulang
24 }
25 pinMode(PIN_BUTTON1, INPUT);
26 }
27
28 void loop () {
29 boolean input1 = digitalRead(PIN_BUTTON1);
30 if (input1==HIGH){
31 for(int pin=PIN_LED; pin <= PIN_LED3; pin++) {
32 digitalWrite(pin,LOW);
33 }
34 }
35 if (input1==LOW){
36 for(int pin=PIN_LED; pin <= PIN_LED3; pin++) {
37 digitalWrite(pin,HIGH);
38 delay(1000);
39 digitalWrite(pin,LOW);
40 }
41
42 }
43 delay(100);
44
45 }
Berdasarkan kode 5, silahkan mengatur simulator sehingga diperoleh spesifikasi seperti yang diinginkan.
TF2016/Modul-1/13
1.5 TUGAS PRAKTIKUM
1 ...
2
3 // sub rutin yang akan berjalan terus berulang-ulang
4 void loop() {
Jalankan kembali program, coba tekan-tekan tombol dan amati keluaran LED.
TF2016/Modul-1/14
1.5.3 LED RUNNING
Silahkan modifikasi kode 3 agar LED menyala dari kanan ke kiri dengan mengubah urutan LOW dan HIGH pada
LED.
Kamu dapat memanfaatkan kode 4 dan kode 5 sebagai rujukan untuk membuat keadaan tersebut terjadi.
1.6 LAPORAN
1.7 PUSTAKA
Jazi Eko Istiyanto, Pengantar Elektronika & Instrumentasi, Pendekatan Project Arduino, 2014
TF2016/Modul-1/15