BBROBOTINDONESIA
PANDUAN PRAKTIKUM DASAR ARDUINO
www.BELAJARBIKINROBOT.WEEBLY.com
Praktikum 14 Belajar Arduino Input Output Analog dan Komunikasi Serial Pada praktikum kita kali ini, kita akan mempelajari penggunaan Input Analog dan juga Output Analog. Pembahasan kita kali ini akan sangat berguna, karena banyak dari sensor yang digunakan dalam aplikasi robotic merupakan sensor yang menghasilkan bacaan data analog. Katakanlah, potensiometer, LDR, Sensor Jarak Ultrasonic, dan lain sebagainya. Untuk praktikum kali ini, yang akan kita lakukan adalah menggunakan sebuah input analog (dalam hal ini komponennya yaitu potensiometer) untuk mengatur intensitas output analog (dalam hal ini LED yang kita hubungkan ke pin PWM Arduino). Tidak usah berlama-lama, kita lanjutkan langsung ke praktikumnya berikut ini.
Komponen yang dibutuhkan
Arduino Uno 1x
Protoboard 1x
LED5mm 1x
Resistor 330—1x
Langkah-Langkah Praktikum
Potensiometer 10Kohm 1x
Kabel Jumper 5x
Susun dan rangkailah komponen-komponen praktikum seperti gambar di atas. 1.Hubungkan Kaki 1 Potensiometer dengan pin 5 volt Arduino menggunakan kabel jumper (warna merah). 2. Hubungkan Kaki Tengah Potensiometer dengan pin A0 Arduino menggunakan kabel jumper (warna kuning). 3. Hubungkan Kaki 2 Potensiometer dengan jalur Gnd protoboard menggunakan kabel jumper (warna hitam). 4. hubungkanlah kaki + Anoda LED ke Pin 13 Arduino menggunakan kabel jumper Male (warna biru) 5. hubungkan kaki - Katoda LED dengan kaki 1 Resistor (resistor tidak ada kaki + atau - nya). 6. hubungkan kaki 2 Resistor dengan Pin Gnd Arduino menggunakan kabel jumper Male (warna hitam) 3. Pasangkan board Arduino dengan port USB komputer menggunakan kabel USB. 4. Bukalah IDE Arduino kemudian ketikkan sketch berikut. 1. const int pinInputPotensio = A0; const int pinOutputLED = 10; int bacaanInput = 0; int hasilOutput = 0; void setup() { Serial.begin(9600); } void loop() { bacaanInput = analogRead (pinInputPotensio); hasilOutput = map (bacaanInput,0,1023,0,255); analogWrite (pinOutputLED,hasilOutput); Serial.print("Nilai Potensiometer adalah ="); Serial.print(bacaanInput); Serial.print("\t Outputnya adalah ="); Serial.println(hasilOutput); delay(2); } 5. Jika sudah, compile menggunakan tombol "verify" cek apakah ada kesalahan pengetikan sketch. 6. Upload ke Board Arduino menggunakan tombol "Upload" atau melalui File > Upload. 7. Bukalah jendela komunikasi serial pada IDE arduino caranya, pilih Tools > Serial Monitor. Jika prosesnya benar, cobalah putar potensiometer kemudian perhatikan hasilnya pada IDE arduino jendela
komunikasi serial caranya pilih Tools > Serial Monitor. Perubahan nilai potensiometer akan menghasilkan intensitas yang berbeda terhadap output kecerahan nyala dari LED kita.
Diskusi Sketch Seperti biasa, kita coba membahas kode program dari praktikum di atas dengan membagi program tersebut. Yang pertama kali kita lakukan pada sketch ini yaitu membaginya menjadi 3 bagian program. Kita mulai dari blok yang pertama berikut ini.
BLOK PERTAMA Block sketch yang pertama pada praktikum ini yaitu, deklarasi dan inisialisasi variable-variable yang kita butuhkan. Berikut ini kode-kode deklarasi variable-variable tersebut. const int pinInputPotensio = A0; const int pinOutputLED = 10; int bacaanInput = 0; int hasilOutput = 0; kita perhatikan dahulu dua variable yang pertama. Variable “pinInputPotensio” dan variable “pinOutputLED”. const int pinInputPotensio = A0; const int pinOutputLED = 10; Kedua variable ini, kita berikan qualifier constanta agar variable ini tidak berubah-ubah nilainya akibat program selanjutnya. Untuk dua variable yang selanjutnya, tidak kita berikan qualifier. Mengapa? Karena variable yang selanjutnya ini akan kita gunakan sebagai variable yang menyimpan nilai yang berubah-ubah. int bacaanInput = 0; int hasilOutput = 0; variable “bacaanInput” akan kita gunakan untuk menyimpan perubahan nilai potensiometer, sedangkan variable “hasilOutput” akan kita gunakan untuk menyimpan perubahan nilai intensitas nyala LED pada protoboard. Baiklah, kita sudah beres dengan deklarasi dan inisialisasi variable. Sekarang kita lanjutkan ke blok program yang berikutnya.
BLOK KEDUA Pada blok yang kedua ini, kita meletakkan routine setup() kita. Berikut adalah kode programnya. void setup() { Serial.begin(9600); }
Tidak banyak yang kita lakukan di routine setup() ini. Di sini, kita hanya mengatur nilai baudrate komunikasi serial antara komputer dengan Arduino kita dengan baudrate 9600. Tentu Anda sudah familiar dengan setting komunikasi serial di atas. Untuk itu, mari kita lanjutkan kembali ke pembahasan blok program yang selanjutnya yaitu routine loop().
BLOK KETIGA Pada blok yang ketiga ini, kita meletakkan routine loop() kita, dan berikut ini kode-kodenya. void loop() { bacaanInput = analogRead (pinInputPotensio); hasilOutput = map (bacaanInput,0,1023,0,255); analogWrite (pinOutputLED,hasilOutput); Serial.print("Nilai Potensiometer adalah ="); Serial.print(bacaanInput); Serial.print("\t Outputnya adalah ="); Serial.println(hasilOutput); delay(2); } Pada routine loop() ini, kita mengawali program dengan membaca nilai dari pin Analog A0 (pin yang terhubung ke potensiometer). Kemudian, nilai yang tadi dibaca, kita simpan dalam sebuah variable yang bernama “bacaanInput”. bacaanInput = analogRead (pinInputPotensio); Ingat kembali, fungsi analogRead() akan membaca nilai antara 0 sampai dengan 1023.—yang menjadi masalah adalah, pin PWM yang kita jadikan Output LED tidak dapat menerima nilai ini, karena nilai yang dapat diterima oleh pin PWM (dalam hal ini pin 10 Arduino) hanya bisa membaca nilai “Analog” 0 sampai 255. Jadi, apa yang harus kita lakukan?!. Nah, untuk itulah, kode yang selanjutnya yaitu sebagai berikut. hasilOutput = map (bacaanInput,0,1023,0,255); Pada kode di atas, kita memetakan nilai dari “bacaanInput” yang nilainya dari 0 sampai 1023 menjadi 0 sampai 255. Fungsi yang melakukan pemetaan tersebut adalah fungsi map(). Fungsi map() ini, membutuhkan 5 parameter. Pertama, nama variable yang akan dipetakan (dalam map kali ini yaitu “bacaanInput”). Kedua dan ketiga, nilai terendah dan tertinggi dari variable tersebut(dalam hal ini 0 sampai 1023), dan dua yang terakhir yaitu, nilai terendah dan tertinggi yang diinginkan(dalam hal ini 0 sampai 255). Hasil pemetaan tersebut, kemudian kita simpan lagi dalam sebuah variable, yaitu variable “hasilOutput”. Baiklah, sekarang kita sudah memetakan dan menyimpan hasil pemetaan tersebut kedalam sebuah variable. Sekarang apa selanjutnya yang kita lakukan. Perhatikan kode selanjutnya berikut ini. analogWrite (pinOutputLED,hasilOutput);
Selanjutnya, kita gunakan hasil pemetaan tersebut untuk mengatur intensitas kecerahan dari nyala LED kita yang kita hubungkan ke pin 11 (sebelumnya kita sudah deklarasikan pin 11 adalah “pinOutputLED”) menggunakan fungsi analogWrite(). Seperti pernah kita pelajari bersama pada praktikum PWM sebelumnya, fungsi analogWrite() membutuhkan dua parameter. Pertama, parameter pinnya (dalam hal ini pin 11) dan yang kedua, berapa nilainya (antara 0 sampai 255 dan telah kita simpan di variable “hasilOutput”). Jadi, kode di atas tersebutlah yang mengatur kecerahan LED yang disesuikan dengan input putaran potensiometer kita pada protoboard. Semoga Anda paham penjelasan saya. Baiklah, sekarang, untuk memastikan bahwa program ini bekerja dengan benar. Khususnya yang berkaitan dengan pemetaan dan pembacaan input agar sesuai dengan yang kita telah tentukan. Maka, kita tampilkan informasi-informasi tersebut di layar komputer serial monitor. Untuk itulah kode-kode berikut kita gunakan. Serial.print("Nilai Potensiometer adalah ="); Serial.print(bacaanInput); Serial.print("\t Outputnya adalah ="); Serial.println(hasilOutput); Di sini, kita membuat kode untuk menampilkan nilai “bacaanInput” dan “hasilOutput” ke jendela serial monitor IDE Arduino kita. Tentu Anda sudah paham tentang fungsi print() dan println() dari library serial. Karena kita sudah pernah membahasnya pada praktikum-praktikum yang sebelumnya. Hanya saja, di sini ada sedikit informasi yang akan saya sampaikan. Perhatikan tanda \t pada baris yang ketiga dari kode di atas. Tanda ini adalah sintaks agar pada jendela serial monitor hasil yang ditampilkan akan di TAB ke kanan (seperti anda mengetik di MS WORD dan menekan tuts TAB). Dengan ini, sekarang tampilan di jendela serial monitor akan terlihat lebih rapi. Oke, akhirnya kita sampai pada kode yang terakhir dari routine ini. Berikut ini kode tersebut. delay(2); Anda tentu sudah sangat paham dengan fungsi ini. Fungsi delay() pada praktikum ini, kita gunakan agar pembacaan dari input potensiometer dapat terbaca dengan baik dan stabil. Baiklah, sebelum kita akhiri pembahasan pada praktikum ini, ada baiknya kita mereview apa yang kita lakukan dalam routine utama kita kali ini. Berikut ini reviewnya. 1. 2. 3. 4. 5. 6.
Membaca nilai input dari pin analog A0 (potensiometer). Menyimpan nilai tersebut ke dalam sebuah variable. Memetakan nilai tersebut agar sesuai dengan skala yang dibutuhkan output analog. Menyimpan nilai yang telah dipetakan ke dalam variable. Menggunakan variable ini sebagai parameter analogWrite() yang mengatur kecerahan LED. Delay program selama 2 mili detik untuk menstabilkan jalannya program.
Demikianlah praktikum dan pembahasan kita kali ini, terimakasih dan sampai jumpa di praktikum kita yang selanjutnya.
Latihan Mandiri 1. Dengan menggunakan teknik seperti pada praktikum ini, ubahlah sketch agar output yang di atur adalah intensitas kecepatan kedipan blink LED! 2. Tambahkan sebuah LED lagi pada pin 9. Dan buatlah kedua LED (pin 9 dan pin 10) menghasilkan output yang berbeda dari satu input potensiometer yang sama. (LED pin 9 terang, LED pin 11 redup dan sebaliknya).
www.BELAJARBIKINROBOT.WEEBLY.com