//-----www<electronics-project-hub>com------//

/* Gostei desse projeto e acrescentei uma função para
acertar os dígitos quando forem menores que 10.
peço desculpas ao autor do projeto*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int h = 12;
int m = 0;
int s = 0;
int flag = 0;
int TIME = 0;
const int hs = A0;
const int ms = A1;
int state1 = 0;
int state2 = 0;
void setup()
{
  lcd.init();
  lcd.backlight();
  pinMode(hs, INPUT_PULLUP);
  pinMode(ms, INPUT_PULLUP);
}
void loop()
{
  lcd.setCursor(0, 0);
  s = s + 1;
  lcd.print("TIME:" );
  Print(h);
  lcd.print(":");
  Print(m);
  lcd.print(":");
  Print(s);
  if (flag < 12) lcd.print(" AM");
  if (flag == 12) lcd.print(" PM");
  if (flag > 12) lcd.print(" PM");
  if (flag == 24) flag = 0;
  delay(1000);
 
  if (s == 60)
  {
    s = 0;
    m = m + 1;
  }
  if (m == 60)
  {
    m = 0;
    h = h + 1;
    flag = flag + 1;
  }
  if (h == 13)
  {
    h = 1;
  }
  lcd.setCursor(0, 1);
  if (h <= 12 && flag < 12)
  {
    lcd.print("GOOD MORNING  ;)");
  }
  if (h == 12 || h == 1 || h == 2 || h == 3 && flag >= 12)
  {
    lcd.print("GOOD AFTERNOON:)");
  }
  if (h == 4 || h == 5 || h == 6 || h == 7 || h == 8 && flag > 12)
  {
    lcd.print("GOOD EVENING  :)");
  }
  if (h >= 9 && flag > 12)
  {
    lcd.print("GOOD NIGHT  :)");
  }
  state1 = digitalRead(hs);
  if (state1 == 0)
  {
    h = h + 1;
    flag = flag + 1;
    if (flag < 12) lcd.print(" AM");
    if (flag == 12) lcd.print(" PM");
    if (flag > 12) lcd.print(" PM");
    if (flag == 24) flag = 0;
    if (h == 13) h = 1;
  }
  state2 = digitalRead(ms);
  if (state2 == 0)
  {
    s = 0;
    m = m + 1;
  }
}

void Print(int numero)
{
  lcd.print(numero /10);
  lcd.print(numero % 10);
}