#include <LiquidCrystal_I2C.h>



LiquidCrystal_I2C lcd(0x27, 16, 2);




void setup() {
  Serial.begin(115200);
  pinMode(8, INPUT_PULLUP); // Input Pullup ไม่ต้องต่อ R (Resistor)
  pinMode(9, INPUT_PULLUP);
  pinMode(10, INPUT_PULLUP);
  lcd.init();
  lcd.backlight();

} //// end void setup

int h = 0;
int m = 0;
int s = 0;
int st = 0;


void loop() {

  int sw1 = digitalRead(8);   ////////// SET
  delay(100);
  if (sw1 == 0) {
    st++;
    if (st >= 4) { ////////// SET กดเกิน 3 ครั้ง ให้วนกลับเป็น 0
      st = 0;
    }
  }

  ////////////////////////////////////////

  if (st == 1) {    ////////// ตั้ง ชั่วโมง (SET กดครั้งที่ 1)
    int sw2 = digitalRead(9);   ////////// UP
    delay(100);
    if (sw2 == 0) {
      h++;
      if (h >= 24) {
        h = 0;
      }
    }
  }

  ////////////////////////////////////////

  if (st == 2) {    ////////// ตั้ง นาที (SET กดครั้งที่ 2)
    int sw2 = digitalRead(9);   ////////// UP
    delay(100);
    if (sw2 == 0) {
      m++;
      if (m >= 60) {
        m = 0;
      }
    }
  }

  ////////////////////////////////////////

  if (st == 3) {    ////////// ตั้ง วินาที (SET กดครั้งที่ 3)
    int sw2 = digitalRead(9);   ////////// UP
    delay(100);
    if (sw2 == 0) {
      s++;
      if (s >= 60) {
        s = 0;
      }
    }
  }


  // SET=st / Hour=h / Minute=m / Second=s
  Serial.print("st=");
  Serial.print(st);
  Serial.print(" / h=");
  Serial.print(h);
  Serial.print(" / m=");
  Serial.print(m);
  Serial.print(" / s=");
  Serial.print(s);
  Serial.println("");



  lcd.setCursor(0, 0);
  lcd.print("Set Time");
  ////////// ////////// Hour
  lcd.setCursor(0, 1);
  lcd.print(h);
  lcd.setCursor(2, 1);
  lcd.print(":");
  ////////// ////////// Minute
  lcd.setCursor(3, 1);
  lcd.print(m);
  lcd.setCursor(5, 1);
  lcd.print(":");
  ////////// ////////// Second
  lcd.setCursor(6, 1);
  lcd.print(s);


} //// end void loop