/*
Name: Ganesh Pyndla
Description: Timer Break circuit using arduino and without RTC;
Date : 28-01-2024
*/
//Green Button = used for set time/ start setting time
//yellow Button = increment the time
//Blue Button = used for decrement the time
// Red Button = use for set hours and minute and start the timer
#include <LiquidCrystal.h>
// declared buttons for inputs
const int set = 13, hr = 12, mint = 11, start = 10;
// hr1 and mint1 for storing mintus and hours
static int hr1 = 0;
static int mint1 = 0;
// led and Buzz for indicates time duration
const int led = 3;
const int Buzz = 2;
// declared all LCD display pin connections
const int rs = 9, en = 8, d4 = 7, d5 = 6, d6 = 5, d7 = 4;
// pass those pins to Liquid Crystal display function for initaillatation
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// void setup for one time iniataillatation
// declared all input and output pins
void setup() {
// set up the LCD's number of columns and rows:
pinMode(set, INPUT);
pinMode(hr, INPUT);
pinMode(mint, INPUT);
pinMode(start, INPUT);
pinMode(led, OUTPUT);
pinMode(Buzz, OUTPUT);
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.setCursor(2, 0);
lcd.print("SET UR TIME");
lcd.setCursor(6, 1);
lcd.print(" : ");
digitalWrite(Buzz, HIGH);
delay(1000);
digitalWrite(Buzz, LOW);
}
// this is main loop we excute instructions continuesly
void loop()
{
// display the 00:00 formate into the display
lcd.setCursor(5, 1);
lcd.print(0);
lcd.setCursor(6, 1);
lcd.print(0);
lcd.setCursor(8, 1);
lcd.print(0);
lcd.setCursor(9, 1);
lcd.print(0);
// set your start when green button pressed
if ( digitalRead(set) == HIGH)
{
// while loop used to take hours and minutes till press the set button
while (1)
{
// this if condition needs to be set hours and display those hors in lcd as well
if (digitalRead(hr) == HIGH)
{
hr1 = hr1 + 1;
// if hours greater than 12 hours, again start with 0
if ( hr1 > 12)
{
hr1 = 0;
}
// this if condition helps to print hours in lcd in correct foramte like 01 to 09 and 10 to 12
if (hr1 <= 9)
{
lcd.setCursor(5, 1);
lcd.print(0);
lcd.setCursor(6, 1);
lcd.print(hr1);
delay(300);
}
else if ( hr1 >= 10)
{
lcd.setCursor(5, 1);
lcd.print(hr1);
delay(300);
}
}
// if we want reduce or decrement hours use this if condition
else if ( digitalRead(mint) == HIGH && hr1 > 0 )
{
hr1 = hr1 - 1;
if ( hr1 <= 9)
{
lcd.setCursor(5, 1);
lcd.print(0);
lcd.setCursor(6, 1);
lcd.print(hr1);
delay(300);
}
}
// this if condition helps to break hours setting using last greaan button
// jump into mints setting
else if ( digitalRead(start) == HIGH )
{
break;
}
}
// while loop use set minute
while (1)
{
if (digitalRead(hr) == HIGH)
{
mint1 = mint1 + 1;
if ( mint1 > 60)
{
mint1 = 0;
}
if ( mint1 <= 9)
{
lcd.setCursor(8, 1);
lcd.print(0);
lcd.setCursor(9, 1);
lcd.print(mint1);
delay(300);
}
else if (mint1 >= 10)
{
lcd.setCursor(8, 1);
lcd.print(mint1);
delay(300);
}
}
else if ( digitalRead(mint) == HIGH && mint1 >= 0 )
{
mint1 = mint1 - 1;
if ( mint1 <= 9 )
{
lcd.setCursor(8, 1);
lcd.print(0);
lcd.setCursor(9, 1);
lcd.print(mint1);
delay(300);
}
else if ( mint1 >= 10)
{
lcd.setCursor(8, 1);
lcd.print(mint1);
lcd.setCursor(9, 1);
lcd.print(0);
delay(300);
}
}
// if we want break mintes setting press last greaan button
else if ( digitalRead(start) == HIGH && mint1 > 0 )
{
break;
}
}
lcd.setCursor(0, 0);
lcd.print("PLZ Wait Till 00 ");
for (int i = mint1; i > 0; i-- )
{
digitalWrite(led, HIGH);
for ( int j = 1 * 59; j >= 0; j-- )
{
if ( i > 10)
{
lcd.setCursor(8, 1);
lcd.print(i - 1);
}
else
{
lcd.setCursor(8, 1);
lcd.print(0);
lcd.setCursor(9, 1);
lcd.print(i - 1);
}
if ( j > 9 )
{
lcd.setCursor(13, 1);
lcd.print(j);
delay(1000);
}
else if ( j <= 9 )
{
lcd.setCursor(13, 1);
lcd.print(0);
lcd.setCursor(14, 1);
lcd.print(j);
delay(1000);
}
}
}
if ( hr1 > 0)
{
for ( int h = hr1; h > 0; h--)
{
digitalWrite(led, HIGH);
for (int i = 1 * 59; i > 0; i-- )
{
for ( int j = 1 * 59; j >=0 ; j-- )
{
if ( i <= 9 )
{
lcd.setCursor(8, 1);
lcd.print(0);
lcd.setCursor(9, 1);
lcd.print(i);
}
else if (i >= 10 )
{
lcd.setCursor(8, 1);
lcd.print(i);
}
if ( h == 1)
{
lcd.setCursor(6, 1);
lcd.print(0);
}
if ( j > 9 )
{
lcd.setCursor(13, 1);
lcd.print(j);
delay(1000);
}
else if ( j <= 9 )
{
lcd.setCursor(13, 1);
lcd.print(0);
lcd.setCursor(14, 1);
lcd.print(j);
delay(1000);
}
}
}
}
}
}
digitalWrite(led, LOW);
mint1 = 0;
hr1 = 0;
}