9 Okt 2019

11 - Indikator Suhu

Indikator Suhu

Merupakan latihan lanjutan dari latihan sebelumnya mengunakan sensor DHT11 untuk mengukur suhu dan kelembaban. Pada latihan sebelumnya besarnya suhu yang terukur hanya bisa dilihat melalui serial monitor, kali ini dengan menambahkan tiga buah LED kamu dapat membuat sebuah indikator sebagai visual secara langnsung untuk menunjukan apakah suhu saat ini dingin, sedang atau cukup panas dengan melihat jumlah LED yang menyala.

Kebutuhan Komponen:


— 1 x Arduino UNO
— 1 x Breadboard
— 1 x DHT11
— 3 x LED
— 3 x Resistor 330Ω
— 8 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.
/*
  11 - Indikator Suhu

  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 DHT-11

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

const float baselineTemp = 30.0;  // patokan suhu ruangan dalam Celcius

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

  // set semua pin LED sebagai output
  // fungsi for() memperhemat penulisan program
  for (int pinNumber = 2; pinNumber < 5; pinNumber++) {
    pinMode(pinNumber, OUTPUT);
    digitalWrite(pinNumber, LOW);
  }
}

void loop() {
  // Membaca suhu dalam Celsius (the default)
  float temperature = dht.readTemperature();

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

  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" *C ");
  
  // jika suhu ruangan sekarang lebih rendah dari baseline
  // semua LED mati
  if (temperature < baselineTemp + 2) {
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  } // ijika suhu naik antara 2-4 derajat, satu LED nyala
  else if (temperature >= baselineTemp + 2 && temperature < baselineTemp + 4) {
    digitalWrite(2, HIGH);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
  } // jika suhu naik antara 4-6 derajat, dua LED nyala
  else if (temperature >= baselineTemp + 4 && temperature < baselineTemp + 6) {
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
  } // jika suhu naik lebih dari 6 derajat, semua LED nyala
  else if (temperature >= baselineTemp + 6) {
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
  }
  delay(2000);
}

Cara Menggunakan:

Arduino pertama dinyalakan akan berusa membaca data pada sensor DHT11, pastikan data dapat terbaca dan tidak terjadi kegagalan pembacaan, dengan cara melihatnya melalui serial monitor. Ketika Arduino berhasil membaca data sensor DHT11 akan menyalkan jumlah LED sesuai dengan kondisi suhu diruangan tersebut.

7 Okt 2019

19 - Game Tebak Kata

Game Tebak Kata

Setelah kamu selesai membuat sebuah permain bernama "Simon Says", kali ini kamu akan membuat permainan yang tidak kalah menarik, game ini harus dimainkan oleh dua orang. Untuk memainkannya salah seorang memegang LCD dan papan Arduino dan diletakan di atas kepala sehingga tidak terlihat. Pada layar LCD akan menampilkan angka penghitung mundur yang singkat kemudian menampilkan sebuah kata. Pemain yang lain berada didepan orang pertama tadi yang bisa melihat kata apa yang muncul pada LCD, kemudian berusaha memberikan clue pada orang pertama untuk bisa menebak kata dengan benar. Jika tebakannya benar orang yang pertama bisa menekan push buton yang ada pada papan breadboard dan melanjutkan ke tebakan selanjutnya.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x LCD
— 1 x Potensiometer
— 1 x Buzzer
— 1 x Push Button
— 1 x Resistor 330Ω
— 20 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.
/*
  19 - Game Tebak Kata

  Ini merupakan versi DIY dari sebuah permainan tebak-tebakan. Untuk memainkannya salah seorang memegang LCD dan papan Arduino
  dan diletakan diatas kepala sehingga tidak terlihat. Pada layar LCD akan menampilkan angka penghitung mundur yang singkat
  kemudian menampilkan nama-nama hewan. Pemain yang lain berada didepan orang pertama tadi yang bisa melihat kata apa 
  yang muncul pada LCD, kemudian berusaha memberikan petunjuk pada orang pertama untuk bisa menebak kata dengan benar.
  Jika tebakannya benar orang yang pertama bisa menekan push button yang ada pada papan breadboard dan melanjutkan ke tebakan selanjutnya.
*/


#include             // menyertakan library liquid crystal yang berisi kumpulan perintah untuk menampilkan tulisan pada layar LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);     //memberitahu Arduino pin-pin mana saja yang dihubungkan ke LCD

int buttonPin = 7;                    //pin yang dihubungkan dengan push button
int buzzerPin = 6;                    //pin yang dihubungkan dengan buzzer
int buttonPressTime = 0;              //variabel untuk menyimpan berapa waktu yang tersisa bagi pemain untuk menebak kata
                        
long timeLimit = 15000;               //batas waktu bagi pemain untuk menebak setiap kata
long startTime = 0;                   //digunakan untuk mengukur waktu yang telah berlalu untuk setiap kata
int roundNumber = 0;                  //terus melacak RoundNumber sehingga dapat ditampilkan di akhir permainan
const int arraySize = 25;

const char* words[arraySize] = {"rusa", "kambing", "beruang", "angsa", "anjing", "kucing", "tupai", "burung", "gajah", "kuda",
  "banteng", "jerapah", "sapi", "kelelawar", "sigung", "kura-kura", "paus", "badak", "singa", "monyet",
  "katak", "buaya", "kanguru", "kuda nil", "kelinci"};
 
int sequence[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};     //mulai dengan daftar array full dari 0s

void setup() {

  pinMode(buttonPin, INPUT_PULLUP);       //atur pin push button sebagai input

  lcd.begin(16, 2);                       //memberi tahu ke library LCD untuk ukuran layar yang digunakan

  generateRandomOrder();                  //memanggil fungsi untuk menghasilkan angka array secara acak dari 1-25 yang akan menentukan urutan kata-kata yang ditampilkan
  
  showStartSequence();                    //menampilkan tulisan ketika start sequence

}

void loop() {
  
  for(int i=0; i timeLimit){         //Jika batas waktu habis sebelum menekan push button
          gameOver();                                 //game akan berakhir
        }

        if(digitalRead(buttonPin) == LOW){
            tone(buzzerPin, 272, 1);
        }
        
      }                       //keluar dari loop ini ketika push button ditekan

      delay(500);             //jeda beberapa saat sebelum melanjutkan ke babak selanjutnya, sehingga penekanan push botton tidak terbaca dua kali
      
    }
  //jika kamu selesai menebak ke 25 kata
  winner();   //tampilkan tulisan You Win
}


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

//DISPLAYS A COUNTDOWN TO START THE GAME
void showStartSequence(){
  
  lcd.clear();                  //bersihkan layar LCD
  
  lcd.setCursor(0,0);           //pindah kursor ke pojik kiri atas
  lcd.print("Katagori:");       //tampilkan tulisan "Katagori:"
  
  lcd.setCursor(0,1);           //move the cursor to the bottom left corner
  lcd.print("Hewan");           //tampilkan tulisan "Hewan:"
  
  delay(2000);                  //tunggu 2 detik

  lcd.clear();                  //bersihkan layar LCD
  lcd.print("Siap!");           //tampilkan tulisan "Siap!"
  delay(1000);                  //tunggu 1 detik

  lcd.clear();                  //bersihkan layar LCD
  lcd.print("3");               //tampilkan "3"
  delay(1000);                  //tunggu 1 detik

  lcd.clear();                  //bersihkan layar LCD
  lcd.print("2");               //tampilkan "2"
  delay(1000);                  //tunggu 1 detik

  lcd.clear();                  //bersihkan layar LCD
  lcd.print("1");               //tampilkan "1"
  delay(1000);                  //tunggu 1 detik
}

//GERNATES A RANDOM ORDER FOR THE WORDS TO BE DISPLAYED
void generateRandomOrder(){
  
  randomSeed(analogRead(0));            //reset random seed (Arduino perlu ini untuk menghasil nomor secara acak)
  
  for (int i = 0; i < 24; i++){         //lakukan langkah ini sampai 25 posisi terpenuhi
    
    int currentNumber = 0;              //variabel untuk menyimpan nomor saat ini
    boolean match = false;              //apakah currentNumber cocok dengan nomor sebelumnya?

    //menghasilkan nomor acak sampai kamu menghasilkan nomor yang tidak cocok dengan nomor yang lain di dalam array
    do {                                       
      currentNumber = random(0,arraySize);      //menghasilkan nomor acak dari 1-25
      match = false;                            //kita belum memeriksa kecocokan, jadi mulailah dengan asumsi bahwa itu tidak cocok
      for (int i = 0; i < arraySize; i++){      //untuk semua 25 nomor didalam array
        if (currentNumber == sequence[i]){      //currentNumber cocok dengan nomor mana saja?
          match = true;                         //jika sama, rubah variabel match ke kondisi true
        }
      }
    } while(match == true);                     //jika variabel match berisi true, menghasilkan nomor acak yang lain dan ulangi lagi
    sequence[i] = currentNumber;                //jika variabel match berisi false, kemudian tambahkan pada sequence
  }
}

//GAME OVER
void gameOver(){
  lcd.clear();                    //bersihkan layar LCD
  
  lcd.setCursor(0,0);             //pindah kursor ke pojok kiri atas
  lcd.print("Game Over");         //tampilkan "Game Over"
  
  lcd.setCursor(0,1);             //pindah kursor ke baris bawah
  lcd.print("Score: ");           //tampilkan tilisan "Score:"
  lcd.print(roundNumber);         //tampilkan nilai score (nomor babak adalah sama dengan nilai score)
  
  //mainkan musik untuk kekalahan
  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);

  while(true){}                   //berhenti di loop ini seterusnya
}

//WINNER
void winner(){
  lcd.clear();                    //bersihkan layar LCD
  
  lcd.setCursor(7,0);             //pindah kursor ke tengah atas
  lcd.print("YOU");               //tampilkan "You"
  
  lcd.setCursor(7,1);             //pindah kursor ke tengah bawah
  lcd.print("WIN!");              //tampilkan "WIN!"

  //mainkan musik 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); 

  while(true){}                   //berhenti di loop ini seterusnya
}

Cara menggunakan:

Permainan dimulai dengan tampil tulisan "Katagori: Hewan" dan penghitung mundur untuk bersiap-siap. Ketika babak pertama dimulai kata yang harus ditebak muncul serta penghitung mundur muncul pada layar LCD. Saat push button ditekan sebelum batas waktu habis kata baru akan muncul. Jika kamu menang atau kalah akan memainkan musik pendek.

20 - Kunci Pengaman Ultrasonik

Kunci Pengaman Ultrasonik

Kamu hampir menyelesaikan semua latihan pada modul aplikasi ini, sekarang waktunya mengerjakan latihan terakhir membuat Arduino sebagai kunci pengaman Tidak seperti kunci pengaman pada umumnya yang sering kamu lihat seperti menggunakan sidik jari untuk membuka brankas, atau menggunakan sebuah kartu RFID untuk membuka pintu. Kali ini kamu menggunakan sensor yang cukup murah harganya menggunakan komponen yang ada pada kit ini sensor jarak ultrasonik HC-SR04, prinsip kerjanya adalah sensor mendeteksi kombinasi pengukuran jarak yang dimasukan pengguna dengan menggerak-gerakan tangan didepan sensor kemudian apabila sesuai akan mengaktifkan sebuah relay untuk menyalakan peralatan kunci elektronik sehingga pintu terbuka.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x LCD 1602
— 1 x HC-SR04 Ultrasonik
— 1 x Potensiometer
— 1 x Modul Relay
— 1 x Resistor 330Ω
— 23 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.
/*
  20 - Kunci Pengaman Ultrasonik

  Menggunakan sensor jarak ultrasonik untuk mendeteksi kombinasi pengukuran jarak,
  kemudian dapat mengaktifkan sebuah relay untuk menyalakan peralatan kunci.
  LCD digunakan sebagai antarmuka memasukan kombinasi pengukuran jarak
*/


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

int pin[] = {20, 15, 20, 25};    //ini adalah kombinasi "PIN" (jarak dalam cm) yang digunakan untuk membuka kunci
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   //memberitahu Arduino pin mana saja yang dihubungkan dengan LCD

int trigPin = 6;           //hubungkan dengan pin trigger pada sensor jarak      
int echoPin = 7;           //hubungkan dengan pin echo pada sensor jarak     

void setup() {
  Serial.begin(115200);       //memulai komunikasi serial
  lcd.begin(16, 2);           //memberitahu libarry LCD bahwa kita menggunakan layar LCD berukuran lebar 16 karakter dan tinggi 2 karakter
  lcd.clear();                //membersihkan layar

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

void loop() {
  if (getDistance()<10 10cm="" 1="" accept="0;" ada="" adel="" antara="" apakah="" attempt="" berada="" checkpin="" dapat="" delay="" detik="" dibawah="" digunakan="" et="" hasil="" int="" jeda="" jika="" kombinasi="" lamanya="" lcd.clear="" lcd.print="" lcd.setcursor="" maka="" masukan="" memasukan="" memeriksa="" mencoba="" mengetahui="" menyimpan="" mulai="" nilai="" one="" penghalang="" pengukuran="" pin="" position="" ready...="" ready="" setiap="" t="4;" tiap="" toleransi="" untuk="" user="" void="" ya="">>>>____");
  attempt[0]=getDistance();
  delay(adel);
  lcd.setCursor(0,0);
  lcd.print(" Position Two ");
  lcd.setCursor(0,1);
  lcd.print(">>>>>>>>____");
  attempt[1]=getDistance();
  delay(adel);
  lcd.setCursor(0,0);
  lcd.print("Position Three ");
  lcd.setCursor(0,1);
  lcd.print(">>>>>>>>>>>>__");
  attempt[2]=getDistance();
  delay(adel);
  lcd.setCursor(0,0);
  lcd.print(" Position Four ");
  lcd.setCursor(0,1);
  lcd.print(">>>>>>>>>>>>>>>>");
  attempt[3]=getDistance();
  delay(adel);
  lcd.clear();
  lcd.print("Checking ... "); //menampilkan tulisan sebagai efek visual 
  delay(2000);
  lcd.clear();
 
  //menampilkan kombinasi masukan user pada monitor serial untuk debugging
  for (int z=0; z<4 attempt="" bandingkan="" dalam="" delay="" dengan="" ditetapkan="" if="" integer="" memberikan="" nilai="" sekarang="" serial.println="" sudah="" t="" toleransi="" yang="" z="">=(pin[0]-t) && attempt[0]<=(pin[0]+t)) { accept++; }
  if (attempt[1]>=(pin[0]-t) && attempt[1]<=(pin[0]+t)) { accept++; }
  if (attempt[2]>=(pin[0]-t) && attempt[2]<=(pin[0]+t)) { accept++; }
  if (attempt[3]>=(pin[0]-t) && attempt[3]<=(pin[0]+t)) { accept++; }
  if (accept==4) {
    //kombinasi masukan PIN benar
    lcd.setCursor(0,0);
    lcd.print(" * Accepted * ");
    //here you would enter code to run when the switch was successfully activated
    delay(2000);
  }
  else if (accept!=4) {
    //kombinasi masukan PIN salah
    lcd.setCursor(0,0);
    lcd.print(" * DENIED * ");
    //here you would enter code to run when the switch was unsuccessfully activated
    delay(2000);
  }
}


//Menghasilkan nilai jarak yang terukur oleh sensor jarak HC-SR04
int getDistance() {
  int echoTime;                   //variabel untuk menyimpan waktu yang diperlukan sebuah ping memantul dari sebuah objek
  int 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;  //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:

Ketika pertama kali dinyalakan tampil tulisan "Ready" pada layar LCD, untuk mencoba memasukkan kombinasi jarak, kamu dapat mendekatkan tangan dengan sensor hingga jaraknya kurang dari 10cm sampai tampil tulisan "Get Ready". Kemudian akan muncul "Position One" dan kamu harus menempatkan tangan sesuai jarak/posisi pertama. Setelah itu tulisan akan berubah "Position Two" dan kamu merubah posisi/jarak tangan sesuai dengan posisi yang kedua, dan begitu selanjutnya sampai ke empat. Terakhir akan muncul tulisan "Checking...." untuk memeriksa apakah kombinasi kunci yang kamu masukan benar atau salah, akan tampil tulisan "Denied" jika salah dan "Accepted" kalau benar dan relay akan active untuk membuka kunci.

17 - Meteran Digital

Meteran Digital

Ini merupakan gabugan dari dua latihan sebelumnya menggunkan sensor jarak ultrasonik HC-SR04 untuk mengukur jarak yang kemudian ditampilkan pada layar LCD.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x LCD 1602
— 1 x HC-SR04 Ultrasonik
— 1 x Potensiometer
— 1 x Resistor 330Ω
— 19 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.
/*
  17 - Meteran Digital

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


#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

int trigPin = 6;            //hubungkan dengan pin trigger pada sensor jarak      
int echoPin = 7;            //hubungkan dengan pin echo pada sensor jarak     

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

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

  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

  lcd.setCursor(0,0);             //set kursor pada posisi 0 (pojok kiri atas)
  lcd.print("Distance:");         //menampilkan Distance: pada posisi awal
  lcd.setCursor(0,1);             //memindahkan pada posisi 1 dibaris kedua
  lcd.print(distance,1);          //menampilkan jarak dan satuannya yang telah diukur pada layar LCD
  lcd.print(" cm    ");           //menampilkan unit satuan dalam cm
  delay(100);                      //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:

Kamu akan melihat secara realtime berapa jarak yang terukur oleh sensor jarak ultrasonik ketika ada objek berada didepan sensor tersebut. Coba maju mundurkan tanganmu didepan sensor tersebut untuk memeriksa apakah jarak yang terukur oleh sensor hampir sama dengan jarak yang sebenarnya. Apabila tidak terlihat coba atur knob potensiometer untuk merubah kontras dari tulisan pada layar LCD

16 - Termometer Digital

Termometer Digital

Ini merupakan gabugan dari dua latihan sebelumnya menggunakan sensor DHT11 untuk mengukur suhu dan kelembaban suatu ruangn kemudian ditampilkan pada layar LCD. Dalam pengembangannya kamu bisa menjadikannya sebagai alat pengontrolan dengan menambahkan sebuah modul relay juga menambahkan sedikit kode perintah untuk menghidupkan kipas angin ketika suhu ruangan terasa cukup panas.

Kebutuhan Komponen:

— 1 x Arduino UNO
— 1 x Breadboard
— 1 x DHT11
— 1 x LCD 1602
— 1 x Potensiometer
— 1 x Resistor 330Ω
— 18 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.
/*
  Termometer Digital

  Mengukur suhu dan kelembaban kemudian menampilkannya pada lacar LCD.
*/


#include           //menyertakan librarry liquid crystal kumpulan perintah untuk menampilakan karakter pada layar LCD
#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 DHT 11

DHT dht(DHTPIN, DHTTYPE);  //membuat sebuah objek untuk sensor, serta menentukan pin dan tipe sensor yg digunakan
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   //memberitahu Arduino pin mana saja yang dihubungkan dengan LCD

void setup() {
  dht.begin();    //memulai komunikasi dengan sensor

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

}

void loop() {
  float temperature = dht.readTemperature();  //Membaca data suhu dalam Celsius menggunakan library DHT
  float humidity = dht.readHumidity();        //Membaca data suhu dalam Celsius menggunakan library DHT
  
  //Periksa jika terjadi kegagalan dalam pembacaan dan keluar sesegara mungkin untuk membaca ulang.
  if (isnan(temperature) || isnan(humidity)) {
    lcd.setCursor(0,0);             //set kursor pada posisi 0 (pojok kiri atas)
    lcd.print("Failed to read  ");  //menampilkan tulisan pada layar LCD
    lcd.setCursor(0,1);             //memindahkan pada posisi 0 dibaris kedua
    lcd.print("sensor!         ");  //menampilkan tulisan pada layar LCD

return;
  } else {
    lcd.setCursor(0,0);             //set kursor pada posisi 0 (pojok kiri atas)
    lcd.print("Temp: ");            //menampilkan "Temp:" pada posisi awal
    lcd.setCursor(6,0);             //memindahkan kursor pada posisi 6 dibaris pertama
    lcd.print(temperature,0);       //menampilkan nilai suhu pada layar LCD
    lcd.print((char)223);           //menampilkan simbol derajat
    lcd.print("C       ");          //menampilkan unit satuan dalam Celcius
    lcd.setCursor(0,1);             //memindahkan kursor pada posisi 0 dibaris kedua
    lcd.print("Hum : ");            //menampilkan Distance: pada posisi awal
    lcd.setCursor(6,1);             //memindahkan kursor pada posisi 6 dibaris kedua
    lcd.print(humidity,0);          //menampilkan nilai kelembaban pada layar LCD
    lcd.print("%       ");          //menampilkan unit satuan dalam %
  }
  

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

Cara menggunakan:

Kamu akan melihat secara realtime berapa suhu dan kelembaban pada layar LCD. Apabila tidak terlihat coba atur knob potensiometer untuk merubah kontras dari tulisan pada layar LCD.