Kamis, 16 Maret 2017

Project Belajar Arduino Part 4 : Membuat Countdown Timer dengan Arduino dan Android

Pada artikel kali ini kita akan mencoba membuat countdown timer dengan Arduino. Apa itu Countdown timer? Menurut Wikipedia Indonesia, Penghitung waktu mundur (countdown timer) adalah sejenis stopwatch yang dapat menunjukan banyaknya sisa waktu yang tersedia sampai batas waktu yang ditentukan. 


Countdown timer banyak sekali manfaatnya untuk kehidupan sehari - hari apabila kita menggunakannya dengan bijak. Contoh kecilnya adalah Timer pada Mesin cuci, Timer pada Oven, Timer pada stop kontak dan lain lain.

Dan pada tutorial kali ini, kita akan mencoba men-setting Timer countdown pada Arduino dengan menggunakan aplikasi Android dan komunikasi Wireless via Bluetooth. Dengan aplikasi ini kita dapat Set Countdown Timer maksimal 24 Jam, dan output dari countdown timer ini dapat ente sesuaikan dengan kebutuhan ente. Bila pada tutorial ini, output dari countdown timernya ane gunakan untuk mengaktifkan led dan buzzer sebagai indikator.


Alat dan Bahan yang dibutuhkan : 
·            1x Arduino UNO (Compatible)
·            1x LCD 16x2
·            1x Potensiometer 10K Ohm
·            1x Bluetooth modul
·            1x Project board (Breadboard)
·            Smartphone Android
·            Aplikasi Android Arduino Countdown Timer, Download di Google Playstore.
·            Kabel jumper secukupnya

1.) Pertama, susunlah rangkaian untuk bluetooth seperti gambar dibawah ini


Keterangan Konfigurasi kabel rangkaian Bluetooth : 
·            Pin 5v Arduino dihubungkan ke VCC pada modul Bluetooth
·            Pin GND pada Arduino dihubungkan ke GND pada modul Bluetooth
·            Pin RXD pada Arduino dihubungkan ke TX pada modul Bluetooth
·            Pin TXD pada Arduino dihubungkan ke RX pada modul Bluetooth.
2.) Setelah sudah dengan modul bluetooth, susunlah rangkaian untuk LCD dibawah ini
Keterangan Konfigurasi kabel rangkaian LCD :
·            Pin RS (Kaki 6) pada LCD dihubungkan ke Pin 12 pada Arduino
·            Pin E (Kaki 7) pada LCD dihubungkan ke Pin 11 pada Arduino
·            Pin D4 (Kaki 9) pada LCD dihubungkan ke Pin 5 pada Arduino
·            Pin D5 (Kaki 10) pada LCD dihubungkan ke Pin 4 pada Arduino
·            Pin D6 (Kaki 11 pada LCD dihubungkan ke Pin 3 pada Arduino
·            Pin D7 (Kaki 12) pada LCD dihubungkan ke Pin 2 pada Arduino
·            Sambungkan potensio 10 K Ohm ke 5V dan GND dan pin LCD 3 ke Potensio
·            Pin 5 (R/W) ke Ground


3.) Setelah itu sambungkan Arduino pada Laptop/PC dengan menggunakan kabel serial.
4.) Download dan Install program Arduino IDE di Arduino.cc ( If Needed )
5.) Setelah terinstall, jalankan program Arduino-nya.
6.) Klik menu "Tools -> Board -> Arduino Pro Mini"
7.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda )
8.) Lalu masukan Sketch dibawah ini, dan terakhir klik upload.

 Sketch:
#include <LiquidCrystal.h>
int jam = 0; //jam (hours)
int menit = 0; //menit (minutes)
int detik = 0; //detik (seconds)
int led = 13;
char hasil;
LiquidCrystal lcd(6, 7, 9, 10, 11, 12);

void setup() {
 lcd.begin(16, 2);
 //Serial.begin(38400);
 Serial.begin(9600);
 pinMode(13, OUTPUT);

    lcd.print("  Aktif Dalam:");
    lcd.setCursor(4, 2);
    (jam < 10) ? lcd.print("0") : NULL;
    lcd.print(jam);
    lcd.print(":");
    (menit < 10) ? lcd.print("0") : NULL;
    lcd.print(menit);
    lcd.print(":");
    (detik < 10) ? lcd.print("0") : NULL;
    lcd.print(detik);
    lcd.display();
}

void loop() {  
  if(Serial.available() >0 ) {
   hasil = Serial.read();
   lcd.clear();
   delay(3);
   lcd.print("  Aktif Dalam:");
   lcd.setCursor(4, 2);
   (jam < 10) ? lcd.print("0") : NULL;
   (jam < 10) ? Serial.print("0") : NULL;
   lcd.print(jam);
   Serial.print(jam);
   lcd.print(":");
   Serial.print(" : ");
   (menit < 10) ? lcd.print("0") : NULL;
   (menit < 10) ? Serial.print("0") : NULL;
   lcd.print(menit);
   Serial.print(menit);
   lcd.print(":");
   Serial.print(" : ");
   (detik < 10) ? lcd.print("0") : NULL;
   (detik < 10) ? Serial.print("0") : NULL;
   lcd.print(detik);
   Serial.print(detik);
   lcd.display();
  }
  if(hasil == '1' ) {
    jam++;
    delay(200);
  } else if( jam > 24) {
    jam = 0;
    lcd.setCursor(4, 2);
   (jam < 10) ? lcd.print("0") : NULL;
   lcd.print(jam);
}
  if (hasil == '2') {
    jam-=1;  
    delay(100);
  } else if ( jam < 0) {
    jam = 24;
    lcd.clear();
   delay(3);
   lcd.print("  Aktif Dalam:");
   lcd.setCursor(4, 2);
   (jam < 10) ? lcd.print("0") : NULL;
   lcd.print(jam);
   lcd.print(":");
   (menit < 10) ? lcd.print("0") : NULL;
   lcd.print(menit);
   lcd.print(":");
   (detik < 10) ? lcd.print("0") : NULL;
   lcd.print(detik);
   lcd.display();
}
if(hasil == '3' ) {
    menit++;
    delay(200);
  } else if( menit > 59) {
    menit = 0;
    lcd.setCursor(4, 2);
   (menit < 10) ? lcd.print("0") : NULL;
   lcd.print(menit);
}
  if (hasil == '4') {
    menit-=1;  
    delay(200);
  } else if ( menit < 0) {
    menit = 59;
    lcd.clear();
   delay(3);
   lcd.print("  Aktif Dalam:");
   lcd.setCursor(4, 2);
   (jam < 10) ? lcd.print("0") : NULL;
   lcd.print(jam);
   lcd.print(":");
   (menit < 10) ? lcd.print("0") : NULL;
   lcd.print(menit);
   lcd.print(":");
   (detik < 10) ? lcd.print("0") : NULL;
   lcd.print(detik);
   lcd.display();
}
if(hasil == '5' ) {
    detik++;
    delay(200);
  } else if( detik > 59) {
    detik = 0;
    lcd.setCursor(4, 2);
   (detik < 10) ? lcd.print("0") : NULL;
   lcd.print(detik);
}
  if (hasil == '6') {
    detik-=1;  
    delay(200);
  } else if ( detik < 0) {
    detik = 59;
    lcd.clear();
   delay(3);
   lcd.print("  Aktif Dalam:");
   lcd.setCursor(4, 2);
   (jam < 10) ? lcd.print("0") : NULL;
   lcd.print(jam);
   lcd.print(":");
   (menit < 10) ? lcd.print("0") : NULL;
   lcd.print(menit);
   lcd.print(":");
   (detik < 10) ? lcd.print("0") : NULL;
   lcd.print(detik);
   lcd.display();
}
if (hasil == '8') {
    jam = 0;
    menit = 0;
    detik = 0;
    lcd.setCursor(4, 2);
    (jam < 10) ? lcd.print("0") : NULL;
    lcd.print(jam);
    lcd.print(":");
    (menit < 10) ? lcd.print("0") : NULL;
    lcd.print(menit);
    lcd.print(":");
    (detik < 10) ? lcd.print("0") : NULL;
    lcd.print(detik);
    lcd.display();
  }
  else if(hasil == '7') {
    lcd.clear();
   delay(3);
   lcd.print("  Aktif Dalam:");
   lcd.setCursor(4, 2);
   (jam < 10) ? lcd.print("0") : NULL;
   (jam < 10) ? Serial.print("0") : NULL;
   lcd.print(jam);
   Serial.print(jam);
   lcd.print(":");
   Serial.print(" : ");
   (menit < 10) ? lcd.print("0") : NULL;
   (menit < 10) ? Serial.print("0") : NULL;
   lcd.print(menit);
   Serial.print(menit);
   lcd.print(":");
   Serial.print(" : ");
   (detik < 10) ? lcd.print("0") : NULL;
   (detik < 10) ? Serial.print("0") : NULL;
   lcd.print(detik);
   Serial.print(detik);
   lcd.display();
   
      hitungMundur();
      delay(1000);
     }
   }

void hitungMundur() {
    if (detik > 0) {
    detik -= 1;
    } else {
    if (menit > 0) {
    detik = 59;
    menit -= 1;
    } else {
    if (jam > 0) {
    detik = 59;
    menit = 59;
    jam -= 1;
    } else {
    aktif();
   }
  }
 }
}

void aktif() {
 lcd.clear();
 lcd.setCursor(5, 1);
 lcd.println("BOOM");
 for (int boom = 0; boom < 4; boom++){
  digitalWrite(13, HIGH);
  delay(50);
  digitalWrite(13, LOW);
  delay(50);
 }
 lcd.display();
}



NOTE :  Sketch diatas masih dapat ente sederhanakan dengan menggunakan Library Time.h

1 komentar:

  1. Aplikasinya ga muncul di playstore mas...mungkin perlu update api level

    BalasHapus