#include <LiquidCrystal_I2C.h>
#include <EncButton.h>


LiquidCrystal_I2C lcd(0x27, 16, 2);
EncButton<EB_TICK, 3> btn(INPUT_PULLUP);


byte myX[] = {0x00, 0x00, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x00};
byte bell[] = {0x04, 0x0E, 0x0E, 0x0E, 0x1F, 0x00, 0x04, 0x00};


byte myV[] = {
               B10001,
               B10001,
               B10001,
               B10001, 
               B01010,
               B01010,
               B01010,
               B00100
             };
byte myA[] = {
               B00100,
               B00100,
               B01010,
               B01010,
               B10001,
               B11111,
               B10001,
               B10001
             };
byte myD[] = {
               B11100,
               B10010,
               B10001,
               B10001,
               B10001,
               B10001,
               B10010,
               B11100
             };
byte myI[] = {
               B01110,
               B00100,
               B00100,
               B00100,
               B00100,
               B00100,
               B00100,
               B01110
             };
byte myM[] = {
               B10001,
               B11011,
               B10101,
               B10101,
               B10001,
               B10001,
               B10001,
               B10001
             };


void setup()
{
  lcd.init();
  lcd.backlight();
  lcd.setCursor(1, 0);
  lcd.print("Hello, world !");
  lcd.setCursor(4, 1);
  lcd.print("Yahoo !");

  delay(1000);

  lcd.clear();
  lcd.write(126);
  lcd.print("Temp: ");
  lcd.print(25.6);
  lcd.print(223);

  delay(1000);
  lcd.clear();

  lcd.createChar(0, myX);
  lcd.home();
  lcd.write(0);

  delay(1000);
  lcd.clear();

  lcd.createChar(0, bell);
  lcd.home();
  lcd.write(0);
  
  delay(1000);
  lcd.clear();

  lcd.setCursor(2, 0);
  lcd.print("Press button");
  lcd.setCursor(4, 1);
  lcd.print("20 times");
  lcd.home();

  delay(1000);
}

void loop() {
  btn.tick();
  if (btn.isClick())
  {
    static int count = 0;
    count++;

    if (count <= 20)
    {
      lcd.home();
      lcd.clear();
      lcd.print("Counter: ");
      lcd.print(count);
    }
    else
    if (count <= 21)
    {
      lcd.home();
      lcd.clear();
      lcd.setCursor(5, 0);
      lcd.print("Vadim");

      lcd.createChar(0, myV);
      lcd.createChar(1, myA);
      lcd.createChar(2, myD);
      lcd.createChar(3, myI);
      lcd.createChar(4, myM);

      lcd.setCursor(5, 1);
      lcd.write(0);
      lcd.write(1);
      lcd.write(2);
      lcd.write(3);
      lcd.write(4);

      count = 0;
    }
  }
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
Кнопка
r1:1
r1:2