Rabu, 01 Maret 2017

Tutorial Belajar Arduino Part 6: Pengenalan Array

Membuat Rangkaian LED
Silakan buat rangkaian Arduino Anda seperti rangkaian di atas. Siapkan 4 buah resistor dan 4 buah LED. Siapkan kabel jumper untuk menyuplai GDN pada project board. Masing-masing kaki negatif LED dihubungkan ke GND dengan resistor. Sedangkan keempat LED tersebut dihubungkan berturut-turut dengan pin 10, 11, 12, dan 13 pada board Arduino. Resistor yang digunakan bernilai 470 ohm.

Merangkai komponen alat
Kita tinggal merangkai alat pada PCB Lubang standar DIP atau 2.54mm  


kemudian dihubungkan dengan Arduino pro mini seperti gambar di bawah


Jika sudah dirangkai, silakan upload Sketch berikut:

// Animasi LED
// Inisialisasi Pin LED
const int pinLED1 = 10;
const int pinLED2 = 11;
const int pinLED3 = 12;
const int pinLED4 = 13;
void setup() {
  // pin LED sebagai output
  pinMode(pinLED1,OUTPUT);
  pinMode(pinLED2,OUTPUT);
  pinMode(pinLED3,OUTPUT);
  pinMode(pinLED4,OUTPUT);
}
void loop() {
// perulangan sebanyak 5 kali
// dari i=0 hinga i=4 atau (i < 5)
for(int i=0; i<5; i++){
  if(i==1){
    // jika i=1, hidupkan led 1, led yang lain mati
    digitalWrite(pinLED1,HIGH);
    digitalWrite(pinLED2,LOW);
    digitalWrite(pinLED3,LOW);
    digitalWrite(pinLED4,LOW);
  } else if(i==2){
  // jika i=2, hidupkan led 1 & 2, led 3 & 4 mati
    digitalWrite(pinLED1,HIGH);
    digitalWrite(pinLED2,HIGH);
    digitalWrite(pinLED3,LOW);
    digitalWrite(pinLED4,LOW);
  } else if(i==3){
   // jika i=3, hidupkan led 1, 2, & 3, led 4 mati
    digitalWrite(pinLED1,HIGH);
    digitalWrite(pinLED2,HIGH);
    digitalWrite(pinLED3,HIGH);
    digitalWrite(pinLED4,LOW);
  } else if(i==4){
  // jika i=4, hidupkan semua led
    digitalWrite(pinLED1,HIGH);
    digitalWrite(pinLED2,HIGH);
    digitalWrite(pinLED3,HIGH);
    digitalWrite(pinLED4,HIGH);
  } else{
  // jika tidak, matikan semua led
    digitalWrite(pinLED1,LOW);
    digitalWrite(pinLED2,LOW);
    digitalWrite(pinLED3,LOW);
    digitalWrite(pinLED4,LOW);
  }
  // delai selama 5 detik
  delay(5000);
  }
}

Program di atas akan membuat LED menyala bergantian sebanyak 5 animasi (perulangan sebanyak 5 kali). Pertama, semua LED akan mati selama 5 detik. Kedua, LED 1 akan menyala. Ketiga, LED 1 dan 2 akan menyala. Keempat, LED 1, 2, dan 3 akan menyala. Kelima, semua LED akan menyala.
Animasi tersebut ditentukan berdasarkan nilai i, nilai i diperiksa dengan perintah IF. Jika nilai i=0, maka semua LED mati, jika i=1 maka satu LED nyala, dan seterusnya.
Selain menggunakan IF, ada cara lain yang lebih simpel untuk membuat animasi LED seperti program pada Sketch berikut

// Sketch Animasi LED Alternatif
// Inisialisasi Pin LED
const int pinLED1 = 10;
const int pinLED2 = 11;
const int pinLED3 = 12;
const int pinLED4 = 13;
void setup() {
// pin LED sebagai output
  pinMode(pinLED1,OUTPUT);
  pinMode(pinLED2,OUTPUT);
  pinMode(pinLED3,OUTPUT);
  pinMode(pinLED4,OUTPUT);
}
void loop() {
  digitalWrite(pinLED1,LOW);
  digitalWrite(pinLED2,LOW);
  digitalWrite(pinLED3,LOW);
  digitalWrite(pinLED4,LOW);
  delay(1000);
  digitalWrite(pinLED1,HIGH);
  delay(1000);
  digitalWrite(pinLED2,HIGH);
  delay(1000);
  digitalWrite(pinLED3,HIGH);
  delay(1000);
  digitalWrite(pinLED4,HIGH);
  delay(1000);
}

Dengan memanfaatkan delay, program pada Sketch diatas lebih simple daripada Sketch sebelumnya. Kira-kira, apakah ada cara yang lebih simpel lagi? Ada! Kita bisa menggunakan Array. Apa itu Array?
Pengenalan Array
Array merupakan variabel yang bisa menampung banyak data, masing-masing data bisa diambil dengan alamat indeks (posisi) data dalam Array tersebut. Alamat indeks pada array standarnya adalah angka integer yang diawali dari angka 0. Jadi, jika kita punya data 5 dalam variabel Array, maka data pertama pada alamat indeks ke-0, data ke-2 pada alamat indeks ke-1, dan data ke-5 pada alamat indeks ke-4.
Untuk lebih memahami tentang Array, program pada Sketch berikut merupakan versi lebih simpel daripada Sketch sebelumnya dengan memanfaatkan perulangan FOR dan Array.

// Sketch Animasi LEDdengan Array
// Inisialisasi Jumlah LED
const int numLED = 4;
// LED 1,2,3,&4 jadi 1 varibel
// dengaan alamat index 0,1,2,3
const int pinLED[numLED] = {10,11,12,13};
void setup() {
  // Inisialisasi semua pin LED sebagai OUTPUT
  for(int i=0; i<4; i++){
  pinMode(pinLED[i],OUTPUT);
  }
}
void loop() {
  // Matikan semua LED
  for(int i=0; i<4; i++){
  digitalWrite(pinLED[i],LOW);
  }
  delay(1000);
  // Hidupkan semua LED bertahap dg jeda 1 detik
  for(int i=0; i<4; i++){
  digitalWrite(pinLED[i],HIGH);
  delay(1000);
  }
}

 Jika dibandingkan dengan Sketch sebelumnya  yang tanpa baris keterangan komentar, maka Sketch diatas jauh lebih pendek dan lebih simpel.
Pada Sketch diatas, keempat LED dimuat dalam satu variabel yaitu variabel Array pinLED. Masing-masing LED bisa diakses berdasarkan alamat indeks. Perhatikan pada baris 6.
6. const int pinLED[numLED] = {10,11,12,13};
Secara otomatis, alamat indeks untuk masing-masing LED tergantung pada urutan pin tersebut. Pin 10 ada pada alamat indeks ke- 0, pin 11 ada pada indeks ke 1, pin 12 ada di indeks ke 2, dan pin 13 ada pada indeks ke 3. Sehingga untuk mengakses pin 10, kita bisa menambahkan kurung siku dan alamat indeks ke-0, seperti berikut:
Pin10 = pinLED[0]
Karena indeks tertinggi adalah angka 3, maka di setiap perulangan LED tidak boleh lebih dari 3 atau < 4, perhatikan perintah FOR berikut:
for(int i=0; i<4; i++){
Yap, semoga penjelasan Array di atas mudah dipahami. Jika ada yang membingungkan, silakan tanya-tanya di website, dengan senang hati penulis akan menjawab. Baik, selanjutnya kita akan lebih mengembangkan Sketch sedikit lebih kompleks dan animasinya lebih menarik.

//Animasi LED Bonus 1
// Inisialisasi Jumlah LED
const int numLED = 4;
// LED 1,2,3,&4 jadi 1 varibel
// dengaan alamat index 0,1,2,3
const int pinLED[numLED] = {10,11,12,13};
void setup() {
  // Inisialisasi semua pin LED sebagai OUTPUT
  for(int i=0; i<4; i++){
  pinMode(pinLED[i],OUTPUT);
  }
}
void loop() {
  // Hidupkan semua LED bertahap dg jeda 1 detik
  for(int i=0; i<4; i++){
    digitalWrite(pinLED[i],HIGH);
    delay(500);
  }
  // Matikan semua LED bertahap dg jeda 1 detik
  for(int i=0; i<4; i++){
    digitalWrite(pinLED[i],LOW);
    delay(500);
  }
}
 
// Animasi LED Bonus 2
// Inisialisasi Jumlah LED
const int numLED = 4;
// LED 1,2,3,&4 jadi 1 varibel
// dengaan alamat index 0,1,2,3
const int pinLED[numLED] = {10,11,12,13};
void setup() {
  // Inisialisasi semua pin LED sebagai OUTPUT
  for(int i=0; i<4; i++){
    pinMode(pinLED[i],OUTPUT);
  }
}
 
void loop() {
  // hidupkan led indeks 0 hingga 2 satu-persatu
  for(int i=0; i<3; i++){
    digitalWrite(pinLED[i],HIGH);
    delay(200);
    digitalWrite(pinLED[i],LOW);
  }
  // hidupkan led indeks 3 hingga 1 satu-persatu
  for(int i=3; i>0; i--){
    digitalWrite(pinLED[i],HIGH);
    delay(200);
    digitalWrite(pinLED[i],LOW);
  }
}


2 komentar:

  1. Permisi mas, jika kita mau bikin led dengan 3 mode berjalan dan 3 tombol on/off untuk masing2 mode, gimana caranya? Saya sudah coba tapi gagal terus.

    BalasHapus
  2. Makasih mas Imam , teori pelajaran mudah dicerna dan dimengerti sy ajan mencobanya ...

    BalasHapus