Logika pemrograman sederhana Setelah belajar materi 1, 2 dan 3 sekarang saatnya mengenal logika pemrograman sederhana, di materi 1 sudah di bahas sedikit apa itu algoritma pemrograman, sekarang saatnya untuk mencoba mengaplikasikan pada arduino yang sudah di pelajari sebelumnya. Penggunaan logika sederhana menggunakan if-else statement. Sesuai dengan terjemahan dalam bahasa Indonesia, ‘if’ berarti ‘jika’ dalam suatu pemrograman algoritma ini banyak terjadi pengkondisian-pengkondisian sehingga ini sangat di perlukan, berhatikan contoh berikut ini Jika (saya punya uang) { Saya beli barang } Dengan menggunakan fungsi tersebut jika dalam kondisi (saya punya uang) belum atau tidak terpenuhi, maka { saya beli barang } tidak akan di jalankan, dan program akan menjalankan kondisi yang lainnya. Contoh lagi Jika (saya punya uang) { Saya beli barang } Jika tidak { Saya tidak beli } mari di coba menggunakan potensiometer sebagai input dan LED sebagai output. Input dari sensor potensiometer ini nantinya kita gunakan untuk mengontrol LED.
Komponen yang dibutuhkan..
Arduino Uno 1x
Protoboard 1x
LED 5mm 1x
Kabel Jumper 5x Potensiometer 10K 1x
Selanjutnya seperti pada percobaan materi 3 dan percobaan materi 2 1. Hubungkan pin A0 dengan kaki Tengah Potensiometer menggunakan kabel jumper (warna hijau). 2. Hubungkan salah satu kaki potensimeter yang terluar (kita sebut kaki 1 Potensio) dengan pin 5v Arduino menggunakan kabel jumper (warna merah). 3. Hubungkan Kaki 2 Potensiometer dengan pin Gnd Arduino menggunakan kabel jumper (warna coklat). 4. Hubungkan pin 13 Arduino dengan kaki + LED menggunakan kabel jumper (warna kuning). 5. Hubungkan kaki - LED dengan salah satu kaki Resistor 220Ohm. 6. Hubungkan kaki Resistor lainnya dengan pin Gnd Arduino menggunakan kabel jumper (warna hitam) 7. Pasangkan board Arduino dengan port USB komputer menggunakan kabel USB. 8. Bukalah IDE Arduino kemudian ketikkan sketch berikut. int potensio = A0; int led1 = 13; int batasNilai = 500; void setup() { pinMode(led1, OUTPUT); Serial.begin(9600); } void loop() { int nilaiPotensio = analogRead(potensio); if (nilaiPotensio > batasNilai) { digitalWrite(led1, HIGH); } else { digitalWrite(led1,LOW); } Serial.println(nilaiPotensio); delay(1); }
9. Jika sudah, compile menggunakan tombol "verify" , cek apakah ada kesalahan pengetikan sketch. Jika masih ada error coba di perbaiki lagi, mungkin ada salah ketik.
10. Upload ke Board Arduino menggunakan tombol "Upload" atau melalui File > Upload. 11. Buka jendela serial Monitor caranya, pilih Tools > Serial Monitor. Jika program yang diupload benar dan tidak ada kesalahan dalam pemasangan rangkaian elektronikanya maka, LED akan menyala saat nilai analog dari potensiometer lebih besar dari 400 (ingat range input analog nilainya dari 0 sampai 1023). Jika nilai analog dari potensiometer lebih kecil, maka LED padam.
Diskusi Rangkaian Elektronikanya.. Jika Anda ingat dari pelajaran sebelumnya, potensiometer adalah resistor variable yang dapat digunakan sebagai pembagi tegangan. Pada satu kaki potensiometer kita memiliki tegangan 5 volt dari board Arduino dan satu kaki lagi terhubung dengan 0 volt / Gnd. Ketika kita memutar knop pada potensiometer, voltase pada kaki tengah potensiometer ini akan berubah sesuai dengan putaran knop tersebut. Semakin besar resistansinya maka voltase akan berkurang dan sebaliknya.
Diskusi Sketchnya.. Perhatikan kembali sketch yang tadinya sudah kita ketikkan. int potensio = A0; int led1 = 13; int batasNilai = 500; void setup() { pinMode(led1, OUTPUT); Serial.begin(9600); } void loop() { int nilaiPotensio = analogRead(potensio); if (nilaiPotensio > batasNilai) { digitalWrite(led1, HIGH); } else { digitalWrite(led1,LOW); } Serial.println(nilaiPotensio); delay(1); }
Konsep dasar dari sketch ini adalah mengukur tegangan pada pin analog, dimana pin analog ini akan berubah tegangannya sesuai dengan putaran knop Potensiometer. Kemudian, kita memberikan ambang batas tegangan pada kisaran tertentu. dalam praktikum ini yaitu, nilai pin analog > 500. ( ingat, analog ini memiliki kisaran nilai antara 0 sampai 1023 ). Ketika pin analog memiliki nilai > 500, maka LED pada pin 13 kita nyalakan, dan ketika < 500 kita padamkan. Program ini mungkin terlihat agak panjang dibandingkan program-program praktikum sebelumnya. Salah satu cara yang saya gunakan untuk memahami sketch yang panjang adalah membaginya menjadi bagian-bagian atau blok-blok. Sehingga, kita bisa fokus untuk memahami tiap blok tersebut dan hubungannya dengan blok-blok sketch yang lainnya. Baiklah, kita bahas dan diskusikan sketch di atas. Sketch di atas kita bagi menjadi bagian-bagian atau blok-blok, bagian pertama yaitu bagian Deklarasi dan Inisialisasi Variable, Bagian kedua yaitu Routine setup(), dan Bagian ketiga yaitu Routineloop(). Mari kita mulai pembahasan pada blok pertama dari sketch kita..
--------------------------------------------BLOK PERTAMA-----------------------------------------------int potensio = A0 ; int led1 = 13; int batasNilai = 500 ; Perhatikan bahwa semua variable di atas memiliki int di depannya. Keyword ini adalah singkatan dari integer. Sebuah integer ini digunanakn untuk kualifikasi -- konstanta akan menyesuaikan dulu dengan variable yang telah dideklarasikan. integer ini akan mengunci nilai pada variable, sehingga nilai variable tidak akan berubah sepanjang jalannya program. Mengapa menggunakan inisialisasi ? Pada saat mengetikkan atau memperbaiki sketch kemungkinan kita lupa dan tidak sengaja mengetikkan nilai baru pada variable di tengah-tengah proses pengetikan sketch. Hal ini, sering kali terjadi. Jadi, saya sarankan untuk menggunakan konstanta ketika kita membuat variable yang nilainya tidak ingin kita ubah-ubah.
-----------------------------------------BLOK KEDUA------------------------------------------------------
Blok berikutnya yaitu routine setup(). Pada routine ini kita atur mode untuk pin led menjadi output dan mengatur baud rate komunikasi serial. void setup ( ) {
pinMode ( led1 , OUTPUT ) ;
Serial.begin ( 9600 ) ; } Ingatlah bahwa semua pin pada dasarnya telah terseting secara default sebagai INPUT, Sehingga kita tidak perlu lagi mengatur mode untuk pin A0 ( analog pin yang kita hubungkan ke potensiometer ). Untuk komunikasi serial. Kita gunakan fungsi begin ( ) dari library serial dengan baud rate 9600. Sekarang kita sudah mengatur penggunaan pin dan komunikasi serial. Kita lanjutkan pembahasan ke blok berikutnya.
--------------------------------------------BLOK KETIGA--------------------------------------------------
Blok routine loop ( ). Berikut adalah sketch yang kita punya pada routine loop kita. int nilaiPotensio = analogRead ( Potensio ) ; Kita menggunakan fungsi analogRead ( ). Ingat bahwa analogRead ( ) akan mengambil nilai antara 0 sampai 1023. Nilai ini akan berubah ketika kita memutar knop potensiometer pada protoboard. Jadi, baris kode ini berfungsi untuk memeriksa putaran potensiometer kemudian menyimpan nilainya pada variable " nilaiPotensio ". Hal berikutnya yang kita lakukan adalah membandingkan nilai potensiometer yang telah disimpan oleh variable " nilaiPotensio " dengan nilai batas yang telah kita tentukan, dalam hal ini yaitu " batasNilai ". if ( nilaiPotensio > batasNilai ) { digitalWrite ( led1 , HIGH ) ; } else { digitalWrite ( led2 , LOW ) ; }
Jika pada praktikum sebelumnya kita pernah menggunakan ' if-statement ', sekarang kita menambahkan dengan satu statement lagi yaitu ' else-statement '.
if-statement akan memeriksa kondisi yang ada di dalam kurung, Jika kondisi didalam kurung terpenuhi atau benar (TRUE) , maka kode program yang ada diantara kurung kurawal buka dan kurung kurawal tutup pada if-statement ini akan di eksekusi -- jika tidak terpenuhi atau salah (FALSE), maka program akan dilanjutkan ke ' else-statement '. Perhatikan analogi program berikut : if ( Jeruk Masih Segar ) { Masukkan ke Keranjang ( ) } Else { Buang ke Tempat Sampah ( ) }
Kita dapat melihat pada gambar di atas bahwa ' else-statement ' memberikan kita kontrol atas apa yang harus dilakukan ketika ' if-statement ' tidak terpenuhi. Dalam praktikum arduino selanjutnya kita akan berbicara tentang ' elseif statement ' yang akan
memberikan kita teknik kontrol yang lebih lanjut. Kembali ke pembahasan.... kondisi yang di cek.. nilaiPotensio > batasNilai Jika ini BENAR kita menyalakan LED dengan menggunakan fungsi digitalWrite ( ) ... if ( nilaiPotensio > batasNilai ) { digitalWrite ( pinnyaLED , HIGH ) ; } Jika kondisi di atas SALAH, maka kita mematikan LED dengan mengeksekusi kode di dalam kurung kurawal else ... else { digitalWrite ( ledPin , LOW ) ; } Mari kita melakukan review singkat Operator Perbandingan : Kondisi yang kita akan cek menggunakan apa yang disebut Operator Perbandingan. Referensi dari website resmi Arduino seperti berikut, == != < > <= >=
( Sama dengan ) ( Tidak sama dengan ) ( Kurang dari ) ( Lebih besar dari ) ( Kurang dari atau sama dengan ) ( Lebih besar dari atau sama dengan )
Dengan operator-operator perbandingan ini kita dapat membuat pilihan kondisi yang lebih banyak. Kembali ke baris program, setelah if-else statement beres, kita ingin melihat nilai analog yang dihasilkan oleh potensiometer di layar komputer kita. Untuk melihat perubahan nilai potensiometer pada praktikum ini kita menggunakan kode program berikut, / / Mencetak nilai analog ke Serial Monitor Serial.println ( nilaiPotensio ) ; Baris kode ini menggunakan fungsi println ( ) dari library serial. Inilah yang mengirimkan nilai dari Arduino ke komputer kita. Putar potensiometer, maka kita akan melihat nilai akan berubahubah pada jendela Serial Monitor di komputer kita.
Akhirnya, kita sampai pada kode yang terakhir di routine loop ini, yaitu: delay ( 1 ) ; //fungsi ini kita gunakan untuk delay beberapa saat untuk stabilitas program. Jadi mari kita resume penjelasan sketch pada praktikum arduino kita kali ini.
1. Pertama kita membaca nilai pin analog dan menyimpannya pada sebuah variable 2. Selanjutnya kita memeriksa kondisi, apakah variable lebih besar dari batas nilai yang kita tentukan ? 3. Jika benar nilai variable lebih besar dari batas nilai, kita nyalakan LED. 4. Jika ternyata nilai variable tidak lebih besar dari batas nilai, kita padamkan LED. 5. Kita lihat perubahan nilai dari input potensiometer di serial monitor 6. kita delay beberapa milidetik agar program berjalan stabil
Latihan Mandiri Untuk latihan magandiri kali ini coba beberapa hal berikut.. 1. Ganti nilai dari int batasNilai bagaimana hasilnya? 2. Buat sketch agar LED menyala jika batasNilai lebih kecil dari 100 dan lebih besar dari 800. Jika nilai ada di antara 100 dan 800, padamkan LED. 3. Gunakan 6 led, bikin cara menyalakan led urut mulai led 1 s/d led 6 dengan menggunakan pengaturan potensiometer, semakin kecil nilai potensiometer semakin sedikit led yang nyala, semakin besar nilai potensiometer semakin banyak yang nyala