Membuat Countdown Timer dengan Arduino dan Android

Ditulis oleh agan

بِسْــــــــــــــــمِ اﷲِالرَّحْمَنِ اارَّحِيم

Halo bro, selamat datang saya ucapkan kembali pada semua pengunjung di blog BoArduino ini. Tidak terasa libur telah berakhir, kita mulai kembali rutinitas tak terbatas kita dengan semangat.

Pada artikel kali ini kita akan mencoba membuat countdown timer dengan Arduino. Apa itu Countdown timer gan? Menurut Wikipedia Indonesia, Penghitung waktu mundur (countdown timer) adalah sejenis stopwatch yang dapat menunjukan banyaknya sisa waktu yang tersedia sampai batas waktu yang ditentukan. 
Okelah kalau begitu mari langsung kita simak saja ya gan Artikel kali ini :)

Yah seperti yang tertera pada judulnya, 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. Jangan disalah gunakan ya :)


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

Langkah - Langkahnya :

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 dengab modul bluetooth, susunlah rangkaian untuk LCD dibawah ini


Keterangan Konfigurasi kabel rangkaian LCD :
  • Pin RS (Kaki 4) pada LCD dihubungkan ke Pin 12 pada Arduino
  • Pin E (Kaki 6) pada LCD dihubungkan ke Pin 11 pada Arduino
  • Pin D4 (Kaki 11) pada LCD dihubungkan ke Pin 5 pada Arduino
  • Pin D5 (Kaki 12) pada LCD dihubungkan ke Pin 4 pada Arduino
  • Pin D6 (Kaki 13 pada LCD dihubungkan ke Pin 3 pada Arduino
  • Pin D7 (Kaki 14) 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 Uno"
7.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda )
8.) Lalu masukan Sketch dibawah ini, dan terakhir klik upload.

Klik LIHAT DONG untuk melihat 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(12, 11, 5, 4, 3, 2);

void setup() {
 lcd.begin(16, 2);
 Serial.begin(38400);
 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


Terimakasih telah berkunjung, selamat mencoba, semoga bermanfaat.

Blog, Updated pada: 13:28:00

24 comments:

  1. Mantap gan,artikelnya byk yg aplikatif dan bermanfaat. Ditunggu artikelnya yg berkaitan dgn nfc + arduino..

    ReplyDelete
    Replies
    1. Terimakasih sudah berkunjung dan berkomentar.

      Delete
  2. Trimakasih gan...akhirnya coundown timer keluar juga tutorialnya...Gan umpama mau nambahin tombol repeat perintah gmana caranya?

    ReplyDelete
    Replies
    1. Mau pakai button virtual atau button hardware? tinggal di sesuaikan saja... Kalau pakai aplikasi android, bisa tambahkan chekbox repeat untuk mejalankan fungsi repeat bila di ceklis.

      Kalau mau pakai button hardware (tacticle switch) bisa di buat buttonState di sketch untuk state repeat atau tidak. Sesuaikan saja sketchnya.

      Delete
  3. Maksudnya itu kan cm start & reset...umpama mau nambahin "mengulang"...gmana ya sketch nya...hehe....buat masukan aja...biar lebih sip gan...hehe...makasih

    ReplyDelete
    Replies
    1. Kalau pakai chekbox bisa dengan jika chekbox repeat di ceklis, maka panggil sub rutin hitungMundur()

      Kalau pakai button bisa dengan stateButton, misal jika stateButtonTerakhir = repeat maka panggil sub rutin hitungMundur()

      Sketch? kan sudah saya bilang coba dibuat sendiri sesuai kebutuhan :)

      Delete
  4. Maju Terus Boarduino Kembang kan lg Kreatifitas nya bang..

    ReplyDelete
    Replies
    1. Terimakasih telah berkunjung dan berkomentar yang membangun :)

      Delete
  5. Knp gag bsa ya mas? Waktu diupload muncul
    "avrdude : stk500_getsyn(): not in sync:resp=0x00

    ReplyDelete
    Replies
    1. Saat upload, pastikan modul bluetooth dalam keadaan tidak ready. Cabut terlebih dahulu power yang terhubung di modul bluetooth.

      Delete
    2. Siap mas, berhasil. gmana ya mas kalo pas sdh hbs wktunya, bsa mengidupkan relay ? Apa yg perlu di rubah dr sketchnya
      Terimakasih

      Delete
    3. Tinggal diubah saja pada bagian Function Aktif

      void aktif() {
      //Nyalain Relay
      }

      Delete
  6. kalo bluetooth nya diganti pake keypad 4X4 trus sketch nya gimana?

    ReplyDelete
    Replies
    1. Tinggal dibuat saja sketchnya, coba lihat contoh sketch keypad dan silahkan dibuat sesuai dengan keinginan.

      Delete
  7. MS.jika dengan push button bagaimana ya codenya.makasih.

    ReplyDelete
    Replies
    1. Salam kenal. Sebelumnya sudah pernah mencoba arduino dan button? Kalau sudah pernah, tinggal dibuat saja sesuai keinginan.

      Delete
  8. saya udah mngikitin tutor di atas tapai pas download softwre countdown nya trus mau rubah waktunya..tapi gak berubah trus saya coba buat coding print serial monitor hasil inputan dari androidnay ..terhnya hasail print serialnya 00:00:00 mogon solusinya gan

    ReplyDelete
    Replies
    1. Salam kenal. Coba sesuaikan baudrate di sketch sesuai dengan baudrate modul bluetooth ente.

      Delete
  9. untuk tampil di P10 Dot matrix seperti apa programnya pak ?terimakasih

    ReplyDelete
    Replies
    1. Coba dilihat saja yang contoh menampilkan suhu pada panel p10, nanti di modifikasi saja.

      Delete
  10. bang kalau pakai software serial bisa gak?

    ReplyDelete
  11. Mas Kalau timer dan counter ini digabung dengan menghidupkan lampu dengan android pada tutorial sebelumnya bisa gak mas..?

    ReplyDelete

Masih Bingung atau Hal Lainnya? Silahkan Bertanya di Kolom Komentar :)

~ Dilarang SARA
~ Dilarang PORNOGRAPHY
~ Dilarang SPAM
~ Dilarang MENINGGALKAN LINK AKTIF
~ Maaf untuk Anonymous, tidak bisa Berkomentar.

Apabila Komentar anda belum muncul, Tunggu sampai di Moderasi.
Terimakasih atas Perhatiannya.


English French German Spain Italian Dutch Russian