PANDUAN PRAKTIKUM DASAR ARDUINO -...

11
BBROBOTINDONESIA PANDUAN PRAKTIKUM DASAR ARDUINO www.BELAJARBIKINROBOT.WEEBLY.com

Transcript of PANDUAN PRAKTIKUM DASAR ARDUINO -...

BBROBOTINDONESIA

PANDUAN PRAKTIKUM

DASAR ARDUINO

www.BELAJARBIKINROBOT.WEEBLY.com

Praktikum 7 Belajar Arduino Menggunakan FOR LOOP

Pada praktikum kita kali ini, kita akan membahas sebuah fungsi yang sangat berguna dalam pengontrolan program. Ada banyak fungsi yang sangat berguna bagi kita saat membuat sketch arduino, salah satunya yaitu, For Loop Iteration. For Loop ini akan membuat pengulangan-pengulangan, sehingga dapat digunakan untuk mempersingkat kode program yang kita ketikkan. Untuk lebih jelasnya, saya rasa langsung ke praktikumnya akan lebih mempermudah pemahaman Anda tentang kegunaan For loop ini. Untuk itu, kita langsung saja lanjutkan ke praktikumnya berikut ini.

Komponen yang dibutuhkan

Arduino Uno 1x

Protoboard 1x

LED 5mm 6x

Resistor 220Ohm 6x

Kabel Jumper 7x

Langkah-Langkah Praktikum

Rangkailah komponen-komponen praktikum seperti gambar di atas! Berikut ini langkah-langkahnya. 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.

int timer = 100; void setup() { for (int thisPin = 2; thisPin < 8; thisPin++) { pinMode(thisPin, OUTPUT); } } void loop() { for (int thisPin = 2; thisPin < 8; thisPin++) { digitalWrite(thisPin, HIGH); delay(timer); digitalWrite(thisPin, LOW); } for (int thisPin = 7; thisPin >= 2; thisPin--) { digitalWrite(thisPin, HIGH); delay(timer); 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 salah ketik.

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-LED pada protoboard yang kita rangkai akan menyala secara bergiliran.

Diskusi Sketch

Sekarang, kita akan coba membahas tentang kode program yang sebelumnya kita telah buat. Seperti pada praktikum sebelumnya, kali ini kita juga akan membagi kode-kode program tersebut menjadi 3 bagian. Baiklah, perhatikan kembali sketch yang telah kita ketikkan berikut ini. //Blok Pertama : Deklarasi dan Inisialisasi Variable int timer = 100; //Blok Kedua : Routine Setup void setup() { for (int thisPin = 2; thisPin < 8; thisPin++) { pinMode(thisPin, OUTPUT); } } //Blok Ketiga : Routine Loop void loop() { for (int thisPin = 2; thisPin < 8; thisPin++) { digitalWrite(thisPin, HIGH); delay(timer); digitalWrite(thisPin, LOW); } for (int thisPin = 7; thisPin >= 2; thisPin--) { digitalWrite(thisPin, HIGH); delay(timer); digitalWrite(thisPin, LOW); } }

BLOK PERTAMA Kita mulai pembahasan dari Blok pertama sketch ini yaitu, blok deklarasi variable. Satu-satunya kode yang ada pada blok deklarasi ini adalah kode sketch berikut ini. int timer = 100; Kode ini adalah kode untuk deklarasi dan inisialisasi variable yang kita beri nama " timer ". Variable ini bertipe integer – tentu Anda sudah familiar dengan deklarasi variable seperti ini. Fungsinya pada praktikum ini yaitu, kita gunakan untuk mengatur lama waktu dari kedipan LED. Baiklah, kita lanjutkan kembali pembahasan kita ke blok program yang kedua berikut ini. BLOK KEDUA Blok berikutnya yaitu, Blok Routine loop(). Pada blok ini, kita bertemu dengan "for loop" yang menjadi inti dari praktikum kita kali ini. Perhatikan kode programnya berikut ini. void loop() { for (int thisPin = 2; thisPin < 8; thisPin + + ) { pinMode ( thisPin , OUTPUT ) ; } } Mari kita simak satu per satu, apa saja yang ada di dalam kurung " for loop " ini. Kita mulai dari kode berikut ini. for (int thisPin = 2; thisPin < 8; thisPin + + ) Jika Anda perhatikan kode di atas, ada tiga statement yang ada di dalam kurung " for loop ". Statement pertama yaitu, Inisialisasi variable " thisPin ". Variable ini nantinya sebagai patokan pembanding. Bentuknya sama seperti variable yang biasa kita kenal. int thisPin = 2 ; kemudian pada statement berikutnya, ada kondisi perbandingan, dimana variable " thisPin " yang tadi sudah dideklarasikan akan dibandingkan dengan nilai. Dalam hal ini nilai pembandingnya adalah 8. thisPin < 8 ; Ini adalah kondisi perbandingan yang akan menentukan program melanjutkan eksekusi atau berhenti. Jika kondisi pada perbandingan thisPin < 8 ini BENAR/TRUE, maka program akan dilanjutkan untuk membaca kode program yang ada di dalam kurung kurawal buka dan kurung kurawal tutup for loop ini.

Jadi, ketika pertama kali nilai variable “thisPin” dibandingkan dengan 8 , maka perbadingan yang terjadi akan terbaca seperti ini. 2 < 8 ; Di sini, variable “thisPin” memiliki nilai awal 2 (perhatian kembali kode for loop nya). Kita tahu bahwa nilai 2 itu memang lebih kecil (<) dari 8. Artinya, kondisi for loop ini terpenuhi atau BENAR/TRUE. Oleh karna itu, program akan mengeksekusi kode yang ada di dalam kurung kurawal for loop . Sebelum membahas lebih lanjut,kita lanjutkan dahulu ke statement yang ke tiga yaitu, thisPin + +; Sintaks " + + " ini, adalah sintaks yang dapat memberikan penambahan nilai. Bisa kita artikan seperti ini " Tambahkan 1 ke nilai variable thisPin " , atau dengan teknik penulisan lain kira-kira seperti ini.

thisPin + + Sama Artinya thisPin = thisPin + 1 Statement ketiga inilah yang menambahkan nilai dari variable " thisPin ". Kenaikan itu kita dapatkan dari sintaks " + + " tersebut. Sebagai contoh lainnya, kita juga bisa memberikan pengurangan dengan sintaks " - - " , Atau dengan teknik perhitungan lainnya. Silahkan perhatikan contoh-contoh berikut. thisPin + = 4 + = berarti " tambahkan 4 ke variabel di sebelah kiri " thisPin - = 4 - = berarti " kurangi 4 ke variabel di sebelah kiri " Pada praktikum ini, kebetulan yang kita butuhkan adalah penambahan dengan sintaks" + + ". Ok.. Kita lanjutkan kembali ke pembahasan utamanya. Seperti yang telah disampaikan di atas, jika kondisi for loop kita terpenuhi, dalam hal ini ( thisPin < 8 ), maka kode " thisPin ++" akan dieksekusi. Hal ini, menyebabkan variable “thisPin” akan bertambah nilainya. Jadi, variable “thisPin” yang awalnya bernilai 2, sekarang bertambah nilainya menjadi 3. Barulah kemudian, kode pada kurung kurawal for loop di eksekusi. Setelah kode pada kurung kurawal for loop ini sudah dieksekusi, maka program akan membaca kembali kondisi for loop ini untuk yang kedua kalinya. Jika kondisi masih terpenuhi, maka nilai variable " thisPin " akan bertambah lagi. Sampai akhirnya nilai variable " thisPin " akan bertambah terus hingga mencapai nilai 8. Saat nilai “thisPin” ini sudah mencapai 8, maka kondisi for loop sudah tidak lagi terpenuhi (ingat, kondisi yang kita minta pada for loop kali ini yaitu nilai variable thisPin < 8). Right!! for (int thisPin = 2; thisPin < 8; thisPin + + ) { pinMode ( thisPin , OUTPUT ) ; }

Dalam contoh ini , jika variabel " thisPin " sudah lebih besar dari 7 atau dengan kata lain sudah bernilai 8. Maka for loop akan berhenti dieksekusi ulang. Sebenarnya, untuk apa kita menggunakan for loop ini?! – kita menggunakan for loop ini untuk membantu kita melakukan pengulangan terhadap kode program yang ada di dalam kurung kurawal for loop ini. Dalam hal ini kode yang ingin kita ulangi eksekusinya yaitu kode berikut ini. pinMode ( thisPin , OUTPUT ) ; Kita sudah familiar dengan fungsi pinMode ( ) -- fungsi ini kita gunakan untuk mengatur mode pin, dan pada kode tersebut pin ingin di jadikan OUTPUT. Nah, yang menjadi pertanyaan adalah, “pin mana yang akan di jadikan OUTPUT ?” Oke, kita bahas sekarang! Pada putaran pertama for loop, nilai dari variable " thisPin " adalah 2. Maka, hasil dari eksekusi kode pinMode() untuk putaran pertama for loop ini hasilnya kira-kira seperti berikut. pinMode ( thisPin " nilainya 2 " , OUTPUT ) ; Pin 2 sekarang ditetapkan sebagai OUTPUT Setelah putaran pertama selesai, nilai dari variable “thisPin” akan bertambah akibat penggunaan kode ( thisPin + + ) sehingga, sekarang nilai dari “thisPin” sekarang menjadi 3. pinMode ( thisPin " nilainya 3 " , OUTPUT ) ; Pin 3 sekarang ditetapkan sebagai OUTPUT Pada putaran kedua, kita memeriksa kondisi lagi, dan ternyata nilai variable “thisPin” yang saat ini sudah berubah menjadi bernilai 3 memang benar masih kurang dari 8. Sehingga, kita menjalankan kode program yang ada di kurung kurawal lagi dan ini menyebabkan nilai variable “thisPin” bertambah lagi menjadi 4. pinMode ( thisPin " nilainya 4 ", OUTPUT ) ; Pin 4 sekarang ditetapkan sebagai OUTPUT Setelah putaran kedua selesai, variable thisPin ( yang nilainya sudah menjadi 3 ) bertambah lagi, sehingga nilainya menjadi 4. Maka, artinya pin 4 menjadi OUTPUT juga. pinMode ( thisPin " nilainya 4 " , OUTPUT ) ; Pin 4 sekarang ditetapkan sebagai OUTPUT Proses penambahan ini dan pengujian kondisi ini akan terus berlangsung sampai variable thisPin = 8, karna ketika “thisPin” sudah sama dengan 8, maka kondisi for loop sudah tidak terpenuhi lagi. Ingat, kondisi yang diminta adalah thisPin < 8. Right!

Hasil pengulangan eksekusi dari kode program tersebut, kira-kira sama dengan kita mengetikkan kode berikut ini satu per satu. pinMode ( 2 , OUTPUT ) ; pinMode ( 3 , OUTPUT ) ; pinMode ( 4 , OUTPUT ) ; pinMode ( 5 , OUTPUT ) ; pinMode ( 6 , OUTPUT ) ; pinMode ( 7 , OUTPUT ) ; Nah, sekarang kita bisa lihat disini, bahwa for loop membantu kita agar tidak mengetik kode program yang sama secara berulang-ulang. Katakanlah sekarang kita ingin menambahkan 3 LED lagi pada protoboard kita. Dengan metode for loop ini, maka kita hanya perlu mengubah angka pada statement perbandingannya saja. sedangkan dalam versi koding yang biasa, kita harus mengetikkan tiga fungsi pinMode ( ) lagi. Baiklah, kita sudah selesai membahas metode for loop pada routine setup() kita kali ini. Sekarang, kita lanjutkan kembali pembahasan kita ke blok program yang berikutnya. BLOK KETIGA Blok Program kita yang ketiga kali ini kita gunakan untuk meletakkan routine loop ( ). Coba perhatikan kode sketch berikut, dimana for loop kembali kita gunakan. for (int thisPin = 2; thisPin < 8; thisPin + + ) { digitalWrite ( thisPin , HIGH); delay ( timer) ; digitalWrite ( thisPin , LOW ) ; } Bisa kita lihat di atas, semua kode dalam kurung for loop sama seperti yang sebelumnya. Yang berubah adalah kode yang ada di dalam kurung kurawalnya. Sebelumnya, sudah kita bahas bahwa ketika kondisi perbandingannya terpenuhi, maka kode pada kurung kurawal akan di eksekusi.

Kode yang pertama yang ada di dalam kurung kurawal adalah digitalWrite ( ). Ingat bahwa digitalWrite( ) menggunakan dua parameter – pertama, nomor pin yang akan digunakan?! dan kedua, jenis outputnya, HIGH atau LOW?! Berikut ini kode program tersebut. digitalWrite ( thisPin , HIGH ) ; Kode ini artinya, kita menjadikan pin bernilai HIGH. Fungsinya adalah agar LED menyala. Pertanyaannya adalah LED yang mana ?! --Sederhana, tentunya pin yang dimaksud adalah pin yang telah ditentukan oleh variable counter " thisPin ". Jadi, itulah mengapa LED yang pertama kali menyala adalah LED yang terhubung dengan pin 2, karna nilai pertama dari variable “thisPin” ini adalah 2. Setelah itu kita tunda lama nyala LED menggunakan fungsi delay ( ). Lamanya delay ditentukan dari nilai variable timer yang sudah kita inisialisasikan. delay ( timer) ; Kemudian pindah ke perintah selanjutnya ... digitalWrite ( thisPin , LOW ) ; Sekarang, kita menulis tegangan 0 volt/ LOW ke pin 2 , dan ini mengakibatkan LED padam. Setelah itu apa yang terjadi ?!-- Nah, sama seperti pembahasan for loop pada routine setup() sebelumnya, variable counter “thisPin” akan bertambah dan diuji perbandingannya lagi. Jika masih memenuhi syarat, maka LED akan berkedip lagi. Tapi, LED yang berkedip adalah LED yang terhubung dengan pin 3. Selanjutnya terus berulang seperti itu, sampai “thisPin” sudah sama dengan 8. Sehingga, for loop tidak dieksekusi lagi. Inilah yang menyebabkan LED-LED pada protoboard kita menyala secara bergiliran. Sekarang, masalahnya adalah “bagaimana jika variable “thisPin” sudah bernilai 8 ?! apakah LED terakhir akan terus berkedip ?! Nah, untuk itulah kita menggunakan for loop yang lain lagi untuk menurunkan nilai dari variable conter “thisPin” turun kembali lagi sehingga mencapai nilai 2. Perhatikan kode programnya berikut ini. for (int thisPin = 7; thisPin > = 2; thisPin -- ) { digitalWrite ( thisPin , HIGH ) ; delay ( timer) ; digitalWrite ( thisPin , LOW ) ; } Sekarang, kita ubah kode yang ada di dalam kurung for loop menjadi (int thisPin = 7; thisPin > = 2; thisPin -- ). Kondisi untuk pengujian perbandingan sekarang sudah kita ubah menjadi thisPin > = 2. Artinya, jika nilai thisPin lebih besar dari 2 maka, kode pada kurung kurawal akan di eksekusi dan nilai “thisPin” sebelumnya dikurangi 1 (ingat, sintaks thisPin - - menyebabkan nilai variable “thisPin” berkurang nilainya satu angka).

Jadi, sekarang kita tidak lagi menghitung naik, tapi menghitung mundur dari “thisPin” 7 sampai nilai thisPin sudah menjadi 2 lagi. Setelah semuanya selesai di eksekusi, maka program akan kembali berputar ke Routine void loop ( ). Ingat, antara " for loop " dengan routine loop ( ) itu beda yah.. Satu hal penting, yang mungkin perlu saya sampaikan disini yaitu, apa yang sisebut ruang lingkup variable. Ruang lingkup variable adalah tempat dimana variable dapat digunakan. Variable-variable yang kita deklarasikan dan kita inisialisasikan pada blok pertama program, sebelum setup ( ) dan loop ( ), memiliki lingkup global – artinya, variable-variable itu dapat kita gunakan pada seluruh bagian program. Sedangkan variable yang di deklarasikan di dalam sebuah for loop , hanya dapat digunakan di dalam for loop itu saja. Demikianlah pembahasan praktikum kita kali ini. Terimakasih telah mengikuti seri praktikum Arduino ini dan sampai jumpa pada praktikum-praktikum Arduino kita selanjutnya...

Latihan Mandiri

Untuk latihan mandiri kali ini, cobalah beberapa hal berikut ini! 1. Ganti nilai dari int timer. Buatlah agar lama nyala LED sedikit lebih lama.(3 detik sekali) 2. Tambah lagi 4 LED tambahan pada pin 9, 10, 11 dan 12. Ubah sketch agar LED tersebut ikut dalam barisan LED sebelumnya. Gunakan metode for loop.

www.BELAJARBIKINROBOT.WEEBLY.com