#include "RTClib.h"
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

RTC_DS1307 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
char timeOfTheDay[3][12] = {"Morning", "Afternoon", "Night"};


void setup () {
  Serial.begin(115200);
  lcd.init();

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    abort();
  }
}

void loop () {
  DateTime now = rtc.now();

  Serial.print("Current Date: ");
  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.day(), DEC);
  Serial.print("\n");
  Serial.print("Current Day: ");
  Serial.print(" (");
  Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
  Serial.print(") ");
   Serial.print("\n");
  Serial.print("Current Time: ");
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();

  if ((now.hour(), DEC) == 6)
  {
    lcd.setCursor(0,0);
    lcd.print("Hello, ");
    lcd.setCursor(0,1);
    lcd.print("Good " + String(timeOfTheDay[0]) + "!");
    delay(1000);
  }
  else if ((now.hour(), DEC) == 12)
  {
    lcd.setCursor(0,0);
    lcd.print("Hello, ");
    lcd.setCursor(0,1);
    lcd.print("Good " + String(timeOfTheDay[1]) + "!");
    delay(1000);
  }
  else
  {
    lcd.setCursor(0,0);
    lcd.print("Hello, ");
    lcd.setCursor(0,1);
    lcd.print("Good " + String(timeOfTheDay[2]) + "!");
    delay(1000);
  }

  
  lcd.clear();

  lcd.setCursor(0,0);
  lcd.print("Current Date: ");
  lcd.setCursor(0,1);
  lcd.print(String(now.year(), DEC) + "/"+ String(now.month(), DEC) + "/" + String(now.day(), DEC));
  delay(2000);
  lcd.clear();

  lcd.setCursor(0,0);
  lcd.print("Current Day: ");
  lcd.setCursor(0,1);
  lcd.print(String(daysOfTheWeek[now.dayOfTheWeek()]));
  delay(2000);
  lcd.clear();
  
  lcd.setCursor(0,0);
  lcd.print("Current Time: ");
  lcd.setCursor(0,1);
  lcd.print(String(now.hour(), DEC) + ":"+ String(now.minute(), DEC) + ":" + String(now.second(), DEC));
  delay(2000);
  lcd.clear();


  Serial.println();
  delay(3000);
}
GND5VSDASCLSQWRTCDS1307+