Fungsi Dasar Pustaka Arduino
Ketika kita menggunakan pustaka Arduino pada MATLAB, maka MATLAB dapat mengambil alih kontrol pada papan Arduino. Kita dapat langsung mengetikkan sintaks atau skrip tertentu pada MATLAB, dan melihat hasilnya pada papan Arduino. Proses awal ketika membangun koneksi antara MATLAB dengan Arduino memang membutuhkan waktu beberapa saat. Kita harus sabar menunggu proses ini. Namun, untuk selanjutnya, kita dapat mengontrol Arduino sepenuhnya tanpa harus melakukan koneksi ulang. Hal ini akan berbeda jika kita mengetikkan program pada IDE Arduino. Perbaikan satu karakter saja harus melakukan proses upload ulang ke papan Arduino.
Jika kita menggunakan pustaka Arduino pada MATLAB, maka tentunya terdapat beberapa fungsi yang akan digunakan oleh MATLAB untuk berkomunikasi dan mengontrol Arduino. Secara garis besarnya, terdapat beberapa fungsi pada MATLAB yang sepadan dengan fungsi yang digunakan pada IDE Arduino. Fungsi sepadan maksudnya adalah fungsi yang memiliki kegunaan yang serupa, namun dengan perbedaan nama dan input untuk setiap fungsi. Amatilah Tabel 1.
Tabel 1. Kesepadanan fungsi Arduino dan MATLAB
Semua fungsi MATLAB pada Tabel 1 akan dimulai dengan pemanggilan fungsi utama, yaitu arduino(). Fungsi arduino() akan membangun koneksi antara MATLAB dan Arduino. Saat eksekusi ini dijalankan, maka kita harus menunggu beberapa saat sampai semua pustaka diunggah ke papan Arduino.
Menghubungkan MATLAB-Arduino
Pastikan komputer kita terkoneksi dengan Arduino melalui kabel USB. Untuk menghubungkan ke Arduino, ketikklah sintaks berikut pada Command Window:
a = arduino
a =
arduino with properties:
Port: 'COM33'
Board: 'Uno'
AvailableAnalogPins: [0,1,2,3,4,5]
AvailableDigitalPins: [2,3,4,5,6,7,8,9,10,11,12,13]
Libraries: {'I2C', 'SPI', 'Servo'}
Jika kita menggunakan produk tidak resmi (unofficial) atau produk dari vendor lain yang mungkin tidak terdeteksi secara langsung oleh komputer, maka pastikan nomer port COM yang digunakan dan jenis papan yang terpakai. Tambahkanlah input tersebut ke fungsi Arduino sebelumnya:
a = arduino('com33','uno')
a =
arduino with properties:
Port: 'COM33'
Board: 'Uno'
AvailableAnalogPins: [0,1,2,3,4,5]
AvailableDigitalPins: [2,3,4,5,6,7,8,9,10,11,12,13]
Libraries: {'I2C', 'SPI', 'Servo'}
Selain untuk produk unofficial, penambahan nomer COM dan jenis papan Arduino berguna untuk akses yang lebih cepat dan penggunaan lebih dari sebuah papan Arduino pada saat yang sama. Kita dapat membuat variabel yang berbeda untuk beberapa papan yang kita gunakan, misalnya:
a1 = arduino('com31','uno'); a2 = arduino('com33','uno'); a3 = arduino('com20','mega');
Pada pembahasan selanjutnya, kita akan menggunakan penulisan fungsi arduino(), lengkap dengan nomer COM dan jenis papannya. Penulisan seperti ini dapat digunakan, baik produk official maupun unofficial.
Membaca dan Menulis Pin Digital
Membaca Pin Digital
Tempatkanlah sebuah push button pada pin digital 8, seperti pada Gambar 1. Hubungkan salah satu kaki dengan GND dan sisanya ke pin digital 8.
Gambar 1. Pemasangan pushbutton
Hubungkan Arduino dengan komputer. Saat ini, penulis menggunakan COM33 (sesuaikan dengan komputer Pembaca). Aktifkan pull-up resistor internal pada Arduino untuk pin ke-8, dan buatlah sebagai input dengan sintaks berikut:
a = arduino('com33','uno'); configureDigitalPin(a,8,'pullup');
Ingat, jika variabel a masih tersimpan pada Workspace MATLAB, kita tidak perlu lagi menuliskan sintaks a=arduino('com31','uno'). Kita cukup memulai dari configureDigitalPin(a,8,'pullup'). Jika ditulis untuk kedua kalinya, maka akan terdapat pesan error yang mengatakan bahwa port telah terpakai. Skrip di atas Penulis asumsikan bahwa kita membangun koneksi dari awal.
Bacalah keadaan tombol, dan simpanlah keadaan tombol dengan nama variabel tertentu, misalnya buttonState:
buttonState = readDigitalPin(a,8)
buttonState =
1
Ubahlah posisi push button dengan cara menekan tombol tersebut, dan baca kembali begaimana keadaan tombol saat ini:
buttonState = readDigitalPin(a,8)
buttonState =
0
Menulis Pin Digital
Selain membaca, kita juga dapat menulis melalui digital pin. Saat ini kita akan menempatkan LED pada pin digital 7 dan sebuah resistor sebesar 220 atau 330 Ohm, seperti pada Gambar 2. Buatlah objek Arduino jika kita belum membuatnya.
Gambar 2. Pemasangan LED
a = arduino('com33','uno');
Nyalakanlah LED dengan sintaks berikut:
writeDigitalPin(a,7,1)
Untuk memadamkan, gunakanlah sintaks berikut:
writeDigitalPin(a,7,0)
Sebagai variasi, jika kita ingin menyalakan dan memadamkan LED secara bergantian sebanyak 10 kali dengan selang waktu 0,5 detik diantara menyala dan padam, maka kita dapat menggunakan sintaks berikut:
for i= 0:10 writeDigitalPin(a,7,1); pause(0.5); writeDigitalPin(a,7,0); pause(0.5); end
Kita dapat mengubah input untuk fungsi pause untuk mendapatkan variasi durasi menyala dan padam dari LED tersebut.
Memainkan Nada
Selain membaca posisi tombol dan menghidupkan LED secara digital, pustaka Arduino pada MATLAB juga dapat membangkitkan sinyal dengan frekuensi tertentu melalui pin digital. Pasanglah sebuah piezo buzzer melalui pin digital 11, seperti pada Gambar 3. Buatlah objek Arduino jika kita belum membuatnya:
Gambar 3. Pemasangan buzzer
a = arduino('com33','uno');
Mainkan nada dengan frekuensi 1500 Hertz selama 5 detik.
playTone(a,11,1500,5);
Untuk mematikan nada buatlah durasi menjadi 0 detik, atau buatlah frekuensi menjadi 0 Hertz.
playTone(a,11,1500,0);
atau:
playTone(a,11,0,5);
Membaca dan Menulis Pin Analog
Membaca Pin Analog
Setelah membahas bagaimana membaca dan menulis pada pin digital, mari kita lanjutkan untuk pin analog. Untuk membaca nilai analog, kita dapat memanfaatkan sebuah potensiometer. Rangkailah potensiometer melalui pin Analog 2, seperti pada Gambar 4.
Buatlah objek Arduino, jika kita belum membuatnya. Konfigurasikan pin sebagai input:
a = arduino('com33','uno'); configureAnalogPin(a,2,'input');
Putar-putarnya potensiometer, dan bacalah berapa tegangan yang masuk ke pin analog 2.
tegangan = readVoltage(a,2)
Gambar 4. Pemasangan potensiometer
Menulis Pin Analog
Untuk menulis pin Analog, kita harus menempatkan komponen kita pada pin yang memiliki fungsi PWM. Pada Arduino Uno, fasilitas ini terdapat pada Pin 3, 5, 6, 9, 10, dan 11. Pin ini dicirikan dengan karakter " ~ " di awal angka pin. Walaupun berada pada pin digital, fungsi PWM (Pulse Width Modulation) pada pin ini dapat membuat variasi output analog. Manipulasi sinyal digital dengan duty cycle tertentu dapat mengakibatkan variasi outout tegangan pada pin digital yang memiliki fasilitas PWM. Pembahasan lebih detail mengenai PWM akan dibahas pada BAB berikutnya.
Ubahlah rangkaian pada Gambar 2.. Jika sebelumnya berada pada pin 7, sekarang rangkailah sebuah LED melalui pin 9. Jangan lupa untuk menempatkan sebuah resistor. Pilihlah resistor dengan nilai antara 220 Ohm sampai 1 kOhm.
Buatlah objek Arduino jika kita belum membuatnya.
a = arduino('com33','uno');
Gambar 5. Pemasangan LED melalui pin PWM
Buatlah variasi tegangan pada pin 9. Karena Arduino bekerja dengan level tegangan 5 Volt, buatlah variasi antara 0 - 5. Misalnya kita ingin LED setengah redup. Kita dapat menuliskannya sebagai berikut berikut:
writePWMVoltage(a,9,2.5);
Selain menggunakan fungsi writePWMVoltage, kita juga dapat menggunakan perintah writePWMDutyCycle. Namun, perbedaannya adalah pada penulisan rentang inputnya. Jika menggunakan fungsi writePWMDutyCycle, kita memberi nilai antara 0 dan 1. Berikut contohnya:
writePWMDutyCycle(a,9,0.5);
Cobalah sintaks berikut, dan amati nyala LED pada pin 9:
step = (1-0)/20; for i = 1:20 writePWMDutyCycle(a, 9, i*step); pause(0.1); end for i = 1:20 writePWMDutyCycle(a, 9, 1-i*step); pause(0.1); end
Bagi pembaca yang ingin mencoba kombinasi membaca dan menulis pin analog, lakukanlah percobaan berikut. Rangkailah perangkat seperti pada Gambar 6. Ketiklah skrip berikut:
durasi = 300; while durasi > 0 tegangan = readVoltage(a, 2); writePWMVoltage(a, 9, tegangan); durasi = durasi - 1; pause(0.1); end
Gambar 6. Kombinasi Read dan Write sinyal analog
Demikian tutorial kali ini. Semoga bermanfaat. Terima kasih
Referensi
Tutorial ini diambil dari Buku:
Wardana, Kusuma. 2015. Teknik Antarmuka MATLAB dan Arduino - Membangun Interaksi antara Bahasa Komputasi Teknis dengan Platform Berbasis Mikrokontroler. MiaranaDIY
Mari Gabung
Halo
, Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.