Anda di halaman 1dari 11

Keypad Countdown Timer

Deskripsi

Keypad Countdown Timer adalah alat yang digunakan sebagai timer seperti, memasak, workout,
atau bisa dipakai sebagai timer pada pertandingan futsal ataupun basket. Cara kerja alat ini
dengan menggunakan keypad membran kita dapat menset berapa detik ataupun menit yang akan
kita set, dimulai dari menset menit setelah itu menset detik contoh kita akan menset timer dengan
waktu 1 menit 30 detik maka, yang harus dilakukan adalah memasukan angka 1 setelah itu 3 dan
0 pada keypad, pada keypad terdapat * dan #, pada alat ini fungsi * untuk menghapus angka
yang salah jika dalam mengeset timer, dan # untuk memulai timer. Alat ini menggunakan sensor
ldr untuk membatalkan perhitungan mundur pada timer. Pada alat ini juga terdapat dua led dan
speaker yaitu merah dan hijau apabila start menghitung mundur maka led merah akan on dan
ketika selesai led hijau akan menyala beserta suara yang muncul dari speaker sebagai
pemberitahuan.

SKETCH
SOURCE CODE

#include <Keypad.h>

const byte ROWS = 4; // 4baris

const byte COLS =3; // 3kolom

char keys[ROWS][COLS] =

{'1','2','3'},

{'4','5','6'},

{'7','8','9'},

{'*','0','#'}

};

byte rowPins[ROWS]= {5, 4, 3, 2}; // pin baris

byte colPins[COLS] = {8, 7, 6}; // pinkolom

Keypad kpd = Keypad(makeKeymap(keys),rowPins, colPins, ROWS, COLS);

long timesett=0;//mengatur waktu

int timesets=0;//waktu yg diatur dalam s

int timesetm=0;//waktu yg diatur dalam m

boolean timerstart=LOW;

boolean timerend=LOW;

const int spkpin = 11;

const int ldrpin = A0;


const int ledpin1 = 9;//merah

const int ledpin2 = 10;//hijau

long duration;

int distance;

boolean hold = LOW;

void setup()

Serial.begin(9600);

digitalWrite(ledpin1,OUTPUT);

digitalWrite(ledpin2,OUTPUT);

void loop()

if(hold == LOW){

Serial.println("Set Timer: ");

hold=HIGH;}

char key1 = kpd.getKey();

switch (key1)

case NO_KEY:

break;

case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':

timesett = timesett*10 + key1 - '0';

if (timesett>3000)

break;

if (timesett>=100)

timesetm=timesett/100;

timesets=timesett%100;

if (timesets>=60)

timesetm=timesetm+timesets/60;

timesets=timesets%60;

else

timesetm=0;

timesets=timesett;

if(timesets>=60)

timesetm=timesets/60;

timesets=timesets%60;

}
}

Serial.print(timesetm);

Serial.print(":");

Serial.println(timesets);

break;

case '#':

(timerstart=HIGH);

break;

case '*':

timesett=timesett/10;

if (timesett>=100)

timesetm=timesett/100;

timesets=timesett%100;

if (timesets>=60)

timesetm=timesetm+timesets/60;

timesets=timesets%60;

else

timesetm=0;
timesets=timesett;

if(timesets>=60)

timesetm=timesets/60;

timesets=timesets%60;

Serial.print(timesetm);

Serial.print(":");

Serial.println(timesets);

break;

if(timerstart==HIGH)

Serial.print("Timer started");

timerend=HIGH;

digitalWrite(ledpin1,HIGH);

digitalWrite(ledpin2, LOW);

if(timesetm!=0)

for(int timem=timesetm; timem>=0; timem--)

Serial.print(timem);

Serial.print(":");

for(int times=timesets; times>=0; times--)


{

Serial.print(times);

Serial.print(" ");

delay(1000);

key1=kpd.getKey();

if(key1=='#')

timerend=LOW;

timerstart=LOW;

break;

int ldrVal = analogRead(ldrpin);

Serial.print(ldrVal);

if (ldrVal <=300)

timerend=LOW;

timerstart=LOW;

break;

delay(1000);

timesets=59;

if(timerend=LOW)

break;
}

else

for(int times=timesets; times>=0; times--)

Serial.print(times);

Serial.print(" ");

delay(1000);

key1=kpd.getKey();

if(key1=='#')

timerend=LOW;

int ldrVal = analogRead(ldrpin);

Serial.println(ldrVal);

if (ldrVal <=300)

timerend=LOW;

timerstart=LOW;

break;

if(timerend=LOW)

{
break;

while(timerend=HIGH)

key1=kpd.getKey();

if(key1=='#')

timerend=LOW;

break;

int ldrVal = analogRead(ldrpin);

Serial.println(ldrVal);

if (ldrVal <=300)

timerend=LOW;

timerstart=LOW;

break;

if(timerend=LOW)

break;

tone(spkpin,300,125);
delay(125);

timesett=0;

timesets=0;

timesetm-0;

hold = LOW;

timerstart=LOW;

digitalWrite(ledpin1,LOW);

digitalWrite(ledpin2,HIGH);

delay(1000);

digitalWrite(ledpin2,LOW);

}
START

Include library Keypad Inisialisasi pin, nilai awal, dan tipe nilai

Mengatur input output, dan inisialisasi


serial monitor

yes
Pembacaan Keypad Number? timesett=timesett*10+key1

no
Menampilkan waktu
yes
‘#’? set pd serial monitor

no timerstart=HIGH
no timerstart=
=HIGH? no yes
‘*’? timesett=timesett/10

Menampilkan waktu
Menampilkan “Timer hitung mundur set pd serial monitor
started” serial
monitor
Menampilkan waktu
hitung mundur

Menampilkan yes no
selesai?
“Time’s up” pd monit

Membaca keypad & sensor

yes Keypad=#? or no
membunyikan speaker
sensor<10cm?_

Anda mungkin juga menyukai