15 Okt 2019

Apa itu Arduino?

Apa itu Arduino?

Pengenalan Arduino

Arduino adalah sebuah minimum sistem mikrokontroler bersifat open-source yang banyak digunakan untuk membagun sebuah project elektronika. Platform Arduino berisi dua yaitu hardware berupa board dan sebuah software atau IDE (Integrated Development Environment) yang berjalan pada komputer, digunakan untuk menulis dan mengisikan perogram ke board Arduino.

Platform Arduino menjadi sangat populer bagi orang-orang yang ingin memulai belajar elekronika khususnya mikrokontroler, karena dengan memnggunakan Arduino tidak lagi memerlukan hardware tambahan (sering disebut downloader) untuk mengisikan program kedalam board mikrokontroler, tapi hanya perlu kabel USB saja yang disambungkan dari komputer ke board Arduino. Bahasa pemograman yang dituliskan pada Arduino IDE menggunakan bahasa pemograman C++ yang telah disederhanakan, sehingga dapat lebih mudah dimengerti. Sebuah board Arduino didesain dengan standar bentuk board serta posisi dan susunan pin/port sehingga dapat lebih mudah digunakan dan diakses dengan perangkat lain.



Arduino tipe UNO adalah salah satu jenis board dari Arduino yang sangat populer karena merupakan pilihan yang sangat cocok bagi pemula. Pada latihan percobaan yang akan kita praktekan akan mengguanakan board Arduino UNO.



Percaya atau tidak, hanya memerlukan 10 baris kode kamu dapat membuat LED yang berada pada Arduino kamu berkedip. Kode-kode tersebut mungkin kamu belum memahaminya untuk sekarang, tapi setelah membaca dan mengikuti latihan-latihan kamu akan memahami maksud dari kode-kode tersebut atau bahkan dapat mengembangkannya.

Sejatinya Arduino hardware dan software didesain untuk dapat digunakan oleh seniman, desainer, penggiat hobi, hacker, pemula, dan semua orang yang tertarik untuk membuat sebuah objek interaktif. Arduino dapat berinteraksi dengna tombol, LED, motor, speaker, unit GPS, camera, internet, smartphone atau TV dan masih banyak lagi perangkat yang kamu bisa hubungkan dengan Arduino. Arduino sangat fleksibel untuk bisa membuat berbagai project, dimana software Arduino adalah gratis, dan hardware board juga dengan harga yang sangat terjangkau, keduanya baik hardware dan software mudah untuk dipelajari karena sudah terdapat komunitas besar dari pengguna-pengguna Arduino yang sudah berkontribusi contoh program dan instruksi-intruksi untuk membuat berbagai project elektronika yang dibuat menggunakan board Arduino.

Ada apa saja didalam Arduino?

Terdapat banyak varian jenis board Arduino yang dapat digunakan untuk fungsi yang berbeda-beda. Beberapa board ada yang terlihat sedikit berbeda tidak seperti pada gambar dibawah, tetapi hampir semua komponen utama adalah sama:

Power (USB / Barrel Jack)

Setiap Arduino memiliki jalur yang akan dihubungkan dengan sumber tenaga/tegangan. Arduino UNO dapat diberi tegangan melalui USB (1) dapat berasal dari komputer, power bank atau berasal dari power supply melalui barrel jack (2). Koneksi kabel USB juga berfungsi untuk jalur pemograman ke board Arduino.

Perhatian: Jangan menggunakan power supply yang tegangannya lebih dari 20 Volt, karena dapat merusak board Arduino karena overpower. Tegangan yang dizinkan untuk Arduino adalah 6 - 12 Volt.

Pin (5V, 3.3V, GND, Analog, Digital, PWM, AREF)

Pin pada Arduino adalah tempat dimana untuk menyambungkan kabel anatara pin Arduino dengan perangkat-perangkat input/output (biasanya menghubungkan dengan rangakain project pada breadboard). Pin Arduino biasanya berupa female header sehingga untuk mendapatkan koneksi dari pin Arduino hanya cukup colokan kabel ke dalam lubang pin header tersebut. Terdapat beberapa pin pada Arduino dengan fungsi yang berbeda-beda, masing-masing pin diberi label sesuai nama dan fungsinya pada PCB.

— GND (3): Kependekan dari 'Ground'. Terdapat beberapa pin ground dan semuanya dapat digunakan.

— 5V (4) & 3.3V (5): 5V pin memberikan supply tegangan 5 volt, dan 3.3V pin memberikan supply tegangan 3.3 volt. Kebanyakan yang digunakan dengan Arduino bekerja pada tegangan 5 atau 3.3 volt.

— Analog (6): Pin yang berada dibawah tulisan 'Analog In' (A0 sampai A5 pada Arduino UNO) adalah pin Analog Input. Pin ini dapat membaca sinyal dari sensor analog (seperti sensor suhu) dan mengkonversinya kedalam nilai digital yang dapat kita baca.

— Digital (7): Terletak disisi lain dari analog pin terdapat pin digital (0 sampai 13 pada UNO). Pin ini dapat difungsikan sebagai digital input (seperti memberitahukan apabila button dipencet) dan digital output (seperti menyalakan sebuah LED).

— PWM (8): Kamu bisa melihat simbol (~) pada beberapa pin digital (3, 5, 6, 7, 9, 10, dan 11 pada UNO). Pin ini berfungsi sebagai pin digital biasanya, tapi bisa digunakan untuk Pulse-Width Modulation (PWM), sederhananya pin ini dapat mengeluarkan keluaran tegangan Analog.

— AREF (9): Singkatan dari Analog Reference. Pin ini digunakan untuk mengatur tegangan referensi external (antara 0 dan 5 volt) sebagai batas untuk pin analog input.

Tombol Reset

Seperti komputer pada umumnya, Arduino mempunyai tombol reset (10). Menekan tombol ini akan menghubungkan pin reset dengan ground dan merestart semua kode program yang ada didalam Arduino. Reset ini akan sangat membantu jika kode tidak berjalan berulang-ulang, tapi kamu ingin menjalankannya beberapa kali.

Power LED Indicator

Tepat di bawah dan di sebelah kanan kata "UNO" di board Arduino, ada LED kecil di samping kata 'ON' (11). LED ini harus menyala setiap kali Anda memasukkan Arduino Anda ke sumber tegangan. Jika lampu ini tidak menyala, ada kemungkinan ada sesuatu yang salah.

TX RX LED

TX adalah singkatan dari transmit, RX adalah singkatan dari receive. Kata ini cukup familiar dalam istilah elektronik untuk menunjukkan pin sebagai komunikasi serial. Dalam board Arduino terdapat dua tempat tulisan TX dan RX - pertama pada pin digital 0 dan 1, dan yang kedua di samping indikator LED TX dan RX (12). LED ini akan memberi kita beberapa indikasi visual setiap kali Arduino menerima atau mentransmisikan data (seperti saat kita memasukan program baru ke board Arduino).

IC Utama

Berwarna hitam terdapat banyak kaki logam disampingnya adalah IC, atau Integrated Circuit (13). Anggap saja itu sebagai otaknya Arduino. IC utama pada Arduino UNO berbeda dengan jenis board Arduino lainnya tapi biasanya merupakan IC keluarga ATmega yang diproduksi oleh perusahaan ATMEL. Untuk mengetahui jenis IC yang dipakai bisa ditemukan secara tertulis disisi atas IC. Jika Anda ingin tahu lebih banyak tentang perbedaan antara IC tersebut, dapat dilihat pada datasheet.

Voltage Regulator

Regulator tegangan (14) berfungsi untuk membatasi jumlah tegangan yang masuk ke board Arduino. Anggap saja itu sebagai semacam gatekeeper; ini akan menghilangkan tegangan lebih yang mungkin membahayakan sirkuit. Tentu saja, ini memiliki batas, jadi jangan menghubungkan Arduino Anda dengan yang lebih besar dari 20 volt.

9 Okt 2019

13 - Alarm Parkir

Alarm Parkir

Ini merupakan latihan lanjutan dari penggunaan sensor jarak ultrasonik, pada latihan ini kamu akan membuat sensor parkir seperti yang ada pada kendaran roda empat, untuk mengetahui apakah kendaraan tersebut akan mendabrak sesuatu ketika parkir dengan membunyikan sebuah buzzer.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x HC-SR04 Ultrasonik
— 1 x LED RGB
— 1 x Buzzer
— 3 x Resistor 330Ω
— 12 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.
/*
  13 - Alarm Parkir

  Mengontrol warna nyala LED RGB menggunakan sensor jarak ultrasonik.
  Ketika sebuah objek/benda terlalu dekat dengan sensor, maka buzzer berbunyi.
*/

int trigPin = 2;        //hubungkan dengan pin trigger pada sensor      
int echoPin = 3;        //hubungkan dengan pin echo pada sensor     

int redPin = 9;         //pin mengontrol nyala LED merah didalam LED RGB
int greenPin = 10;      //pin mengontrol nyala LED hijau didalam LED RGB
int bluePin = 11;       //pin mengontrol nyala LED biru didalam LED RGB

int buzzerPin = 8;      //pin yang akan membunyikan buzzer

float distance = 0;           //menyimpan nilai jarak yang diukur oleh sensor


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

  pinMode(trigPin, OUTPUT);   //pin trigger mengeluarkan pulsa listrik
  pinMode(echoPin, INPUT);    //pin echo akan mengukur durasi pulsa balik yang dikeluarkan dari sensor
  
  //set pin LED RGB sebagai output
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);

  pinMode(buzzerPin, OUTPUT);   //set pin buzzer sebagai output

}

void loop() {
  distance = getDistance();   //variabel untuk menyimpan nilai jarak yang diukur oleh sensor

  Serial.print(distance);     //menampilkan jarak yang telah diukur pada serial monitor
  Serial.println(" cm");      //menampilkan unit satuan setelah nilai

  if(distance <= 10){                         //jika objek berada dekat dari sensor
    
    //menyalakan LED RGB menjadi merah
    analogWrite(redPin, 255);
    analogWrite(greenPin, 0);
    analogWrite(bluePin, 0);

    tone(buzzerPin, 272);         //membunyikan buzzer dengan nilai frekuensi 272
    delay(100);                   //jeda 100 milliseconds
    
    noTone(buzzerPin);            //mematikan bunyi buzzer
    delay(100);                   //jeda 100 milliseconds
    
    
  } else if(10 < distance && distance < 20){  //jika objek berada pada jarak yang sedang

    //menyalakan LED RGB menjadi kuning
    analogWrite(redPin, 255);
    analogWrite(greenPin, 50);
    analogWrite(bluePin, 0);
    
  } else{                                     //jika objek berada jauh dari sensor
    
    //menyalakan LED RGB menjadi hijau
    analogWrite(redPin, 0);
    analogWrite(greenPin, 255);
    analogWrite(bluePin, 0);    
  }

  delay(50);      //jeda 50ms antara setiap pembacaan
}

//------------------FUNCTIONS-------------------------------

//Menghasilkan nilai jarak yang terukur oleh sensor jarak HC-SR04
float getDistance() {
  float echoTime;                   //variabel untuk menyimpan waktu yang diperlukan sebuah ping memantul dari sebuah objek
  float calcualtedDistance;         //variabel untuk menyimpan kalkulasi jarak dari echo time
  
  //mengirim pulsa ultrasonic pulse yang lamanya 10ms
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW);

  echoTime = pulseIn(echoPin, HIGH);      //menggunakan perintah pulsein untuk melihat seberapa lama waktu yang dibutuhkan
                                          //pulsa ubtuk memantul kembali ke sensor

  calcualtedDistance = echoTime / 58.26;  //menghitung jarak dari objek yang telah memantulkan pulsa (setengah waktu pantul dikalikan dengan kecepatan suara)
  
  return calcualtedDistance;              //kirim hasil nilai jarak yang telah dihitung
}

Cara menggunakan:

Sebuah LED RGB akan menyala warna hijau ketika jarak benda masih cukup jauh, berubah warna menjadi kuning ketika jarak benda berada sudah mulai mendekat, dan akan berubah menjadi merah ketika jarak sensor dengan benda sudah terlalu dekat dibarengi dengan buzzer berbunyi sebagai perhatian.

15 - LCD HelloWorld

LCD HelloWorld

Menampilkan tulisan 'HelloWorld!' biasa digunakan pertama kali latihan suatu bahasa pemrograman baru. Begitu juga pada latihan sekarang akan mencoba untuk menampilkan tulisan menggunakan sebuah LCD.

Liquid Crystal Display (LCD): dirancang untuk bisa menampilkan tulisan huruf, angka, dan karakter khusus. Selain Serial monitor LCD sangat bagus digunakan untuk menampilkan secara fisik sebuah data atau nilai variabel tertentu. LCD banyak diaplikasikan dalam peralatan elektronik seperti kalkulator, jam, penampil sederhana dan masih banyak lagi. Menambahkan sebuah LCD pada project Arduino kamu dapat membuat terlihat lebih praktis ketika membutuhkan cara untuk menampilkan informasi tulisan sekitar 32 karakter (16x2).

Menggunakan LCD bersama Arduino memerlukan sedikit tambahan komponen tertentu untuk LCD dapat bekerja secara optimal sperti potensiometer digunkan sebagai pembagi tegangan untuk mengatur kontras dari tulisan pada layar LCD, dan sebuah resistor untuk membatasi arus pada lampu layar belakang LCD.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x LCD 1602
— 1 x Potensiometer
— 1 x Resistor 330Ω
— 15 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 - LCD HelloWorld

  LCD akan menampilkan tulisan "Hello World" dan menampilkan waktu seberapa lama (detik) setelah push button reset ditekan.
*/

#include           //librarry liquid crystal kumpulan perintah untuk menampilakan karakter pada layar LCD

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   //memberitahu Arduino pin mana saja yang dihubungkan dengan LCD

void setup() {                     

  lcd.begin(16, 2);                 //memberitahu libarry LCD bahwa kita menggunakan layar LCD berukuran lebar 16 karakter dan tinggi 2 karakter
  lcd.clear();                      //membersihkan layar
}

void loop() {

  lcd.setCursor(0,0);               //set kursor pada posisi 0 (pojok kiri atas)
  lcd.print("Hello, world!");       //menampilkan hello, world! pada posisi awal

  lcd.setCursor(0,1);               //memindahkan pada posisi 1 dibaris kedua
  lcd.print(millis()/1000);         //menampilkan angka detik seberapa lama setelah push button reset ditekan
}

Cara menggunakan:

Layar LCD akan menampilkan tulisan “Hello, world!” dan pada baris bawahnya menampilkan angka penghitung naik setiap detiknya. Atur knob potensiometer untuk merubah kontras dari tulisan pada layar LCD.

18 - Game Simon Says

Game Simon Says

Game "Simon Says" adalah sebuah permainan menggunakan empat buah LED yang akan nyala berkedip bergantian membentuk pola tertentu, dimana pemain harus mengingat pola nyala LED tersebut dan mengulanginya dengan menekan push button mengikuti pola nyala LED. Ini merupakan game elektronik klasik sejak akhir tahun 1970an, dan sekarang kamu bisa membuatnya sendiri.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 4 x LED
— 4 x Push Button
— 1 x Buzzer
— 1 x Resistor 330Ω
— 15 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.
/*
  18 - Game Simon Says

  LED akan berkedip dengan dengan pola dan urutan tertentu, kemudian kita menekan push button 
  dengan cara mengikuti pola dan urutan led tersebut.
*/

//set pin yang digunakan untuk menghubungkan dengan push button, LED dan buzzer
int button[] = {2,4,6,8};     //push button merah adalah button[0], hijau adalah button[1], biru adalah button[2], kuning adalah button[3]
int led[] = {3,5,7,9};        //LED merah adalah led[0], hijau adalah led[1], biru adalah led[2], kuning adalah led[3]
int tones[] = {262, 330, 392, 494};   //nada-nada yang digunakan untuk tiap push button (c, e, g, b)

int roundsToWin = 10;         //jumlah ronde yang harus dimainkan sebelum memenangkan permainan
int buttonSequence[16];       //membuat array yang akan menjadi urutan yang perlu diingat oleh pemain

int buzzerPin = 10;           //pin yang terhubung dengan buzzer

int pressedButton = 4;        //variabel untuk mengingat push button mana yang ditekan. 4 adalah nilai jika tidak ada push button yang ditekan.
int roundCounter = 1;         //melacak apa yang sedang dimainkan pemain


long startTime = 0;           //variabel pengatur waktu untuk batas waktu saat push button ditekan
long timeLimit = 2000;        //batas waktu untuk menekan push button
  
boolean gameStarted = false;      //variabel untuk memberitahu game apakah memainkan atau tidak

void setup(){

  //mengatur semua pin untuk push button sehingga input_pullup (digunakan sehingga tidak perlu memakai eksternal resistor)
  pinMode(button[0], INPUT_PULLUP);
  pinMode(button[1], INPUT_PULLUP);
  pinMode(button[2], INPUT_PULLUP);
  pinMode(button[3], INPUT_PULLUP);
  
  //mengatur semua pin LED sebagai output
  pinMode(led[0], OUTPUT);
  pinMode(led[1], OUTPUT);
  pinMode(led[2], OUTPUT);
  pinMode(led[3], OUTPUT);

  pinMode(buzzerPin, OUTPUT);   //mengatur pin buzzer sebagai output
}

void loop(){

if (gameStarted == false){    //jika game belum dimulai
  startSequence();            //jalankan SQUENCE AWAL
  roundCounter = 0;           //reset penghitung ronde
  delay(1500);                //jeda 1,5 detik
  gameStarted = true;         //atur gameStarted ke kondisi true sehingga urutan ini tidak dimuat kembali
}

//setiap ronde, akan dimualai dengan start kedipan urutan LED dan diulang
for(int i=0; i <= roundCounter; i++){   //go through the array up to the current round number
  flashLED(buttonSequence[i]);          //nyalakan LED untuk posisi array yang sesuai dan mainkan lagu
  delay(200);                           //tunggu
  allLEDoff();                          //matikan semua LED
  delay(200);
}

//kemudian mulai dengan urutan satu persatu dan memeriksa jika pemain menekan push button yang benar
for(int i=0; i <= roundCounter; i++){   //untuk setiap push button yang akan ditekan dalam sequence
  
  startTime = millis();                 //catat waktu awal mulai
  
  while(true){  //terus jalankan loop sampai pemain menekan push button atau batas waktu habis (batas waktu bisa cek didalam statement if)
    
    pressedButton = buttonCheck();      //setiap loop memeriksa push button mana yang ditekan
    
    if (pressedButton < 4){             //jika sebuah push button ditekan... (angka 4 maksudnya adalah tidak ada push button yang ditekan)
      
      flashLED(pressedButton);          //kedip/flash LED untuk push button yang sudah ditekan
      
      if(pressedButton == buttonSequence[i]){   //if the button matches the button in the sequence
          delay(250);                   //biarkan LED menyalauntuk sesaat
          allLEDoff();                  //kemudian matikan semua LED dan
          break;                        //akhiri loop while (ini akan membuat melanjutkan ke nomor selanjutnya didalam loop for)
          
      } else{                           //jika push button yang ditekan tidak sama dengan dengan urutan nyala LED
          loseSequence();               //jalankan SEQUENCE KALAH
          break;                        //setelah selesai menjalankan SEQUENCE KALAH, break dari loop while sehingga game dapat dimulai kembali
      }
    
    } else {                            //jika tidak ada push button yang ditekan
      allLEDoff();                      //tmatikan semua LED
    }

    //memeriksa apakah waktu sudah habis
    if(millis() - startTime > timeLimit){   //jika batas waktu habis
      loseSequence();                       //jalankan SEQUENCE KALAH
      break;                                //setelah selesai menjalankan SEQUENCE KALAH, break dari loop while sehingga game dapat dimulai kembali
    }
  }    
}

  roundCounter = roundCounter + 1;      //tambahkan jumlah ronde dengan 1
  
  if (roundCounter >= roundsToWin){     //jika pemain menyelesaikan ke 16 ronde
    winSequence();                      //mainkan lagu kemenangan
  }
  
  delay(500);                           //tunggu 0.5 detik antara setiap ronde


}

//----------FUNCTIONS------------

//KEDIPKAN LED DAN BUNYIKAN BUZZER
void flashLED (int ledNumber){
  digitalWrite(led[ledNumber], HIGH);
  tone(buzzerPin, tones[ledNumber]);
}

//MATIKAN SEMUA LED
void allLEDoff (){
  //matikan semua LED
  digitalWrite(led[0],LOW);
  digitalWrite(led[1],LOW);
  digitalWrite(led[2],LOW);
  digitalWrite(led[3],LOW);
  //matikan suara buzzer
  noTone(buzzerPin);
}

//PERIKSA push button YANG DITEKAN
int buttonCheck(){
  //periksa jika ada push button yang ditekan
  if(digitalRead(button[0]) == LOW){
    return 0;
  }else if(digitalRead(button[1]) == LOW){
    return 1;
  }else if(digitalRead(button[2]) == LOW){
    return 2;
  }else if(digitalRead(button[3]) == LOW){
    return 3;
  }else{
    return 4; //ini akan menjadi nilai untuk tidak ada push button yang ditekan
  }
}

//SEQUENCE AWAL
void startSequence(){

  randomSeed(analogRead(A0));   //membuat nomor acak benar-benar acak

  //mengisi array buttonSequence dengan angka acak dari 0 hingga 3
  for (int i=0;i<=roundsToWin;i++){
    buttonSequence[i] = round(random(0,4));
  }
 
  //kedip/flash semua LED ketika game dimulai
  for(int i=0; i<=3; i++){
    
    tone(buzzerPin, tones[i], 200); //memainkan salah satu dari 4 nada
    
    //turn all of the leds on
    digitalWrite(led[0],HIGH);
    digitalWrite(led[1],HIGH);
    digitalWrite(led[2],HIGH);
    digitalWrite(led[3],HIGH);
    
    delay(100);         //tunggu sesaat
    
    //turn all of the leds off
    digitalWrite(led[0],LOW);
    digitalWrite(led[1],LOW);
    digitalWrite(led[2],LOW);
    digitalWrite(led[3],LOW);
    
    delay(100);   //tunggu sesaat
  
  } //ini akan diulang sebanyak 4 kali
}

//SEQUENCE MENANG
void winSequence(){

  //nyalakan semua LED
  for(int j=0; j<=3; j++){
    digitalWrite(led[j], HIGH);
  }

  //mainkan lagu 1Up
  tone(buzzerPin, 1318, 150);   //E6
  delay(175);
  tone(buzzerPin, 1567, 150);   //G6
  delay(175);
  tone(buzzerPin, 2637, 150);   //E7
  delay(175);
  tone(buzzerPin, 2093, 150);   //C7
  delay(175);
  tone(buzzerPin, 2349, 150);   //D7
  delay(175);
  tone(buzzerPin, 3135, 500);   //G7
  delay(500);  

  //tunggu sampai sebuah push button ditekan
  do {         
    pressedButton = buttonCheck();
  } while(pressedButton > 3);
  delay(100);

  gameStarted = false;   //reset game sehingga sequence awal dimainkan kembali.
  
}

//SEQUENCE KALAH
void loseSequence(){

  //turn all the LEDs on
  for(int j=0; j<=3; j++){
    digitalWrite(led[j], HIGH);
  }

  //play the 1Up noise
  tone(buzzerPin, 130, 250);   //E6
  delay(275);
  tone(buzzerPin, 73, 250);   //G6
  delay(275);
  tone(buzzerPin, 65, 150);   //E7
  delay(175);
  tone(buzzerPin, 98, 500);   //C7
  delay(500);
  
  //tunggu sampai sebuah push button ditekan
  do {         
    pressedButton = buttonCheck();
  } while(pressedButton > 3);
  delay(200);
  
  gameStarted = false;   //reset game sehingga sequence awal dimainkan kembali.
}

Cara menggunakan:

Sebagai pembukaan ketika Arduino dinyalakan ke empat LED menyala berkedip kemudian memainkan melodi pendek menandakan game akan dimulai. Kemudian setelah beberapa detik LED pertama akan berkedip dan kamu harus mengikutinya dengan menekan push button posisi yang sama, setelah itu LED kesatu dan kedua akan berkedip berurutan dan kamu harus mengikutinya dengan menekan push button posisi yang sama, dan seterusnya begitu akan bertambah nyala LED yang berkedip dengan pola urutan yang berbeda-beda dan kamu harus mengikutinya dengan menekan push button yang sama pula sampai babak berikutnya. Jika kamu membuat kesalahan maka melodi kekalahan akan dimainkan oleh buzzer. Jika kamu dapat menyelesaikan hingga ronde 10, kamu memenangkan permainan dan melodi kemenangan akan dimainkan oleh buzzer. Setelah itu tekan push button sembarang untuk megulang permainan baru.

12 - Sensor Jarak

Sensor Jarak

Sensor jarak dapat mendeksi dimana keberadaan suatu objek, dapat digunakan untuk percobaan mengitung jarak, kecepatan, akselerasi dan dapat digunakan pada robot untuk menghindari suatu penghalang. Pada latihan ini akan membawa kamu mengetahui dasar bagaimana menggunakan sensor jarak ultrasonik untuk mengukur jarak dengan metoda sinyal suara.

Sensor Jarak Ultrasonik: sensor ini bekerja dengan cara mengirimkan sinyal suara dari sebuah pemancar, kemudian menghitung dibutuhkan waktu berapa lama ketika sinyal suara tersebut menabrak sebuah objek dan memantul diterima oleh sebuah penerima.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x HC-SR04 Ultrasonik
— 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.
/*
  12 - Sensor Jarak

  Mengukur jarak benda yang berada didepan sensor ultrasonik HC-SR04 kemudian menampilkannya pada serial monitor
*/

int trigPin = 2;        //hubungkan dengan pin trigger pada sensor jarak      
int echoPin = 3;        //hubungkan dengan pin echo pada sensor jarak     

float distance = 0;           //menyimpat nialai jarak yang diukur oleh sensor

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

  pinMode(trigPin, OUTPUT);   //pin trigger mengeluarkan pulsa listrik
  pinMode(echoPin, INPUT);    //pin echo akan mengukur durasi pulsa balik yang dikeluarkan dari sensor
}

void loop() {
  distance = getDistance();   //variabel untuk menyimpan nilai jarak yang diukur oleh sensor

  Serial.print(distance,1);   //menampilkan jarak yang telah diukur pada serial monitor dengan 1 angka dibelakang koma
  Serial.println(" cm");      //menampilkan unit satuan setelah nilai
  delay(50);                  //jeda 50ms antara setiap pembacaan
}

//------------------FUNCTIONS-------------------------------

//Menghasilkan nilai jarak yang terukur oleh sensor jarak HC-SR04
float getDistance() {
  float echoTime;                   //variabel untuk menyimpan waktu yang diperlukan sebuah ping memantul dari sebuah objek
  float calcualtedDistance;         //variabel untuk menyimpan kalkulasi jarak dari echo time
  
  //mengirim sinyal pulsa ultrasonic yang lamanya 10ms
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW);

  echoTime = pulseIn(echoPin, HIGH);      //menggunakan perintah pulsein untuk melihat seberapa lama waktu yang dibutuhkan
                                          //pulsa ubtuk memantul kembali ke sensor

  calcualtedDistance = echoTime / 58.26;  //menghitung jarak dari objek yang telah memantulkan pulsa (setengah waktu pantul dikalikan dengan kecepatan suara)
  
  return calcualtedDistance;              //kirim hasil nilai jarak yang telah dihitung
}

Cara menggunakan:

Buka serial monitor untuk melihat jarak yang terbaca oleh sensor jarak ultrasonik, kemudian gerakan tanganmu maju mundur didepan sensor dan amati apakah jarak yang terbaca oleh sensor sama dengan jarak sebenarnya.

14 - Pengendali Relay

Pengendali Relay

Pada latihan ini kamu akan membuat sebuah saklar pengendali seperti yang digunakan di industri pabrik untuk menghidupkan sebuah mesin menggunakan dua push button Start/ON dan Stop/OFF untuk mematikannya. Kamu dapat mencoba memperaktekanya untuk mengendalikan sebuah kipas angin, dengan cara menghubungkan kabel colokan kipas angin dengan kontak terminal pada modul relay sebelum dihubungkan ke sumber tegangan listrik.

Relay: pada dasarnya merupakan sebuah saklar mekanik yang dikontrol secara listrik. di dalam relay terdapat lilitan dengan inti besi yang akan berubah menjadi magnet ketika dialiri arus listrik dan menarik tuas saklar sehingga menyebabkan saklar menjadi kontak. Relay mempunyai pin NC (Normally Close), Pin NC kebalikan dari pin NO yaitu akan terhubung antara pin COM dengan NC ketika kondisi relay mati. Pin-pin kontak pada relay dapat digunakan sesuai dengan kebutuhan apakah dalam keadaan aktif nyala atau mati. Kedua pin NO dan NC juga dapat digunakan untuk dua peralatan yang nyalanya bergantian.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x Modul Relay
— 2 x Push Button
— 2 x Resistor 10kΩ
— 10 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.
/*
  14 - Pengendali Relay

  Menyalakan dan mematikan relay dengan menggunakan dua push button START dan STOP.
*/


int startButton = 4;  //pin yang dihubungkan dengan push button start 
int stopButton = 5;   //pin yang dihubungkan dengan push button start
int relayPin = 8;    //pin yang dihubungkan dengan relay
int startButtonStatus = 0;    //variabel untuk menyimpan kondisi push button start
int stopButtonStatus = 0;     //variabel untuk menyimpan kondisi push button stop

void setup() { 
  pinMode(relayPin, OUTPUT);    //atur relayPin sebagai output
  pinMode(startButton, INPUT);  //atur relayPin startButton input
  pinMode(stopButton, INPUT);   //atur relayPin stopButton input

  digitalWrite(relayPin, LOW);  //biarkan kondisi relay mati pada kondisi awal
}

void loop() { 
  startButtonStatus = digitalRead(startButton);  //membaca kondisi pin startButton dan menyimpannya di startButtonStatus
  stopButtonStatus = digitalRead(stopButton);    //membaca kondisi pin stopButton dan menyimpannya di stopButtonStatus

  //memeriksa jika push button START kondisi HIGH, AND(&&) push button STOP kondisi LOW, jika ya nyalakan relay. 
  if (startButtonStatus == HIGH && stopButtonStatus == LOW) { 
    digitalWrite(relayPin, HIGH); 
  }

  //memeriksa jika push button START kondisi LOW, AND(&&) push button STOP kondisi HIGH, jika ya matikan relay.
  if (startButtonStatus == LOW && stopButtonStatus == HIGH) {
    digitalWrite (relayPin, LOW); 
  } 
}

Cara menggunakan:

Kamu seharusnya dapat mendengarkan suara klik ketika kontak relay aktif, dan melihat LED indikator pada modul relay menyala. Jadi ketika pertama kali Arduino dinyalakan kondisi relay mati, ketika kamu menekan push button ON maka relay akan aktif sebaliknya ketika menekan push button OFF maka relay akan mati.

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.