Modul Praktikum Arduino
Modul Praktikum Arduino
DAFTAR ISI...................................................................................................1
1. PENDAHULUAN.......................................................................................2
A. Tujuan Praktikum..................................................................................2
B. Dasar Teori..........................................................................................2
1) Perangkat Keras Arduino..............................................................2
2) Perangkat Lunak Arduino...............................................................4
3) Pemrograman Arduino..................................................................5
C. Tugas Awal..........................................................................................7
2. PRAKTIKUM..............................................................................................8
A. Alat dan bahan....................................................................................8
B. Hello Computer.................................................................................8
C. Hello World Berulang......................................................................10
D. Konstanta dan Keluaran Digital.....................................................11
E. Variabel dan Masukan Digital.........................................................13
F. Tipe Data dan Operator..................................................................15
G. Pengulangan...................................................................................17
H. Pencabangan..................................................................................19
I. Fungsi..............................................................................................20
J. Pemilihan.........................................................................................22
K. Array.................................................................................................23
3. Referensi............................................................................................25
A. Tujuan Praktikum
Pada praktikum ini anda diminta untuk dapat menguasai beberapa
kompetensi khusus yang berhubungan dengan mikroprosesor berbasis
Arduino. Beberapa kompetensi khusus tersebut antara lain,
Mengenal arsitektur perangkat keras Arduino.
Mampu melakukan pemrograman mikroprosesor Arduino dengan
memanfaatkan fungsi- fungsi standar bahasa pemrograman C.
Melakukan proses debuging (metode yang dilakukan programmer
untuk melakukan analisa dan evaluasi) terhadap program arduino
yang telah dirancang
B. Dasar Teori
Arduino merupakan suatu projek open-source yang diinisiasi oleh
Massimo Banzi, David Cuartielles, David Mellis, dan Nicholas
Zambetti. Arduino terdiri dari dua perangkat, yaitu perangkat keras
(hardware) dan perangkat lunak (software). Sifat open-source ini
memperbolehkan pengguna untuk mengakses informasi sumber seperti
skematik rangkaian listrik untuk perangkat keras dan kode pemrograman
untuk perangkat lunak. Perangkat keras Arduino dapat kita beli dengan
harga yang relatif murah bila dibandingkan dengan development board
sejenis. Selain itu perangkat lunak yang ada dapat kita gunakan secara
gratis dan dapat berjalan di sistem operasi Windows, Linux, maupun
Macintosh.
3) Pemrograman Arduino
Ada tiga langkah utama yang dilakukan dalam melakukan
pemrograman mikroprosesor di dalam environment Arduino yaitu,
1. Penulisan kode program
2. Melakukan kompilasi (compilation) pada kode program
yang telah ditulis.
3. Program yang telah dikompilasi akan di-upload ke dalam
mikroprosesor
Dalam menulis program, arduino memakai bahasa C++ yang
telah disederhanakan dan disesuaikan untuk mikroprosesor. Dalam
bahasa C atau C++, program selalu memiliki satu fungsi utama yakni
main(). Demi mempermudah pemrograman mikroprosesor, bahasa
arduino menetapkan adanya dua fungsi utama yaitu loop() dan
setup(). Struktur standar program Arduino ditunjukkan di bawah
ini.
// Deklarasi Konstanta
void setup(){
Modul Praktikum Pemrograman Arduino 5
//Inisialisasi Variabel
//Inisialisasi mode pinpin pada mikroprosesor
//Perintah inisialisasi lainnya
}
void loop(){
//Perintah 1
//Perintah 2
}
C. Tugas Awal
Sebelum mulai praktikum, harap sadari bahwa arduino ini akan
rusak jika penggunaannya salah, dan bila rusak maka regu anda wajib
menggantinya. Karena itu mohon baca dan pahami:
10 Ways to Destroy an Arduino,
http://ruggedcircuits.com/html/ancp01.html
D.Hello Computer
Sebagai langkah pertama untuk memprogram arduino jalankan perintah
berikut ini:
1. Menghidupkan komputer
2. Koneksikan arduino ke komputer dengan kabel USB
3. Pada komputer, jalankan program Arduino. Amati bahwa LED
power pada Arduino akan langsung menyala, karena sudah mendapat
catu daya dari computer.
Setelah itu, coba ketikkan program berikut.
void setup(){
Serial.begin(9600);
delay(10000); // tunda 10 detik
Serial.println(Hello computer);
}
void loop() {} // kosong saja
void setup(){
Serial.begin(9600);
}
void loop() {
delay(1000); // tunda 1 detik
Serial.println(Hello computer);
}
// konstanta
#defne LED0 4
#defne LED1 5
#defne LED2 6
#defne LED2 7
Tugas 1 :
Buatlah program sehingga ke-empat LED menyala bergantian
dengan selang waktu 250 ms sehingga nampak berjalan. Isi program
kira-kira seperti ini, lengkapi lalu jalankan !
void loop(){
Serial.println("LED0 Nyala");
digitalWrite(LED0,HIGH);
delay(100);
digitalWrite(LED0,LOW);
delay(100);
Serial.println("LED1 Nyala");
digitalWrite(LED1,HIGH);
delay(100);
digitalWrite(LED1,LOW);
delay(100);
// konstanta
#defne LED0 4
#defne LED1 5
#defne BUTTON1 2
#defne BUTTON2 3
// variabel
int val1, val2;
void setup(){
pinMode(LED0,OUTPUT);
pinMode(LED1,.....);
pinMode(BUTTON1,INPUT);
pinMode(BUTTON2,.....);
Serial......(9600);
}
Gambar 7. Rangkaian tombol
void loop(){
val1 = digitalRead(BUTTON1);
val2 = ...........(BUTTON2);
digitalWrite(LED0,val1);
............(LED1,val2);
Serial.print(Button1 = );
Serial.println(val1);
Serial.print(Button2 = );
Serial.println(val2);
delay(1000);
Kini kita ingin membuat program agar LED0 menyala jika tombol S1
ditekan, demikian pula LED1 menyala jika tombol S2 ditekan. Untuk itu
kita perlu membaca masukan digital dengan perintah digitalRead().
Hasil pembacaan ini harus disimpan, untuk itulah kita perlu variabel.
Tugas 2.
Perhatikan dan ketik kode 2 pada perangkat lunak Arduino,
lengkapi bagian yang masih titik-titik. Setelah siap, upload program
di atas dan jalankan serial monitor. Coba amati kondisi LED-0 pada
saat push button di PIN2 ditekan dan dilepaskan, demikian pula
kondisi LED-1 sesuai penekanan push button di PIN3. Cocokkan
dengan informasi yang nampak diserial monitor. Mestinya, jika
tombol S1 ditekan maka LED0 akan menyala (pull-down), dan
sebaliknya LED1 menyala justru ketika tombol S2 sedang tidak
ditekan (karena pull-up).
H.Tipe Data dan Operator
Kini kita ingin agar LED0 menyala jika S1 diteken, demikian pula LED1
menyala jika 2 ditekan. Untuk itu, setelah masukan dibaca kita
memerlukan pemrosesan data dulu sebelum dikeluarkan. Coba amati
program berikut:
#defne LED0 9
#defne LED1 10
#defne BUTTON1 2
#defne BUTTON2 3
void setup(){
pinMode(LED0,OUTPUT);
pinMode(LED1,OUTPUT);
pinMode(BUTTON1,INPUT);
pinMode(BUTTON2,INPUT);
Serial.begin(9600);
}
void loop(){
// Proses input
val1 = digitalRead(BUTTON1);
val2 = digitalRead(BUTTON2);
// Proses output
digitalWrite(LED0,d1);
digitalWrite(LED1,d2);
// Pelaporan
Serial.print("Led0 = ");
Serial.println(d1);
Serial.print("Led1 = ");
Serial.println(d2);
delay(1000);
}
Tugas 3:
Buatlah program sehingga LED0 hanya akan menyala bila
tombol S1 dan S2 ditekan bersamaan. Petunjuk: olah data dengan
operator logika seperti and (&&), or (||) dan not (!).
I. Pengulangan
Pada tugas 1 kita telah membuat program lampu berjalan sesuai
Kode 4. Program tersebut akan berjalan dengan benar, namun rasakan
bahwa selama menulis anda harus melakukan salin-tempel, kemudian
mengubah sedikit variabel. Itu membosankan dan rentan salah.
Bayangkan jika ada 100 LED yang harus dijalankan. Rasanya kurang
cerdas kalau kita harus menulis 100 kode yang sama. Untuk itulah bahasa
pemrograman menyediakan jurus pengulangan, yaitu fitur yang
memungkinkan satu blok perintah dilaksanakan berkali-kali sesuai kondisi
tertentu. Arduino menyediakan perintah pengulangan FOR, WHILE dan
DO-WHILE yang sebaiknya digunakan dengan tepat, agar algoritma
menjadi efisien. Untuk menggunakan pengulangan, kita harus bisa
mengamati empat hal:
1. Apa variabel yang berubah (contoh pada tugas 1, variabel nomor
pin).
2. Berapa nilai awalnya (pada contoh adalah LED0 = 9).
3. Berapa besar perubahannya (pada contoh adalah 1).
4. Berapa nilai akhirnya (pada contoh adalah LED3 = 12).
Bila hal-hal tersebut telah ditentukan, maka kita bisa menulis program
lebih ringkas sebagai berikut:
// konstanta
#defne LED0 4
#defne LED3 7
Tugas 4:
Modifikasilah kode 7 sehingga LED menyala dari LED3 ke LED0
(terbalik arah dari contoh kode 7) dengan metode pengulangan.
J. Pencabangan
Kini kita akan membuat program LED berjalan yang bisa berbalik
arah, yaitu jika tombol S1 ditekan maka LED menyala berurutan dari
LED0 ke LED3, sedangkan jika tombol S1 dilepas LED menyala dari LED3
ke LED0. Pada masalah ini, program punya dua kemungkinan operasi
dan harus memilih salah satu berdasar satu kondisi tertentu. Untuk itu,
bahasa pemrograman menyediakan fitur pencabangan. Ada dua bentuk
dasar pencabangan yaitu IF dan IFELSE. Berikut ini kerangka
program lampu berjalan dengan konstruksi if - else.
// konstanta
............
#defne DELAY 250
void setup(){
// siapkan mode pin dan serial
pinMode(LED0,OUTPUT);
....................
}
void loop(){
int val1; // variabel
val1 = digitalRead(BUTTON1);
// pencabangan sesuai bacaan tombol
if (val1 == HIGH) {
// nyala dari LED0 hingga LED3
// pakai pengulangan sesuai kode 7
......
}
else {
// nyala dari LED3 hingga LED0
// pakai pengulangan sesuai tugas 4
.......................;
}
// Pelaporan
Serial.print("Button1 = ");
Serial.print(val1);
}
Tugas 5:
Lengkapi kerangka Kode 8 (dengan memasukkan potongan dari kode
7 dan latihan 4). Setelah diupload dan berjalan, coba tekan
tombol S1, tahan beberapa saat, lalu lepas kembali. Amati
jalannya LED.
K. Fungsi
Fungsi adalah fitur bahasa pemrograman agar keseluruhan program
menjadi modular, sekaligus bisa lebih singkat. Sejak awal, kita sudah
menggunakan fungsi setup() dan loop(). Selanjutnya kita bisa membuat
fungsi lainnya sesuai keperluan yang akan dipanggil oleh setup() maupun
loop(). Sebagai contoh, ini adalah fungsi untuk lampu berjalan yang
fleksibel bisa dari kiri ke kanan maupun dari kanan ke kiri.
Gambar 6. Rangkaian tombol
// definisi konstanta
....
// fungsi tambahan dengan nama led_run
// tidak mengembalikan apaapa (void) dan menerima 2 parameter
// awal = pin awal yang akan dinyalakan
// akhir = pin akhir yang akan dinyalakan
void led_run(int awal, int akhir){
int delta;
// hitung perubahan
if (awal < akhir)
delta=1;
else
delta=1;
// nyala dari pin1 hingga pin2
for(int pin=awal; // nilai awal
... .. ...........; // syarat terus
pin = pin+delta) // perubahan
{
// blok perintah yang diulang
digitalWrite(pin,HIGH);
delay(DELAY);
digitalWrite(pin,LOW);
}
}
// fungsi utama setup
void setup() {....}
Tugas 6:
Tentukan syarat terus pada fungsi led_run tersebut, lalu lengkapi
kerangka Kode 9 agar bisa dikompilasi dan di-upload. Setelah itu
coba dengan menekan dan melepas tombol S1.
L. Pemilihan
Pemilihan adalah fitur yang mirip dengan pencabangan, namun
kondisi pemilihannya bisa banyak. Dalam bahasa arduino, perintah yang
tersedia adalah switch-case. Sebagai contoh, misal kita ingin membuat
lampu LED menyala secara berurut dari mati semua, lalu menyala satu
(LED0 saja), menyala 2 (LED0 dan LED1), demikian seterusnya hingga
menyala semua (LED0 - LED3). Setelah itu semua LED mati dan siklus
berulang. Ini dia contoh programnya:
// definisi konstanta
....
// fungsi led_off, mematikan semua LED pakai pengulangan
void led_off() {
int pin;
for (pin=LED0; ... .. ....; pin++)
{
digitalWrite(pin, LOW);
}
}
// fungsi led_on, dengan satu parameter
// banyak = jumlah LED yang akan dinyalakan
void led_on(int banyak)
switch (banyak) {
case 0 : break; // berhenti
case 4 : digitalWrite(LED3, HIGH); // terus
case 3 : digitalWrite(LED2, ....); // terus
case 2 : digitalWrite(...., ....); // terus
case 1 : .................. .....;
}
}
// fungsi setup
void setup() { .... }
int banyak = 1;
void loop(){
Serial.println("Banyak = ");
Serial.println(banyak);
led_on(banyak);
delay(DELAY);
led_off();
// naikkan banyak, kembali ke 0 setelah mencapai 4
banyak = (banyak + 1) % 5;
}
// definisi konstanta
....
// fungsi led_off dan led_on seperti kode 10
void led_off() {...}
void led_on(int banyak) {...}
// fungsi setup
void setup() {...}
// angka ke2
Serial.println("Angka 3");
led_on(3);
delay(750);
led_off();
delay(250);
// fungsi fungsi
void led_off() {...}
void led_on(int banyak) {...}
void setup() {...}
Kode 12: LED menyala sesuai deretan angka dengan teknik array
Wow, jadi sangat sederhana dibanding kode 11 bukan ???
Tugas 8:
Lengkapi kerangka Kode 10 lalu jalankan. Amati apakah LED akan
menyala berturutan sesuai deret yang diharapkan ?
3. REFERENSI
http://arduino.cc/en/Reference/HomePage
http://arduino.cc/en/Tutorial/HomePage
http://arduino.cc/en/Main/Hardware
http://www.makeuseof.com/tag/10-great-arduino-projects-for-beginners/
http://blog.startingelectronics.com/arduino-projects-for-beginners/