Cara Membuat Countdown Timer Keypad Arduino

Selamat siang, salam sejahtera untuk kita semua pada kesempatan kali ini saya akan memberikan sebuah tutorial tentang membuat countdown timer dengan keypad pada Arduino. Sebelumnya saya juga pernah ya membahas timer yaitu pada postingan saya yang berjudul Membuat Timer Digital dengan Arduino Uno, dimana pada pembahasan tersebut masih menggunakan push button switch untuk mengaturnya dan hanya menampilkan menit dan detiknya saja. Nah berbeda dengan pembahasan kali ini akan menggunakan sebuah keypad 4x4 dan tambahan 1 push button saja. Untuk tampilannya juga terdapat tiga variabel yaitu jam, menit dan detik. Karena dapat mengatur sampai hitungan jam tentuya pada penggunaanya dapat mengatur waktu lebih lama.

Bagi teman-teman yang baru mengenal keypad, silahkan teman-teman membaca postingan saya Mengenal Dasar Penggunaan Keypad Arduino. Oke langsung saja lanjut ke pembahasannnya, yaitu pada project kali ini terdapat komponen-komponen yang diperlukan sebagai berikut :

Software :
  1. Arduino IDE
  2. Library keypad, silahkan download
  3. Libray LCD I2c, silahkan download
Hardware :
  1. Arduino Uno/Nano/jenis lain
  2. Kabel USB downloader
  3. Keypad 4x4
  4. LCD I2C
  5. Push Button Switch
  6. Buzzer
  7. Kabel Jumper
  8. Project Board
Rangkaian :
Arduino timer keypad
Langkah-langkah :
  1. Rangkailah seperti gambar rangkaian di atas
  2. Hubungkan Arduino dan PC/laptop menggunakan kabel USB downloader
  3. Buka Arduino IDE, dan seperti biasanya langkah awal persiapan sebelum mengupload sketch adalah mengecek Boar dan Port pada menu Tools sesuai dengan yang digunakan. Pastikan Port terceklis ya teman-teman.
  4. Masukkan library keypad dan LCD I2C yang sudah didownload sebelumnya.
  5. Masukkan sketch program berikut ini 
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);//atau OX3F
const byte ROWS = 4;
const byte COLS = 4;
long int set1, set2, set3, set4, j;
String hours, minutes, seconds;

char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 9, 8, 7, 6 };
byte colPins[COLS] = { 5, 4, 3, 2 };

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int t1, t2, t3, t4, t5, t6;
int r1, r2, r3;

boolean feed = true;
char key;
String r[8];

const int buttonPin = 10;
const int buzzerPin = 11;
void setup() {
lcd.begin();
Serial.begin(9600);
pinMode(buttonPin, INPUT_PULLUP);//button
pinMode(buzzerPin, OUTPUT);//buzz
}

void loop() {
lcd.setCursor(0, 0);
lcd.print("SYMASK TIMER");

if (digitalRead(buttonPin) == LOW) {
lcd.clear();
setFeedingTime();
for (int i = 0; i < 6; i++) {
Serial.print(r[i]);
Serial.println();
}

hours = String (r[0]) + String (r[1]) ;
minutes = String (r[2]) + String (r[3]) ;
seconds = String (r[4]) + String (r[5]) ;

set1 = (hours.toInt() * 3600);
set2 = (minutes.toInt() * 60);
set3 = seconds.toInt();
set4 = (hours.toInt() * 3600) + (minutes.toInt() * 60) + seconds.toInt();
Serial.print("set4");
Serial.print(set4);
Serial.println();

lcd.setCursor(0, 0);
lcd.print("Countdown Mulai");
delay(1000);
lcd.clear();

for (long int j = set4; j >= 0; j--) {
Serial.println(j);

lcd.setCursor(0, 0);
lcd.print("HH:MM:SS");

long int HH = j / 3600;
lcd.setCursor(0, 1);
Serial.println(HH);
if (HH < 10) {
lcd.print("0");
}
lcd.print(HH);
lcd.print(":");

long int MM = (j - (HH * 3600)) / 60 ;
lcd.setCursor(3, 1);
Serial.println(MM);
if (MM < 10) {
lcd.print("0");
}
lcd.print(MM);
lcd.print(":");

long int SS = j - ((HH * 3600) + (MM * 60));
lcd.setCursor(6, 1);
Serial.println(SS);
if (SS < 10) {
lcd.print("0");
}
lcd.print(SS);
delay(1000);

if (digitalRead(buttonPin) == LOW) {
break;
}

if (j == 0) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Timer Stop");
lcd.setCursor(2, 1);
lcd.print("-Selesai-");

for (int k = 0; k <= 100; k++) {
digitalWrite(buzzerPin, HIGH);
delay(300);
digitalWrite(buzzerPin, LOW);
delay(300);
if (digitalRead(buttonPin) == LOW) {
break;
}
}
}
}
}
}

void setFeedingTime() {
feed = true;
int i = 0;

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SET TIMER");
lcd.clear();
lcd.print("HH:MM:SS");
lcd.setCursor(0, 1);


while (1) {
key = kpd.getKey();

char j;

if (key != NO_KEY) {

lcd.setCursor(j, 1);

lcd.print(key);

r[i] = key - 48;
i++;
j++;

if (j == 2 || j == 5)
{
lcd.print(":"); j++;
}
delay(500);
}

if (key == 'D')
{
key = 0;
break;
}
}
lcd.clear();
}

Silahkan coba untuk menyeting timernya.
Baca juga : Mudah, Membuat Animasi LED Matrix P10 Arduino

Demikian pembahasan project kali ini semoga bermanfaat untuk teman-teman semua. Jangan sungkan-sungkan bertanya jika mengalami kendala dalam project ini, silahkan tinggalkan komentar di bawah ini. Ataupun jika berhasil saya ikut senang hee... Terima kasih sudah berkunjung. Nantikan project-project lainnya. Salam.

0 Response to "Cara Membuat Countdown Timer Keypad Arduino"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel

Iklan Bawah Artikel