BBROBOTINDONESIA
PANDUAN PRAKTIKUM DASAR ARDUINO
www.BELAJARBIKINROBOT.WEEBLY.com
Praktikum 10 Belajar Arduino Switch Case Statement Menggunakan Keyboard Komputer Sebagai Input Serial Arduino Pada praktikum kita kali ini, kita akan mempelajari tentang penggunaan Keyboard komputer sebagai input serial yang kita gunakan untuk mengontrol Arduino kita. Seperti pada praktikum switch case sebelumnya, fungsi utama yang kita gunakan pada praktikum kita kali ini yaitu, switch case, fungsi read() dari library serial, dan fungsi default sebagai tambahan dari switch case statement kita. Kali ini, kita akan mengaplikasikan keyboard komputer kita, layaknya input arduino. Ada 6 tuts keyboard yang akan kita gunakan untuk input arduino—yang mana nantinya bacaan dari input keyboard itu akan kita control menggunakan fungsi switch case statement untuk menyalakan LED-LED yang kita rangkai dengan pin-pin digital Arduino kita. Baiklah, untuk mempersingkat waktu kita langsung saja ke praktikumnya.
Komponen yang dibutuhkan
Arduino Uno 1x
Protoboard 1x
LED 5mm 6x
Resistor 220Ohm 6x
Kabel Jumper 7x
Langkah-Langkah Praktikum
1.Hubungkan kaki-kaki + LED ke pin digital 2,3,4,5,6,dan 7 Arduino. 2. Hubungkan kaki-kaki - LED ke tiap resistor 220 Ohm. 3. Hubungkan tiap Resistor ke pin Gnd Arduino menggunakan kabel jumper (warna hitam).
4. Pasangkan board Arduino dengan port USB komputer menggunakan kabel USB. 5. Bukalah IDE Arduino kemudian ketikkan sketch berikut. void setup(){ Serial.begin(9600); for(int thisPin = 2; thisPin < 8; thisPin ++) { pinMode(thisPin,OUTPUT);} } void loop() { if(Serial.available()>0){ int huruf = Serial.read(); switch(huruf) { case'a': digitalWrite(2,HIGH); break; case'b': digitalWrite(3,HIGH); break; case'c': digitalWrite(4,HIGH); break; case'd': digitalWrite(5,HIGH); break; case'e': digitalWrite(6,HIGH); break; case'f': digitalWrite(7,HIGH); break; default: for(int thisPin = 2; thisPin < 8; thisPin ++) { digitalWrite(thisPin,LOW); } } } }
6. Jika sudah, compile menggunakan tombol "verify" , cek apakah ada kesalahan pengetikan sketch. Jika masih ada error coba di perbaiki lagi, mungkin ada kesalahan dalam pengetikan. 7. Upload ke Board Arduino menggunakan tombol "Upload" atau melalui File > Upload. Jika program yang diupload benar dan tidak ada kesalahan dalam pemasangan rangkaian elektronikanya maka, LED akan menyala sesuai dengan huruf yang kita tekan pada keyboard komputer kita. Huruf yang kita gunakan yaitu a, b, c, d, e, dan f. Jika kita ketikkan selain dari huruf-huruf tersebut, maka seluruh LED akan padam.
Diskusi Sketch Baiklah, sekarang kita bahas tentang kode-kode program tersebut -- Perhatikan kembali sketch yang telah kita ketikkan pada praktikum ini. Di sini, kita hanya menggunakan 2 blok program, karena pada praktikum ini, kita tidak mendeklarasikan variable-variable global yang biasanya kita letakkan pada bagian awal program. Baiklah, kita mulai pembahasannya dari blok pertama yaitu blok routine setup(). BLOK PERTAMA Berikut ini adalah kode program pada bagian routine setup () dari blok program kita kali ini. Perhatikan kembali kode program berikut! void setup() { Serial.begin(9600); for(int thisPin = 2; thisPin < 8; thisPin ++) { pinMode(thisPin,OUTPUT);} } Pada routine setup () kali ini, kita memulai program dengan men-setting komunikasi serial antara komputer dengan Arduino. Untuk melakukan hal itu, kita menggunakan fungsi begin () dari library serial. Kemudian, kita lanjutkan dengan mengatur mode dari tiap pin yang kita gunakan sebagai OUTPUT menggunakan metode pengontrolan for loop dan fungsi pinMode (). Tentunya, Anda sudah familiar dengan metode ini pada praktikum-praktikum kita sebelumnya. Baiklah, sekarang kita sudah selesai dengan blok routine setup (), mari kita lanjutkan pembahasan kita ke blok program berikutnya. BLOK KEDUA Pada blok program kedua ini, kita memiliki routine loop (). Routine loop () ini, kita awali dengan sebuah fungsi if yang kita gunakan untuk mengecek sebuah kondisi. Dalam hal ini yaitu, mengecek adanya komunikasi serial antara komputer dan Arduino. Berikut ini adalah kodenya. if(Serial.available()>0)
Pada kondisi if statement di atas, kita menggunakan sebuah fungsi yang bernama available() dari library serial. Fungsi available() ini berguna untuk mengecek adanya komunikasi serial antara komputer dan Arduino melalui serial port. Jika terdapat komunikasi serial antara komputer dan Arduino, maka fungsi available() ini akan bernilai > 0 (lebih besar dari nol). Bagaimana hal itu bisa terjadi?! Baiklah, sekarang kita akan bahas mengapa fungsi available() bisa > 0 (lebih besar dari nol). Kita tentu masih ingat bahwa kali ini kita menggunakan keyboard komputer sebagai input Arduino. Sebenarnya, hal yang terjadi adalah, ketika kita mengetikkan huruf pada keyboard komputer, maka ada aliran data yang terkirim dalam bentuk bytes ke serial port – dan dalam hal ini, serial port komputer kita hubungkan ke Arduino kita menggunakan sebuah kabel usb. Setiap karakter pada tuts keyboard komputer sebenarnya memiliki kode-kode dan nilai numerical yang berbeda pada setiap karakter – inilah yang familiar kita kenal dengan nilai ASCII – dimana nilainya tersimpan dalam tipe data byte. Ketika katakanlah, kita menekan huruf “c” pada keyboard, maka yang terjadi adalah komputer akan mengirim nilai 67 (kode ASCII untuk huruf “c” tersebut) ke port serial. Dengan adanya data nilai karakter ASCII dari serial port tersebut, kondisi fungsi if (Serial.available() > 0) akan terpenuhi. Baiklah, sekarang Anda sudah paham, bagaimana kondisi pada fungsi if terpenuhi. Sekarang, kita lanjutkan dengan kode program yang membaca nilai data yang terkirim tersebut. Untuk melakukan hal itu, kita menggunakan sebuah fungsi dari library serial yang bernama read(). Fungsi read() inilah, yang membaca nilai dari ketikan karakter keyboard yang dikirimkan oleh komputer ke port serial. Nilai ini, kemudian kita simpan pada sebuah variable yang kita berinama “huruf”. Berikut ini adalah kode programnya. int huruf = Serial.read(); Pada kode program di atas, kita menginisialisasikan variable “huruf” dengan nilai yang sama dengan nilai yang dibaca oleh fungsi read(). Artinya, jika kita mengetikkan huruf “c”, maka nilai dari variable “huruf” ini akan mengikuti kode ASCII untuk huruf “c” yaitu 67. Sebagai contoh lain, jika kita mengetikkan huruf “x”, maka nilai dari variable “huruf” ini akan mengikuti kode ASCII untuk huruf “x” yaitu 88. Semoga Anda paham dengan penjelasan saya.. Hal selanjutnya yang kita lakukan adalah, memilih tuts keyboard mana saja yang akan kita gunakan untuk menyalakan LED. Dalam praktikum ini, saya mencontohkan dengan menggunakan tuts keyboard a, b, c, d, e, dan f. Untuk mengatur fungsi dari tiap-tiap tuts tersebut, kita menggunakan switch case statement—dan berikut ini adalah kode programnya. switch(huruf) { case'a': digitalWrite(2,HIGH); break; case'b': digitalWrite(3,HIGH); break; case'c': digitalWrite(4,HIGH); break;
case'd': digitalWrite(5,HIGH); break; case'e': digitalWrite(6,HIGH); break; case'f': digitalWrite(7,HIGH); break; kode switch case statement di atas, kita gunakan untuk membagi fungsi dari tiap tuts keyboard yang kita gunakan menjadi 5 case. Case pertama kita gunakan huruf “a” untuk menyalakan LED pada pin 2 menggunakan fungsi digitalWrite(2,HIGH), kemudian huruf “b” untuk LED pada pin 3, huruf “c” untuk LED pin 4, dan seterusnya sampai huruf “f”. Oke, sekarang pertanyaannya – bagaimana jika kita mengetikkan karakter lain selain a, b, c, d, e, dan f?! Untuk karakter selain 6 karakter tersebut, kita gunakan rencana cadangan untuk switch case statement kita. Fitur untuk rencana cadangan ini adalah penggunaan default. Kode default ini adalah fitur dari switch case statement yang akan dieksekusi apabila tidak ada case yang sesuai dengan case yang kita telah buat. Berikut ini adalah kode tersebut. default: for(int thisPin = 2; thisPin < 8; thisPin ++) { digitalWrite(thisPin,LOW); } Jadi, jika karakter yang kita ketikkan adalah karakter selain a, b, c, d, e, dan f, maka kode inilah yang akan dieksekusi. Pada kode default ini, kita membuat program for loop untuk memadamkan seluruh pin-pin LED. Saya tidak akan menjelaskan lebih detail bagaimana pin-pin ini dipadamkan, karna jika anda mengikuti praktikum-praktikum sebelumnya, tentunya Anda sudah familiar dengan kode for loop di atas. Right! Akhirnya, selesai sudah pembahasan kita pada praktikum kali ini. Sampai jumpa kembali pada praktikum yang berikutnya.
Latihan Mandiri Untuk latihan mandiri kali ini coba beberapa hal berikut! 1. Tambahkan 2 buah case baru pada switch case statement pada kode program praktikum ini! 2. Buatlah agar seluruh LED berkelap-kelip seperti pada praktikum blink LED jika tidak ada dari salah satu case yang sesuai. (gunakan pada bagian default).
www.BELAJARBIKINROBOT.WEEBLY.com