9 Okt 2019

06 - Lampu Malam RGB

Lampu Malam RGB

Pada Latihan kali ini akan sama konsepnya dengan latihan sebelumnya bernama lampu otomatis cuma ditambahkan LED RGB dan potensiometer.

LED RGB: bisa dikatakan seperti tiga LED kecil dengan warna berbeda merah, hijau dan biru digabung menjadi satu. Kaki negatif/katoda dari masing-masing warna LED digabung sehingga hanya memiliki 4 kaki. Untuk menyalakan LED ini hubungkan kaki katoda dengan tegangan ground/negatif dan kaki masing-masing warna LED dengan tegangan positif, dan jangan lupa memasang resistor untuk membatasi arus.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Photoresistor
— 1 x Potensiometer
— 1 x LED RGB
— 3 x Resistor 330Ω
— 1 x Resistor 10KΩ
— 11 x Kabel Jumper

Perakitan:

Rangkaian:


Upload sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
 /*
  06 - Lampu Malam RGB

  Menyalakan dan mematikan sebuah LED RGB berdasarkan intensitas cahaya yang diterima oleh photoresistor.
  Putar potensiometer untuk merubah warna nyala LED.
*/

int photoresistor;          //variabel untuk menyimpan nilai photoresistor
int potentiometer;          //variabel untuk menyimpan nilai potensiometer
int threshold = 700;             //jika photoresistor membaca dibawah nilai ini maka LED akan menyala

//LED RGB dihubungkan dengan tiga pin digital
int RedPin = 9;
int GreenPin = 10;
int BluePin = 11;

int photoPin = A0;       //pin yang terhubung dengan photoresistor
int potPin = A1;       //pin yang terhubung dengan potensiometer


void setup() {
  Serial.begin(115200);           //memulai komunikasi dengan serial monitor

  //set pin digital LED sebagai output
  pinMode(RedPin,OUTPUT);
  pinMode(GreenPin,OUTPUT);
  pinMode(BluePin,OUTPUT);
}

void loop() {
  
  photoresistor = analogRead(photoPin);       //membaca nilai dari photoresistor
  potentiometer = analogRead(potPin);         //membaca nilai dari potensiometer

  Serial.print("Photoresistor value:");
  Serial.print(photoresistor);            //menampilkan nilai photoresistor ke serial monitor
  Serial.print("  Potentiometer value:");
  Serial.println(potentiometer);          //menampilkan nilai photoresistor ke serial monitor
  
  if(photoresistor < threshold){          //jika kondisi gelap (nilai photoresistor dibawah nilai threshold) maka LED menyala
    //jika kondisi gelap maka akan menjalankan fungsi-fungsi warana
    //yang berbeda disesuaikan dengan nilai dari pembacaan potensiometer.
    if(potentiometer > 0 && potentiometer <= 150)
      red();
    if(potentiometer > 150 && potentiometer <= 300)
      orange();
    if(potentiometer > 300 && potentiometer <= 450)
      yellow(); 
    if(potentiometer > 450 && potentiometer <= 600)
      green();
    if(potentiometer > 600 && potentiometer <= 750)
      cyan();
    if(potentiometer > 750 && potentiometer <= 900)
      blue(); 
    if(potentiometer > 900)
      magenta();  
  } 
  else {                                  //jika kondisi terang maka akan mematikan LED
    
    turnOff();                            //memanggil fungsi untuk mematikan LED
  }  
  
  delay(100);                             //jeda untuk membuat penampilan data mudah dibaca
}

void red() {
    //set pin LED dengan nilai untuk membuat nyala LED menjadi merah    
    analogWrite(RedPin, 100);
    analogWrite(GreenPin, 0);
    analogWrite(BluePin, 0);
}

void orange() {
    //set pin LED dengan nilai untuk membuat nyala orange
    analogWrite(RedPin, 100);
    analogWrite(GreenPin, 50);
    analogWrite(BluePin, 0);
}

void yellow() {
    //set pin LED dengan nilai untuk membuat nyala kuning
    analogWrite(RedPin, 100);
    analogWrite(GreenPin, 100);
    analogWrite(BluePin, 0);
}

void green() {
    //set pin LED dengan nilai untuk membuat nyala hijau    
    analogWrite(RedPin, 0);
    analogWrite(GreenPin, 100);
    analogWrite(BluePin, 0);
}

void cyan() {
    //set pin LED dengan nilai untuk membuat nyala cyan    
    analogWrite(RedPin, 0);
    analogWrite(GreenPin, 100);
    analogWrite(BluePin, 100);
}

void blue() {
    //set pin LED dengan nilai untuk membuat nyala biru
    analogWrite(RedPin, 0);
    analogWrite(GreenPin, 0);
    analogWrite(BluePin, 100);
}

void magenta() {
    //set pin LED dengan nilai untuk membuat nyala magenta   
    analogWrite(RedPin, 100);
    analogWrite(GreenPin, 0);
    analogWrite(BluePin, 100);
}

void turnOff() {
    //set semua pin LED ke 0 atau mati
    analogWrite(RedPin, 0);
    analogWrite(GreenPin, 0);
    analogWrite(BluePin, 0);
}

Cara menggunakan:

Sama seperti pada latihan lampu otomatis, apabila kondisi ruangan terang atau sensor photoresistor tidak tertutup maka LED RGB akan mati, tapi apabila kondisi ruangan gelap atau sensor ditutup maka LED RGB akan nyala. Nyala warna LED RGB dapat kamu rubah dengan memutar knob potensiometer.

07 - Buzzer

Buzzer

Pada latihan ini kamu akan menggunakan Arduino bersama buzzer kecil untuk memainkan musik, dan kamu akan belajar bagaimana cara membuat program untuk musik kamu sendiri menggunakan variabel array.

Buzzer: di dalamnya menggunakan sebuah lilitan magnet untuk mengetarkan piringan besi dibungkus dengan housing plastik. Dengan cara memberikan tegangan berupa pulsa listrik pada lilitan magnet dengan frekuensi yang berbeda-beda, maka akan menghasilkan suara dari buzzer tersebut.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Buzzer
— 3 x Kabel JUmper

Perakitan:

Rangkaian:

Upload sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
  08 - Buzzer

  Memainkan nada menggunakan sebuah buzzer yang terhubung ke pin 8
*/

int speakerPin = 8;               //pin dimana buzzer dihubungkan

void setup() {
  pinMode(speakerPin, OUTPUT);    //set pin digital sebagai output untuk speaker
}

void loop() {
    
  play('g', 2);       //ha
  play('g', 1);       //ppy
  play('a', 4);       //birth
  play('g', 4);       //day
  play('C', 4);       //to
  play('b', 4);       //you
  
  play(' ', 2);       //jeda 2 beats
  
  play('g', 2);       //ha     
  play('g', 1);       //ppy
  play('a', 4);       //birth
  play('g', 4);       //day
  play('D', 4);       //to
  play('C', 4);       //you

  play(' ', 2);       //jeda 2 beats
  
  play('g', 2);       //ha
  play('g', 1);       //ppy
  play('G', 4);       //birth
  play('E', 4);       //day
  play('C', 4);       //dear
  play('b', 4);       //your
  play('a', 6);       //name

  play(' ', 2);       //jeda 2 beats
  
  play('F', 2);       //ha
  play('F', 1);       //ppy
  play('E', 4);       //birth
  play('C', 4);       //day
  play('D', 4);       //to
  play('C', 6);       //you
  
  while(true){}       //membuaat program stak disini sehingga musik hanya dimainkan sekali
}


void play( char note, int beats) {
  int numNotes = 14;  //jumlah nada didalam array notes dan frekuensi (ada 15 nilai, tapi sebuah array dimulai dari 0 - 14)
  
  //Catatan: nada-nada yang digunakan adalah C major

  //array notes ini digunakan untuk menyimpan kumpulan nada-nada
  char notes[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C', 'D', 'E', 'F', 'G', 'A', 'B', ' '};
  //array frequencies dibawah berpasangan dengan tiap huruf (contoh urutan nada ke 4 adalah 'f', urutan frekuensi ke 4 adalah 175)
  int frequencies[] = {131, 147, 165, 175, 196, 220, 247, 262, 294, 330, 349, 392, 440, 494, 0};
  
  int currentFrequency = 0;    //variabel ini digunakan untuk menyimpan frekuensi yang sedang dimainkan
  int beatLength = 150;        //waktu ketukan (merubah nilai ini akan mempercepat atau memperlambat tempo tempo dari lagu)

  //mencari frekuensi yang berpasangan sesuai dengan nada
  for (int i = 0; i < numNotes; i++)  //cek setiap nilai didalam array notes dari 0 sampai 14
  {
    if (notes[i] == note)             //memeriksa apakah huruf yang akan dimainkan ada yang cocok dengan huruf/nada yang berada didalam array notes?
    {
      currentFrequency = frequencies[i];   //jika Ya! Set nilai currentFrequency sama dengan frekuensi yang sepasang dengan huruf/nada
    }
  }

  //memainkan frequency yang sepasang dengan huruf/nada dengan ketukan yang sesuai dengan nilai variabel beats pada pemanggilan fungsi play
  tone(speakerPin, currentFrequency, beats * beatLength);   
  delay(beats* beatLength);   //jeda sesuai dengan lama ketukan nada yang dimainkan
  delay(50);                  //sedikit jeda antara tiap nada untuk membuat lagu menjadi lebih natural

}

Cara menggunakan:

Ketika program mulai berjalan, sebuah akan dimainkan oleh buzzer. Untuk mengulang musik kamu perlu menekan tombol reset pada board Arduino.

08 - Piano Digital

Piano Digital

Pada latihan ini kamu akan diajak untuk mencoba membuat proyek yang menggunakan push button namun tidak dihubungkan ke pin digital seperti pada umumnya. Sekarang kamu akan menghubungkan beberapa push button sekaligus ke satu pin analog, dengan begitu dapat menghemat penggunaan pin pada Arduino. Beberapa push button dihubungkan secara paralel dengan pin analog, dari masing-masing push button terhubung dengan tegangan positif melalui resistor sebagai pembagi tegangan, ketika setiap push button ditekan akan menyambungkan nilai tegangan yang berbeda-beda tergantung besarnya nilai hambatan resistor yang digunakan.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 4 x Push Button
— 1 x Buzzer
— 1 x Resistor 330Ω
— 4 x Resistor 10KΩ
— 9 x Kabel jumper

Perakitan:

Rangkaian:


Upload sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
 /*
  08 - Piano Digital

  Membunyikan buzzer dengan nada-nada tertentu sesuai dengan push button mana yang ditekan.
*/

//membuat sebauah array notes untuk menyimpan nada-nada
//nilai yang berada didalam array notes tersebut
//adalah nilai frekuensi sesuai dengan nada C, D, E, dan F
int notes[] = {262, 294, 330, 349};

int speakerPin = 8;      //pin dimana buzzer dihubungkan
int multiButtonPin = A0; //pin dimana ke 4 buton terhubung dengan analog pin A0


void setup() {
  //memulai komunikasi dengan serial monitor
  Serial.begin(115200);
}

void loop() {
  //membuat sebuah variabel lokal untuk menyimpan input pada pin A0
  int keyVal = analogRead(multiButtonPin);
  //menampilkan nilai dari A0 ke Serial Monitor
  Serial.println(keyVal);

  //membunyikan nada sesuai nilai pada masukan A0
  if (keyVal >= 1000;) {
    //membunyikan frekuensi pertama didalam array pada pin 8
    tone(speakerPin, notes[0]);
  } else if (keyVal >= 970 && keyVal <= 1000) {
    //membunyikan frekuensi kedua didalam array pada pin 8
    tone(speakerPin, notes[1]);
  } else if (keyVal >= 485 && keyVal <= 525) {
    //membunyikan frekuensi ketiga didalam array pada pin 8
    tone(speakerPin, notes[2]);
  } else if (keyVal >= 320 && keyVal <= 360) {
    //membunyikan frekuensi keempat didalam array pada pin 8
    tone(speakerPin, notes[3]);
  } else {
    //jika nilai diluar batas, maka tidak membunyikan apapun
    noTone(speakerPin);
  }
}

Cara menggunakan:

Kamu akan mendengar suara dengan nada yang berbeda-beda ketika menekan push button. Jika tidak ada pengaruh ketika push button ditekan bisa periksa melalui serial monitor untuk memastikan tiap push button yang ditekan berada pada range nilai yang sesuai dengan variable pada program.

05 - Lampu Otomatis

Lampu Otomatis

Pada latihan sebelumnya kamu menggunakan potensiometer, dimana nilai hambatannya dapat berubah-rubah ketika kamu memutar knobnya. Dilatihan sekarang ini kamu akan menggunakan photoresistor.

Photoresistor: merupakan sebuah variable resistor yang sensitif terhadap cahaya dimana hambatanya dapat berubah-ubah tergantung seberapa cerah cahaya yang mengenai sensor tersebut.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Photoresistor
— 1 x LED
— 1 x Resistor 330Ω
— 1 x Resistor 10KΩ
— 5 x Kabel Jumper

Perakitan:

Rangkaian


Upload Sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.
/*
  05 - Lampu Otomatis

  Menggunakan photoresistor untuk mengetahui intensitas cahaya disebuah ruangan, kemudian menyalakan LED ketika kondisi gelap.
*/

int ledPin = 7;          //pin yang terhubung dengan LED
int photoPin = A0;       //pin yang terhubung dengan photoresistor

int photoresistor = 0;              //variabel ini akan menyimpan nilai yang didasarkan dari dari hambatan photoresistor
int threshold = 750;                //jika photoresistor membaca dibawah nilai ini maka LED akan menyala

void setup() {
  Serial.begin(115200);             //memulai komunikasi serial
  
  pinMode(ledPin, OUTPUT);               //set pin 7 sebagai sebuah output yang dapat diset ke HIGH atau LOW
}

void loop() {
  //read nilai photoresistor
  photoresistor = analogRead(photoPin);   //membaca nilai photoresistor antara 0 sampai 1023 bergantung dari nilai hambatan photoresistor
  Serial.println(photoresistor);          //menampilkan nilai photoresistor pada serial monitor

  //jika nilai photoresistor value dibawah nilai threshold maka led menyala, dan begitu sebaliknya akan mati
  if (photoresistor < threshold){
    digitalWrite(ledPin, HIGH);         //menyalakan LED  
  } else{
    digitalWrite(ledPin, LOW);          //mematikan LED
  }

  delay(100);                       //jeda untuk membuat penampilan data mudah dibaca
}

Cara menggunakan:

Dalam program terdapat variable treshold untuk menyimpan sebuah nilai sebagai set point. Menggunakan fungsi if/else untuk membandingkan nilai variable pembacaan dari input sensor dengan nilai treshold, apabila nilai variable tersebut di atas nilai treshold (terang) maka LED mati, sebaliknya jika nilai variable tersebut di bawah nilai treshold (gelap) maka LED nyala. Buka serial monitor dan nilai variable dari photoresistor akan tampil.

04 - Lampu Tidur

Lampu Tidur

Pada Latihan kali ini kamu akan membuat sebuah lampu tidur menggunakan potensiometer sebagai inputan untuk mengontrol nyala redup terangnya sebuah LED.

Potensiometer: disebut juga rebagai variabel resistor. Memiliki tiga kaki, ketika diberi tegangan 5V antara kaki no 1 dan 3, pada kaki tengah atau no 2 dapat mengeluarkan tegangan atara 0V sampai dengan 5V tergantung dari posisi knob potensiometer.
Pembagi Tegangan: merupakan rangkaian sederhana yang dapat merubuah sebuah tegangan menjadi lebih kecil hanya dengan menggunakan dua resistor. Sebuah potensiometer merupakan apalikasi dari rangkaian pembagi tegangan yang sangat bagus. Tegangan dibagi secara proporsional berdasarkan hambatan anatara kaki tengah dengan kaki ground. rangkain pembagi tegangan tersebut akan kamu aplikasikan pada latihan ini dengan menggunakan potensiometer.

Kebutuhan komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Potensiometer
— 1 x LED
— 1 x 330 Ohm Resistor
— 6 x Kabel Jumper

Perakitan:

Rangkaian:

Upload Sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat menggunakan software Arduino IDE.

Apabila kamu tidak mau menggunakan PC/Laptop untuk mengupload sketch/program ke board Arduino, kamu masih bisa menggunakan handphone Android untuk mengisikan program ke Arduino menggunakan aplikasi Bluino Loader, cara uploadnya pun bisa dua cara melalui USB dengan menggunakan adapter OTG atau melalui Bluetooth.

Cara lain dapat juga upload sketch langsung melalui aplikasi ini ke Arduino melalui USB OTG atau Bluetooth dengan cara menekan ikon upload (tanda panah ke kanan) di bawah.

/*
  Lampu Tidur

  Menggunakan potensiometer untuk mengatur tingkat kecerahan sebuah LED.
*/

int ledPin = 6;       //pin yang terhubung dengan LED
int potPin = A0;       //pin yang terhubung dengan potensiometer

int potPosition;            //variabel ini akan menyimpan nilai dari tegangan masukan ke A0 yang berdasarkan posisi dari knob potensiometer
int calibratedpotPosition;  //variabel ini akan menyimpan nilai yang telah diskalakan/terkalibrasi dari nilai potPosition

void setup() {
  
  Serial.begin(115200);  //inisialisasi komunikasi serial pada 115200 bits per second.
  pinMode(ledPin, OUTPUT);    //Menentukan pin 6 sebagai output untuk sebuah LED.
}

void loop() {
  potPosition = analogRead(potPin);   //membaca tegangan dari pin A0 dan menyimpannya sebagai nilai potPosition
  Serial.println(potPosition);    //menampilkan nilai potPosition pada serial monitor

  calibratedpotPosition = map(potPosition, 0, 1023, 0, 255);  //menskalakan nilai potPosition dari 0 - 1023 menjadi 0 - 255.
                                                              //fungsi map() penggunaanya untuk sebuah bilangan skala yang linear.
                                                              //map(inputValue, fromMin, fromMax, toMin, toMax);

  analogWrite(ledPin, calibratedpotPosition);    //menggunakan fungsi analogWrite untuk dapat mengeluarkan output tegangan linear
                                            //dari sebuah pin digital/PWM antara 0 - 255 atau 0 - 5V. 
}

Serial Monitor: merupakan salah satu fitur yang paing penting yang terdapat di dalam software Arduino IDE. Ketika kamu membuat sebuah proyek dengan Arduino, ini akan sangat membantu untuk melihat dan mengetahui apakah nilai variable yang kamu gunakan di dalam programmu sesuai atau untuk mengetahui saat program kamu mengalami masalah dimana ada kode yang tidak bekerja dengan seperti yang kamu harapkan. Pada latihan ini akan memngenalkan kamu dengan Serial Monitor. Untuk membuka serial monitor kamu bisa mengklik icon yang bergambar kaca pembesar.

ANALOG OUTPUT (PWM): dengan perintah digitalWrite() dapat membuat sebuah pin menjadi kondisi ON (5V) atau OFF (0V), tapi bagaimana ketika kamu ingin 2.5V? perintah analogWrite() yang dapat mengeluarkan output 2.5V dengan cara membolak-balikan kondisi pin ON dan OFF dengan perbandingan waktu yang tertentu secara terus menerus, sehingga dengan perbandingan waktu 50% dari 5V akan menjadi 2.5V. Jadi dengan begitu mau tegangan berapapun antara 0 - 5V bisa memungkinkan, yang seperti ini yang dinamakan Pulse-Width-Modulation (PWM).

Cara menggunakan:

Kamu akan melihat nyala LED terang, redup atau bahkan mati tergantung dari posisi knob potensiometer. Dengan kamu memutar-mutar knob potensio akan mengatur tingkat kecerahan nyala LED. Selain itu kamu juga dapat membuka serial monitor dan melihat nilai yang terbaca oleh analog pin ketika kamu memutar-mutar potensiometer, jika kamu tidak dapat melihat nilai tersebut pastikan kamu telah memilih baudrate yang sesuai 115200.