// LCD2004 Tiny Pacman on Wokwi
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
int digital = 1000;
int positionDigital = 1;
int positionCursor = 2;
int tenPosition, hundredPosition, onePosition;
void setup() {
  Serial.begin(9600);
  lcd.begin(20, 4);
  pinMode(6, INPUT); digitalWrite(6, LOW);
  pinMode(5, INPUT); digitalWrite(5, LOW);
  pinMode(4, INPUT); digitalWrite(4, LOW);
  lcd.setCursor(2, 0);
  lcd.print(String(digital));
  lcd.setCursor(positionCursor, 0); 
  lcd.blink();
}
void loop() {
  
  //ПОЗИЦИОНИРОВАНИЕ Кнопка ENTER. Перемещение по разрядам числа.
  if(digitalRead(6)) {
    Serial.println("ENTER");
    lcd.noBlink();
    lcd.setCursor(positionCursor + positionDigital, 0); //Позиция курсора
    lcd.blink();
    positionDigital++; //Позиция редактируемого числа
    //Разрядность числа
    if(positionCursor + positionDigital > 6) {
      positionDigital=1;
      positionCursor=2;
      lcd.setCursor(positionCursor, 0); //Позиция курсора начальная
    }
    
  }
  //Кнопка UP(синяя). Увеличить выбранный разряд
  if(digitalRead(5)) {
    Serial.println("UP");
    if(positionDigital-1 == 0) digital += 1000; //Тысяча
    if(positionDigital-1 == 1) digital += 100;  //Сотня
    if(positionDigital-1 == 2) digital += 10;   //Десяток
    if(positionDigital-1 == 3) digital += 1;    //Единица
    if(digital > 9999) digital = 9999;
    lcd.setCursor(positionCursor, 0); //Позиция курсора начальная
    lcd.print(String(digital));
    lcd.setCursor(positionCursor + positionDigital-1, 0); //Позиция курсора текущая
  }
  //Кнопка DOWN(желтая). Уменьшить выбранный разряд
  if(digitalRead(4)) {
    Serial.println("DOWN");
    if(positionDigital-1 == 0) digital -= 1000; //Тысяча
    if(positionDigital-1 == 1) digital -= 100;  //Сотня
    if(positionDigital-1 == 2) digital -= 10;   //Десяток
    if(positionDigital-1 == 3) digital -= 1;    //Единица
    if(digital < 0) digital = 0;
    lcd.setCursor(positionCursor, 0); //Позиция курсора начальная
    lcd.print(String(digital));
    lcd.setCursor(positionCursor + positionDigital-1, 0); //Позиция курсора текущая
  }
  //Serial.println(positionDigital);
  delay(100);
}