panduan praktikum dasar arduino

advertisement
BBROBOTINDONESIA
PANDUAN PRAKTIKUM
DASAR ARDUINO
www.BELAJARBIKINROBOT.WEEBLY.com
Praktikum 8 Belajar Arduino
Menggunakan Array di Arduino
Ingatkah Anda, saat sekolah dulu setiap siswa memiliki nomer induk siswa. Dimana, semua informasi yang
berhubungan dengan data siswa mulai dari nama, alamat, tempat lahir, dan informasi-informasi yang
dibutuhkan oleh sekolah di simpan sesuai dengan nomer induk tersebut.
Nah, dalam dunia programming, kita juga akan menemukan hal seperti itu,-- Catatan-catatan itu disebut
Struktur Data. Salah satu Struktur Data yang akan kita pelajari saat ini yaitu Array. Array, sering kali digunakan
karena Array dapat mempermudah kita dalam pengaturan data maupun penelusurannya (peng-index-an).
Peng-index-an adalah cara kita dalam menemukan atau menelusuri informasi yang telah tercatat di dalam
Array. -- Sebagai contoh, seorang petugas sekolah membuka berkas nomer 5 untuk melihat data salah seorang
siswa bernama Reza. Nah, dalam hal ini berkas nomer 5 inilah nomer “index” dari siswa yang dalam datanya,
bernama “Reza”.
Sebuah Array dapat diisi dengan berbagai macam data. Data yang ada pada halaman pertama dari Array ini,
disebut index 0 -- Karna setiap Array diawali dari index 0. Jika kita memiliki 5 data dalam Array kita, maka
kelima data tersebut akan terindex mulai dari 0,1, 2,3,dan 4. Baiklah, untuk lebih jelasnya, kita langsung saja
lanjutkan ke praktikumnya. 
Komponen yang dibutuhkan
Arduino Uno 1x
Protoboard 1x
LED 5mm 6x
Langkah-Langkah Praktikum
Resistor 220Ohm 6x
Kabel Jumper 7x
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;
int ledPins[ ] = { 2, 7, 4, 6, 5, 3};
int jumlahPin = 6;
void setup()
{
for (int thisPin = 0; thisPin < jumlahPin; thisPin++)
{
pinMode(ledPins[thisPin], OUTPUT);
}
}
void loop()
{
for (int thisPin = 0; thisPin < jumlahPin; thisPin++)
{
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
digitalWrite(ledPins[thisPin], LOW);
}
for (int thisPin = jumlahPin-1; thisPin >= 0; thisPin--)
{
digitalWrite(ledPins[thisPin], HIGH);
delay(timer);
digitalWrite(ledPins[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 secara bergiliran sesuai dengan urutan indexnya.
Diskusi Sketch
Baiklah, sekarang kita bahas tentang kode-kode program tersebut. Perhatikan kembali sketch yang telah kita
ketikkan pada praktikum ini. Seperti biasa, bagi menjadi 3 blok. Blok atau bagian pertama yang kita ketikkan
pada program di atas yaitu deklarasi dan inisialisasi variable.
BLOK PERTAMA
Kita mulai dari Blok pertama sketch ini yaitu, blok deklarasi variable. Kode yang ada pada blok program ini
adalah sebagai berikut,
int timer = 100;
int ledPins[ ] = { 2, 7, 4, 6, 5, 3};
int jumlahPin = 6;
Saya yakin, anda sudah paham betul dengan deklarasi dan inisialisasi variable. Tapi, coba sekarang perhatikan
-- “apa yang berbeda dari kode di atas?” -- Ya, benar! kali ini ada baris kode yang sedikit berbeda dan itulah
yang menjadi inti dari pembahasan praktikum kita kali ini, kode ini disebut sebagai Array.
int ledPins[ ] = { 2, 7, 4, 6, 5, 3};
Pada Array ini, kita menyimpan data bertipe integer sesuai dengan angka pin Arduino yang kita hubungkan ke
LED namun, nomor-nomer pin yang kita gunakan tidak kita susun secara berurutan. Di sebelah nama Array ini,
terdapat tanda [ ] (ini disebut Array empty) – tanda tersebut merupakan compiler (program yang terintegrasi
dengan IDE Arduino yang mengubah kode human readable ke machine readable), yang kita gunakan untuk
meng-index data pada Array yang dalam praktikum ini, yaitu terdiri dari 6 data yang berisi 2, 7, 4, 6, 5, dan 3.
Untuk penamaan sebuah Array bisa Anda berikan nama secara bebas; saya biasanya menamakan array sesuai
dengan fungsinya. Seperti pada praktikum ini saya menamakannya “ ledPins” yang fungsinya untuk
menyimpan nilai dari pin-pin yang kita gunakan dalam praktikum ini. Tujuannya, sekedar untuk
mempermudah mengingatnya saja. 
BLOK KEDUA
Kita lanjutkan ke bagian yang selanjutnya, yaitu routine setup(). Pada bagian ini, kita mengatur mode dari tiaptiap pin yang terhubung ke LED menggunakan kombinasi penggunaan Array dan For Loop. Berikut ini adalah
kode pada blok routine setup() kita kali ini.
void setup ( )
{
for (int thisPin = 0; thisPin < jumlahPin; thisPin + + )
{ pinMode (ledPins[thisPin] , OUTPUT ) ;}
}
Baiklah, mari kita simak apa yang ada pada For Loop di atas. Di routine setup() kita kali ini, kita memiliki
sebuah For Loop dengan kondisi sebagai berikut,
thisPin < jumlahPin ;
Kita bisa lihat pada For Loop kali ini, variable thisPin telah kita inisialisasikan dengan nilai 0 dan jumlahPin kita
inisialisasikan dengan nilai 6. Setiap kali kondisi thisPin < jumlahPin pada For Loop masih terpenuhi maka, nilai
variable thisPin akan bertambah 1 akibat di eksekusinya kode (thisPin++).
Kode program yang dieksekusi pada For Loop ini adalah data Array yang peng-index-annya menggunakan
variable thisPin sebagai variable counternya. Karna pada routine setup () ini, kita akan mengatur mode dari
pin agar menjadi OUTPUT, maka kita menggunakan fungsi pinMode() untuk mengaturnya modenya. Berikut ini
adalah kodenya.
pinMode (ledPins[thisPin] , OUTPUT ) ;
Semoga anda masih ingat, bahwa fungsi pinMode membutuhkan dua parametert -- Yang pertama yaitu,
nomer pin yang digunakan? Dan yang kedua, apakah modenya INPUT atau OUTPUT?!
Nah, perhatikan pada kode di atas, parametert pertama memberikan informasi bahwa pin yang akan
dimodekan adalah pin pada Array bernama ledPins dengan nomor index thisPin. Dan parameter kedua adalah
pilihan modenya sebagai OUTPUT. Perhatikan kembali Array-nya berikut ini.
int ledPins[ ] = { 2, 7, 4, 6, 5, 3};
Karna index ke 0 adalah index pertama dari sebuah Array, maka pada Array ledPins ini, pin 2 lah pin yang
modenya diatur pertama kali kemudian diikuti dengan index selanjutnya yaitu index ke 1 yang bernilai 7 dan
seterusnya sampai index ke 6 yang nilainya 3.
Pada kasus ini, semua pin pada Array ledPins diatur modenya menjadi OUTPUT. Ketika nilai variable thisPin
sudah sama dengan 6 maka, For Loop akan berhenti di eksekusi.
Jadi, melalui contoh di atas, sekarang kita sudah dapat memahami bagaimana menggunakan For Loop dan
Array secara bersamaan. Variable counter thisPin yang ada pada For Loop yang pertama ini, kita gunakan
sebagai patokan nomor untuk meng-index data-data yang terdapat pada Array tersebut.
BLOK KETIGA
Kita lanjutkan kembali pembahasan kita ke routine yang berikutnya, yaitu routine loop(). Kode program yang
ada pada routine ini adalah sebagai berikut,
void loop()
{
for (int thisPin = 0; thisPin < jumlahPin; thisPin + + )
{
digitalWrite ( ledPins[thisPin] , HIGH);
delay ( timer) ;
digitalWrite ( ledPins[thisPin] , LOW ) ;
}
Bisa kita lihat di atas, semua kode dalam kurung " for loop " di sini sama seperti pada for loop pada routine
setup() sebelumnya. Yang berubah, adalah kode yang ada di dalam kurung kurawalnya saja. Sebelumnya,
sudah kita bahas bahwa ketika kondisi perbandingan masih terpenuhi, maka variable counter akan terus
bertambah.
Pada routine sebelumnya, kita telah mengeksekusi pengaturan mode pin sebagai OUTPUT. Sedangkan, pada
kode di routine ini, yang dieksekusi adalah kode program untuk menyalakan LED, mendelaynya beberapa saat,
dan kemudian memadamkannya kembali menggunakan kode berikut,
digitalWrite ( ledPins[thisPin] , HIGH);
delay ( timer) ;
digitalWrite ( ledPins[thisPin] , LOW ) ;
LED yang menyala adalah LED yang nomor indexnya sesuai dengan nilai dari variable counter thisPin. Contoh,
nilai dari variable counter thisPin awalnya bernilai 0 (index ke 0) maka, LED yang akan menyala adalah LED
pada pin 2 karna index ke 0 pada Array ledPins adalah 2.
Index akan terus bertambah sesuai dengan penambahan nilai variable counter thisPin sampai nilai pada
variable thisPin ini sudah sama dengan 6. Barulah For Loop ini berhenti dan melanjutkan eksekusi kode
program berikutnya.
Kode program yang berikutnya yaitu kode untuk mengembalikan nilai dari variable counter “ thisPin” kembali
lagi. Dimana pada kode for loop ini, nilai dari “thisPin” akan dikurangi satu-persatu. Berikut ini adalah kode
programnya.
for (int thisPin = jumlahPin-1; thisPin >=0; thisPin - - )
{
digitalWrite ( ledPins[thisPin] , HIGH);
delay ( timer) ;
digitalWrite ( ledPins[thisPin] , LOW ) ;
}
Coba kita perhatikan For Loop pada kode program ini!
for (int thisPin = jumlahPin-1; thisPin >=0; thisPin - - )
Variable counter “thisPin” kali ini kita berikan nilai sama dengan nilai variable “jumlahPin” yang kita kurangi
satu. Ingat, bahwa variable “ jumlahPin” telah kita inisialisasikan dengan nilai 6 pada bagian awal program.
Variable “jumlahPin” adalah jumlah pin yang terhubung ke LED pada rangkaian protoboard, dan juga sebagai
informasi jumlah data pada array kita. Sebagai pengingat, silahkan kita lihat kembali apa yang ada pada Array
yang sebelumnya telah kita buat.
int ledPins[ ] = { 2, 7, 4, 6, 5, 3};
ketika nilai dari thisPin = jumlahPin – 1 maka, ledPins[thisPin] akan bernilai seperti berikut  ledPins[5]
setelah For Loop kembali di cek maka variable “thisPin” akan berkurang sehingga ledPins[thisPin] akan
bernilai seperti berikut  ledPins[4] dan seterusnya sampai variable “thisPin kembali ke nilai semula. Setelah
itu, program akan membaca kembali routine loop() dan mengulang kembali proses yang sama.
Sekian untuk praktikum kita kali ini dan sampai jumpa pada praktikum-praktukum yang berikutnya. 
Latihan Mandiri
Untuk latihan mandiri kali ini coba beberapa hal berikut!
1. Ganti nilai data yang ada pada Array ledPins[].(Pastikan nilainya sama hanya ubah posisi urutannya)
2. Tambah lagi 2 LED tambahan. Ubah sketch agar LED tersebut ikut dalam barisan LED sebelumnya.
www.BELAJARBIKINROBOT.WEEBLY.com
Download