#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 rtc;
//////////Current Time
int h=0;
int m=0;
int s=0;
//////////Start time
int h1=0;
int m1=0;
int s1=0;
/////////Stop time
int h2=0;
int m2=0;
int s2=0;
void setup() {
rtc.begin();
Serial.begin(115200);
pinMode(4, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
lcd.init();
lcd.backlight();
}
int st = 0 ;
void loop() {
time();
/* lcd.setCursor(0,0);
lcd.print(String(h)+" :"+String(m)+" :"+String(s)+" ");
*/
}//end loop
void start(){
////////////////////////////////increase HR
if (st==1){
int sw2 =digitalRead(3);
delay(100);
if(sw2==0){
h1++;
if (h1>=24){
h1=0;
}
}
//////////////////////////////// decrease HR
int sw3 =digitalRead(5);
delay(100);
if(sw3==0){
h1--;
if (h1<0){
h1=23;
}
}
//////////////////////////////// increase Min
lcd.setCursor(6,0);
lcd.print(" ");
delay(200);
}
if (st==2){
int sw2 =digitalRead(3);
delay(100);
if(sw2==0){
m1++;
if (m1>=60){
m1=0;
}
}
///////////////////////////// decrease Min
int sw3 =digitalRead(5);
delay(100);
if(sw3==0){
m1--;
if (m1<0){
m1=59;
}
}
lcd.setCursor(9,0);
lcd.print(" ");
delay(200);
}
///////////////// START
lcd.setCursor(0,0);
if (st==1) {
lcd.print("Start");
}
///////////////////HR
lcd.setCursor(6,0);
if (h1 <= 9 ){
lcd.print("0");
}
lcd.print(h1);
lcd.setCursor(8,0);
lcd.print(":");
//////////////Min
lcd.setCursor(9,0);
if (m1 <= 9 ){
lcd.print("0");
}
lcd.print(m1);
lcd.setCursor(11,0);
lcd.print(":");
///////////////Sec
lcd.setCursor(12,0);
if (m1<= 9 ){
lcd.print("0");
}
lcd.print(s);
}
void stop() {
////////////////////////////////increase HR
if (st==4){
int sw2 =digitalRead(3);
delay(100);
if(sw2==0){
h2++;
if (h2>=24){
h2=0;
}
}
//////////////////////////////// decrease HR
int sw3 =digitalRead(5);
delay(100);
if(sw3==0){
h2--;
if (h2<0){
h2=23;
}
}
//////////////////////////////// increase Min
lcd.setCursor(6,1);
lcd.print(" ");
delay(200);
}
if (st==5){
int sw2 =digitalRead(3);
delay(100);
if(sw2==0){
m2++;
if (m2>=60){
m2=0;
}
}
///////////////////////////// decrease Min
int sw3 =digitalRead(5);
delay(100);
if(sw3==0){
m2--;
if (m2<0){
m2=59;
}
}
lcd.setCursor(9,1);
lcd.print(" ");
delay(200);
}
if (st>=6){
st=0;
}
///////////////// STOP
lcd.setCursor(0,1);
if (st==1) {
lcd.print("Stop");
}
///////////////////HR
lcd.setCursor(6,1);
if (h2 <= 9 ){
lcd.print("0");
}
lcd.print(h2);
lcd.setCursor(8,1);
lcd.print(":");
//////////////Min
lcd.setCursor(9,1);
if (m2 <= 9 ){
lcd.print("0");
}
lcd.print(m2);
lcd.setCursor(11,1);
lcd.print(":");
///////////////Sec
lcd.setCursor(12,1);
if (m2 <= 9 ){
lcd.print("0");
}
lcd.print(s);
}
void time() {
DateTime now = rtc.now();
int sw1=digitalRead(4);
delay(100);
if(sw1==0){
st++;
if (st>=7) {
st=0;
}
}
h = now.hour();
m = now.minute();
s = now.second();
///////////////////HR
lcd.setCursor(0,0);
lcd.print("Time");
lcd.setCursor(6,0);
if (h <= 9 ){
lcd.print("0");
}
lcd.print(h);
lcd.setCursor(8,0);
lcd.print(":");
//////////////Min
lcd.setCursor(9,0);
if (m <= 9 ){
lcd.print("0");
}
lcd.print(m);
lcd.setCursor(11,0);
lcd.print(":");
///////////////Sec
lcd.setCursor(12,0);
if (s <= 9 ){
lcd.print("0");
}
lcd.print(s);
}