// 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);
}