Interaksi Arduino Dan LabVIEW
Interaksi Arduino Dan LabVIEW
LabVIEW
79
ikonnya di Block diagram, khususnya untuk objek‐objek yang
membawa data, baik data yang masuk dari pengguna ke program,
maupun data yang keluar dari program ke pengguna.
80
11. Fungsi: adalah semua kode‐kode dasar yang telah disediakan untuk
membuat subVI. Contoh fungsi seperti Add, Subtract.
Numerik Oranye/biru*)
Boolean Hijau
Keterangan *): warna kawat oranye untuk tipe data bilangan riil (float),
sedangkan warna kawat biru untuk tipe data bilangan bulat (integer).
81
Gambar 6.1 Konsep Dataflow pada program mencari rata-rata
Gambar 6.2 Menempatkan 2 objek Num Ctrl dan sebuah objek Num Ind
82
Gambar 6.3 Memunculkan konstanta (angka 2) dari menu popup
Gambar 6.4 Klik dan gerakkan mouse melingkupi fungsi dan konstanta
4. Pada menu Edit di jendela Block diagram, pilih Create SubVI, maka
fungsi dan konstanta tersebut berubah menjadi sebuah ikon (subVI).
83
5. Klik 2 kali pada ikon atau subVI tersebut, maka akan terbuka jendela
Front Panel dari subVI tersebut.
Gambar 6.6 Klik 2 kali subVI, maka muncul jendela Front Panel
84
Gambar 6.8 Tampilan subVI telah diubah
85
6.3.1 While Loop
Struktur While Loop memiliki 3 komponen utama, yaitu sebuah blok
yang dapat diatur luasannya, sebuah terminal input conditional (Stop If
True) dan sebuah terminal output counter (i).
86
Gambar 6.10 Numeric2 tidak akan berubah hingga While Loop selesai
Sama seperti pada While Loop, terminal output counter (i) akan
memberikan nilai jumlah perulangan yang telah dilakukan. Pembaca juga
dapat menambahkan terminal input conditional seperti pada struktur
87
While Loop, dengan cara mengklik kanan dinding blok For Loop, dan
pada menu popup yang muncul, pilih Conditional Terminal.
Berikut contoh program For Loop untuk membuat sebuah Array 2D atau
disebut juga Matriks dengan ukuran 3x4 (3 baris 4 kolom) dan dengan
nilai elemen‐elemennya berupa angka random.
Shift Register ini digunakan untuk meneruskan data dari satu peru‐
langan ke perulangan berikutnya. Bentuk Shift Register ini berupa
pasangan terminal di dinding kiri dan kanan blok, bergambar tanda
panah ke bawah dan ke atas.
Untuk mengetahui secara jelas cara kerja Shift Register ini, tambahkan
Shift Register untuk meneruskan data angka random pada blok For
Loop, dengan jumlah perulangan N sebanyak 1. Tarik ke bawah terminal
Shift Register di dinding kiri hingga muncul tambahan 2 terminal.
88
Tambahkan Indicator untuk setiap terminal Shift Register tersebut, baik
di dinding kiri maupun di kanan, dengan cara mengklik kanan ujung
terminal, sehingga muncul menu popup, dan pilih Create Indicator.
Kemudian tekan tombol Run, dan perhatikan bagaimana data digeser.
Blok mana yang akan dieksekusi, tergantung pada nilai input di terminal
selector (?). Di bagian atas setiap blok terdapat label yang menunjukkan
nilai input yang mengaktifkannya. Tipe data nilai input ini bisa berupa
Boolean (True atau False), Integer, String, atau Enumerasi. Enumerasi
adalah tipe data yang terdiri atas sekumpulan nilai.
89
di kategori Classic. Ring & Enum. Pembaca juga dapat menemukan objek
Enum tersebut dengan bantuan tombol Search. Setelah diperoleh,
tempatkan objek tersebut di Front Panel, dan kemudian klik‐kanan
hingga muncul menu popup dan pilih Edit Items. Setelah itu di kolom
tabel pada jendela yang muncul, berturut‐turut ketik kata “Tambah”,
“Kurang”, “Bagi” dan “Kali” untuk nilai 0, 1, 2 dan 3.
Gambar 6.13 Data Enumerasi dengan nama Tambah, Kurang, Bagi, Kali
90
Perhatikan bahwa pada blok berlabel “Tambah” diikuti dengan kata
Default. Blok Default ini digunakan untuk menyediakan pilihan blok
apabila tidak ada input yang sesuai. Jadi, apabila input pada terminal
selector struktur Case di luar keempat data Enum tersebut, maka
struktuf Case akan mengaktifkan blok berlabel Default ini. Pembaca
dapat memindahkan blok Default ini ke blok yang lain, dengan memilih
Make This The Default Case pada blok yang akan dijadikan blok Default.
(a) (b)
Gambar 6.15 (a) Tidak semua blok terhubung, (b) Semua blok terhubung
91
Pembaca dapat mengklik kanan kotak terminal dan memilih Use Default
If Unwired pada menu popup yang muncul, untuk membuat blok‐blok
yang tidak terhubung secara otomatis memberikan nilai default (nilai 0).
92
Sebagai gambaran mengenai manfaat State Machine ini, perhatikan
contoh aplikasi berikut.
Dari cara kerja di atas, dapat ditentukan komponen dari State Machine:
93
Gambar 6.18 Menempatkan 17 buah tombol OK Button
3. Ambil objek Cluster dari palet Controls di kategori Array, Matrix &
Cluster. Tempatkan pada Front Panel dan perbesar ukurannya.
94
4. Setelah ukuran Cluster cukup besar untuk memuat semua tombol,
berikutnya pindahkan semua tombol ke dalam Cluster.
5. Klik kanan pada Cluster, dan pilih AutoSizing kemudian Size to Fit
untuk menyesuaikan ukuran Cluster hingga tepat sama dengan blok
tombol. Hilangkan pula Label Cluster. Perhatikan jendela Block
Diagram, tampak bahwa semua ikon tombol dapat digabungkan
hingga menjadi sebuah ikon saja, yaitu ikon Cluster.
6. Klik kanan pada Cluster, dan pilih Reorder Controls in Cluster, maka
akan muncul nomor indeks Cluster di tiap tombol secara berurutan.
95
Gambar 6.23 Muncul nomor indeks ketika Reorder Controls in Cluster
96
9. Diinginkan setiap kali salah satu tombol ditekan, objek Num Ind
dapat menampilkan nomor indeks tombol tersebut. Untuk itu
tambahkan pada ikon Cluster fungsi Cluster to Array (dapat diambil
di kategori Array), untuk mengubah Cluster menjadi Array.
97
12. Jalankan program (tekan tombol Run), dan perhatikan bahwa ketika
tombol tidak ditekan, maka ditampilkan angka ‐1, sedangkan ketika
salah satu tombol ditekan, dan kemudian dilepas, muncul nomor
indeksnya sesaat, kemudian kembali ke angka ‐1.
(a) (b)
Gambar 6.28 (a) Tombol tidak ditekan, (b) Tombol angka 5 ditekan
13. Agar ketika tombol tidak ditekan, muncul angka 0, dan ketika
tombol angka 5 ditekan, muncul angka 5, maka tambahkan fungsi
increment (+1), yang dapat diambi di kategori Numeric.
98
14. Jalankan program, maka ketika tombol tidak ditekan, muncul angka
0, dan ketika tombol 5 ditekan dan dilepas, muncul angka 5 sesaat.
(a) (b)
Gambar 6.30 (a) Tombol tidak ditekan, (b) Tombol angka 5 ditekan
15. Agar angka yang ditampilkan tidak hanya sesaat, tetapi dapat
bertahan hingga tombol lain ditekan, maka tambahkan sebuah Shift
Register dan sebuah struktur Case. Hubungkan output increment ke
terminal selector struktur Case, maka secara otomatis Labelnya
berubah dari True/False ke 0/1, dengan nilai 0 sebagai Default.
99
16. Beri nilai 0 sebagai nilai awalan Shift Register, dengan cara
mengambil fungsi Num Const di kategori Numeric dan menghu‐
bungkannya ke terminal kiri Shift Register. Kemudian hubungkan
output terminal kiri ini ke input terminal kanan Shift Register
melalui struktur Case pada blok Case 0 (Default). Hubungan ini
berarti ketika tidak ada tombol yang ditekan (Default), maka data
yang ada di loop sebelumnya akan digunakan untuk loop saat ini.
Gambar 6.32 Memberi nilai awal 0 dan mengisi nilai Shift Register
saat Case Default dengan nilai data pada Loop sebelumnya
18. Karena ada 17 buah tombol, maka buat penambahan 16 blok lagi
pada Struktur Case, dengan cara mengklik kanan dinding struktur
Case dan memilih Add Case After pada menu popup yang muncul
sebanyak 16 kali. Kemudian hubungkan terminal selector untuk blok
Case 2 hingga 17 tersebut ke terminal kotak putih, sehingga terminal
kotak tersebut berwarna penuh sesuai tipe datanya.
100
Gambar 6.33 Memberikan nilai terminal selector atau nilai tombol
ke terminal kanan Shift Register pada saat blok Case 1
Gambar 6.34 Menambah blok Case dan mengulangi hal yang sama seperti
pada blok Case 1 untuk blok Case 2 hingga blok Case 17
19. Hubungkan output struktur Case ke ikon Num Ind untuk me‐
nampilkan hasilnya. Jalankan program dan perhatikan tampilan
kalkulator setiap kali tombol ditekan dan dilepas. Seharusnya
tampilan tersebut akan bertahan hingga tombol berikutnya ditekan.
Sampai di sini, program telah sesuai dengan cara kerja pertama.
101
Gambar 6.35 Menghubungkan output struktur Case dengan Num Ind
102
21. Lakukan juga hal serupa dengan tombol C dan tombol . (titik), yaitu
menghubungkan output blok Case 10 dan 12 dengan nilai 0.
22. Berikutnya cara kerja kalkulator kedua, adalah membuat agar ketika
tombol operator (+,‐,x,/) ditekan, angka yang ditampilkan sebelum‐
nya tidak berubah. Hal ini mudah saja dilakukan, yaitu dengan cara
meniru isi blok Case 0 untuk blok Case 13, 14, 15, dan 16, yang
merupakan blok Case untuk tombol operator (+,‐,x,/).
Gambar 6.39 Agar tampilan tidak berubah, blok Case 13, 14, 15 dan 16
meneruskan data Loop sebelumnya untuk data Loop berikutnya
103
23. Karena cara kerja kalkulator ketiga sama dengan cara kerja pertama,
maka berikutnya adalah cara kerja keempat.
Untuk itu, tambahkan 2 buah Shift Register lagi. Untuk Shift Register
pertama, beri nilai awal dengan Num Const (angka 0), sedangkan
untuk Shift Register kedua, beri nilai awal dengan Empty String.
Gambar 6.40 Menambahkan 2 buah Shift Register dengan nilai awal Numeric
Constant (angka 0) dan Empty String Constant
104
24. Pada blok Case 17, putus garis dari terminal selector ke output blok,
dan kemudian tambahkan sebuah struktur Case di dalamnya.
Hubungkan terminal selector struktur Case yang baru ini dengan
terminal kiri Shift Register yang memiliki nilai awal Empty String.
25. Struktur Case yang baru ini digunakan untuk melakukan operasi
perhitungan. Untuk itu ganti nama label “False”, Default dengan “0”,
Default, dan blok berikutnya berlabel “True” dengan “+”.
Gambar 6.42 Mengganti label “False” dengan “0”, “True” dengan “+”
105
26. Kemudian pada blok “+”, tambahkan fungsi Add, di mana input
pertama fungsi Add ini dihubungkan dengan terminal kiri Shift
Register yang baru dengan nilai awal 0, dan input kedua fungsi Add
ini dihubungkan dengan terminal kiri Shift Register yang lama.
Output dari fungsi Add ini dihubungkan dengan output blok Case 17.
27. Tambahkan 3 buah blok Case lagi dengan mengklik kanan dinding
struktur Case yang baru dan memilih Add Case After pada menu
popup yang muncul. Beri label berturut‐turut “‐“, “x” dan “/” dan
tambahkan fungsi Subtract pada blok Case “‐“, fungsi Multiply pada
blok Case “x”, fungsi Divide pada blok Case “/”. Kemudian
hubungkan input dan output untuk ketiga fungsi tersebut sama
seperti pada input dan output fungsi Add.
28. Perhatikan bahwa kotak output struktur Case yang baru masih
berwarna putih, karena ada blok yang belum menghubungkannya,
yaitu blok Case “0”, Default. Untuk itu pada blok Case “0”, Default,
hubungkan kotak terminal putih tersebut dengan input dari Shift
Register yang lama. Ini berarti ketika tidak ada tombol operator yang
dipilih (atau Default), maka data sebelumnya akan diteruskan.
106
Gambar 6.44 Menambah fungsi Subtract di blok Case “-”, fungsi Multiply
di blok Case “x”, dan fungsi Divide di blok Case “/”
107
Gambar 6.45 Meneruskan data pada blok Case “0”, Default
29. Karena Shift Register dengan nilai awal Empty String digunakan
untuk membawa data jenis operator, maka tambahkan pada blok
Case 13 yang merupakan blok untuk tombol +, sebuah string dengan
karakter + yang dihubungkan dengan terminal kanan Shift Register.
30. Ulangi langkah di atas untuk blok Case 14, 15 dan 16 yang berturut‐
turut merupakan blok untuk tombol ‐, x dan /, yaitu dengan
menghubungkan karakter ‐, x, dan / dengan Shift Register.
108
Gambar 6.47 Memberikan karakter -, x, atau / pada Shift Register apabila
blok Case 14, 15 atau 16 bekerja, atau ketika tombol -,x atau / ditekan
109
31. Tampak bahwa kotak terminal operator masih berwarna putih,
karena tidak semua blok terhubung dengan kotak terminal tersebut.
Untuk itu hubungkan kotak terminal tersebut dengan input dari
terminal kiri Shift Register yang membawa karakter operator, pada
semua sisa blok Case, yaitu blok Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
dan 12. Khusus untuk blok Case 17, beri karakter 0.
Gambar 6.48 Untuk blok Case 0 sampai 12, teruskan data dari terminal kiri
ke terminal kanan Shift Register untuk membawa karakter operator
Gambar 6.49 Untuk blok Case 17, beri karakter 0 pada kotak terminal
110
32. Kemudian ketika tombol operator ditekan, seharusnya data angka
pertama tidak hanya diteruskan untuk ditampilkan, tetapi juga
disimpan pada Shift Register yang baru, agar ketika tombol (=)
ditekan, data angka pertama tersebut dapat diambil. Maka
tambahkan garis data yang menghubungkan data dari Shift Register
lama ke Shift Register baru untuk blok Case 13, 14, 15 dan 16.
Gambar 6.50 Untuk Blok Case 13-16, hubungkan kedua Shift Register
33. Tampak kotak masih berwarna putih. Untuk itu, pada blok Case 0‐
12, hubungkan input dari terminal kiri Shift Register baru ke kotak
terminal putih, untuk meneruskan data ketika tidak ada tombol
operator yang ditekan. Khusus untuk blok Case 17, beri angka 0.
34. Jalankan program, maka simulasi kalkulator akan bekerja sesuai cara
kerja yang diminta. Namun demikian, masih banyak keterbatasan
dalam program ini, salah satunya adalah hanya bisa memasukkan
1 digit angka saja, yaitu angka antara 0‐9. Begitu pula angka pecahan
belum bisa, karena tombol titik belum berfungsi. Bab 8 akan
memberikan solusi untuk permasalahan ini. Terlepas dari semua
keterbatasan itu, pembaca telah mempelajari konsep State
Machine, yang banyak dipakai dalam pemrograman LabVIEW.
111
Gambar 6.51 Untuk blok Case 0-12, teruskan data Shift Register
Gambar 6.52 Untuk Blok Case 17, beri angka 0 pada Shift Register
112