9 Okt 2019

09 - Motor Servo

Motor Servoo

Pada latihan ini kamu akan belajar bagaiman cara menghubungkan motor servo dan mengendalikannya dengan dengan sebuah potensiometer. Motor servo banyak digunakan pada pengendali mobil RC, pesawat RC, tangan robor dan masih banyak lagi perlatan yang memerlukan pergerakan secara presisi.

Motor Servo: terdapat tiga pin pada koneksi motor servo, power, ground dan sinyal. Ketika kamu memberikan pulsa listrik yang benar pada pin sinyal maka motor servo akan bergerak ke sudut putaran tertentu dan diam diposisi tersebut. Servo pada umumnya mempunya batas putaran gerak 0° sampai 180° walaupun ada yang dapat bergerak 360°. Sinyal yang diterima oleh motor servo berupa sinyal PWM yang sama seperti digunakan pada LED untuk mengatur kecerahannya.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Servo
— 8 x Kabel Jumper

Perakitan:

Rangkaian:

Upload sketch:

Untuk mengisikan program ke board Arduino melalui PC/Laptop dapat memakai 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 dengan tambahan komponen modul Bluetooth HC-05.

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.
[14:58, 10/7/2019] sugandi adi10: /*
  09 - Motor Servo

  Mengontrol posisi motor servo menggunakan potensiometer.
*/

#include    //menyertakan library untuk penggunaan motor servo
 
Servo myservo;       //membuat objek servo untuk mengontrol sebuah motor servo 
 
int servoPin = 9;    //pin yang terhubung dengan motor servo

int potpin = 0;  //menggunakan pin analog untuk dihubungkan ke potensiometer
int val;         //variabel untuk membaca nilai dari pin analog
 
void setup() 
{ 
  myservo.attach(servoPin);  //menghubungkan servo ke pin 9 ke objek servo 
} 
 
void loop() 
{ 
  val = analogRead(potpin);            //membaca nilai dari potentiometer (nilai antara 0 dan 1023) 
  val = map(val, 0, 1023, 0, 179);     //menskalan nilai supaya bisa digunakan dengan servo (nilai antara 0 dan 180) 
  myservo.write(val);                  //membuat posisi servo sesuai nilai yang diskalakan 
  delay(15);                           //jeda untuk menunggu servo selesai merubah posisi
}
Arduino library: untuk menulis kode perintah untuk mengirim sinyal PWM bisa kamu lakukan, namun akan menyita waktu karena perlu menuliskan cukup banyak baris kode dan kamu juga perlu mengetahui lebih jauh tentang motor servo. Beruntungnya pada sistem pemrograman Arduino sudah terdapat kumpulan baris kode perintah yang sudah disederhanakan sehingga hanya butuh menuliskan sedikit kode perintah jika ingin menjalankan fungsi yang cukup rumit, kumpulan baris kode perintah disebut sebagai library. #include adalah sebuah perintah "preprocessor" spesial untuk menyertakan sebuah library (atau file lain) kedalam sketch.

Library servo merupakan library bawaan Arduino untuk menambahkan beberapa perintah untuk dapat mengontrol sebuah servo. Sebagai persiapan supaya Arduino dapat mengontrol sebuah servo, terlebih dahulu kamu harus membuat "object" servo untuk setiap servo (dalam contoh ini object diberi nama ("myServo"), kemudian tuliskan perintah "attach" untuk menghubungkan ke pin digital (dalam contoh ini menggunakan pin 9).

Cara menggunakan:

Dengan memutar-mutar knob potensiometer searah atau berlawanan arah jarum jam, akan diikuti pergerakan yang sama oleh motor servo.

10 - Sensor DHT11

Sensor DHT11

Pada latihan ini akan menggunakan sensor DHT11 untuk mengukur suhu dan kelembaban, kemudian menampilkan hasil data pengukurannya pada serial monitor

Sensor DHT11: di dalam sensor terdapat dua bagian yaitu sebuah kapasitif sensor untuk mengukur kelembaban dan termistor untuk mengukur suhu, serta terdapat chip untuk merubah tegangan analog menjadi singal data digital yang dapat dengan mudah di baca oleh mikrokontroler.

Untuk dapat membaca data dari sensor ini oleh sebuah Arduino, diperlukan penggunaan library DHT yang dapat kamu download disini

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x DHT11
— 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.
[15:00, 10/7/2019] sugandi adi10: /*
  10 - Sensor DHT11

  Membuat program cara membaca data dari sensor suhu dan kelembaban DHT11,
  kemudian menampilkannya pada Serial Monitor.
*/

#include "DHT.h"        //menyertakan library untuk menggunakan sensor DHT11

#define DHTPIN 8        //pin 8 yang dihubungkan dengan sensor
#define DHTTYPE DHT11   //jenis sensor yang digunakan yaitu DHT11

DHT dht(DHTPIN, DHTTYPE);  //membuat sebuah objek untuk sensor, serta menentukan pin dan tipe sensor yg digunakan

void setup() {
  Serial.begin(115200);             //memulai komunikasi dengan serial monitor
  Serial.println("DHT11 test!");    //menampilkan tulisan pada awal serial monitor

  dht.begin();    //memulai komunikasi dengan sensor
}

void loop() {
  //Jeda beberapa detik antara setiap pengukuran.
  delay(2000);

  //Membaca suhu atau kelembaban memakan waktu sekitar 250 milliseconds!
  //Untuk tipe pabrikan sensor yang lam mungkin bisa sampai 2 detik
  float h = dht.readHumidity();
  //Membaca suhu dalam Celsius (the default)
  float t = dht.readTemperature();
  //Membaca suhu dalam Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  //Periksa jika terjadi kegagalan dalam pembacaan dan keluar sesegara mungkin untuk membaca ulang.
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  //Menghitung index panas dalam Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  //Menghitung index panas dalam Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}

Cara menggunakan:

Buka serial monitor kemudian kamu akan melihat ada data yang tampil menunjukan berapa nilai kelembaban, suhu dalam satuan Celsius dan Fahrenheit. Apabila pada serial monitor tampil tulisan "Failed to read from DHT sensor!" ada kemungkinan koneksi kabel ada yang terlepas atau tertukar atau bahkan sensor yang kamu gunakan sudah rusak, coba cek kembali.

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.