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.
#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
Aplikasinya ga muncul di playstore mas...mungkin perlu update api level
BalasHapus