Неправильно выводится элемент массива char на LCD дисплей

Делаю часы и для вывода русских символов использую библиотеку LCD_1602_RUS. Хотел немного оптимизировать программу ,чтобы она меньше потребляла динамической памяти и заменил тип массива со String на char. Однако после такой замены на экран начала выводится какая-то околесица вместо дней недели. Примечание: если массив будет типа String то вывод будет нормальным.

Неправильный вывод дня недели

#include <LCD_1602_RUS.h>
#include <EEPROM.h>

LCD_1602_RUS LCD ( 0x27,16,2);
byte sec = (EEPROM.read(0));
byte min = (EEPROM.read(1));
byte hour = (EEPROM.read(2));
byte day = EEPROM.read(3);
long lastime = 0;
byte savetime = 0;

byte day_number = EEPROM.read(4);
byte month =  EEPROM.read(5);
int16_t year = 0;

char days[7][2] = {"ПН","ВТ","СР","ЧТ","ПТ","СБ","ВС"}; 
String months[12] = {"ЯНВ","ФЕВ","МАР","АПР","МАЙ","ИЮН","ИЮЛ","АВГ","СЕН","ОКТ","НОЯ","ДЕК"};

void set_time(){
  byte new_pos = (hour/10 + 1)/2 + 1;
  byte next_pos = (hour/10 + 5)/6 + 1;
  byte new_pos_2_str = (day_number / 10 + 2)/3 + 5;

  if (sec == 0){LCD.clear();}
  LCD.setCursor(0,0);
  LCD.print(int(hour));
  LCD.setCursor(new_pos,0);
  LCD.print(':');
  LCD.setCursor(new_pos + 1,0);
  LCD.print(int(min));
  LCD.setCursor(new_pos + 2 + next_pos,0);
  LCD.print(':');
  LCD.setCursor(new_pos + next_pos + 3,0);
  LCD.print(int(sec));
  LCD.setCursor(0,1);
  LCD.print(days[day]);
  LCD.setCursor(3,1);
  LCD.print(int(day_number));
  LCD.setCursor(new_pos_2_str, 1);
  LCD.print(months[month]);
  LCD.setCursor(new_pos_2_str + 4,1);
  LCD.print(year);
}

void setup(){
  EEPROM.get(6, year);
  LCD.init();

  LCD.backlight();
  LCD.setCursor(0,0);
  LCD.print("Привет Вася");
  delay(1000);
  LCD.clear();

}

void loop(){
  if ((millis() - lastime) > 1000){
    lastime = millis();
    sec++;
    if (sec == 60){sec = 0; savetime++; min++;}
    if (min == 60){min = 0; hour++;}
    if (hour == 24){hour = 0; day++;day_number++;}
    if (day == 7){day = 0;}

    if (day_number == 29 && month == 1 && year%4 != 0){month++; day_number = 1;}
    else if (month == 1 && day_number == 30 ){month++; day_number = 1;}
    else if (day_number == 31 && (month != 0 || month != 2 || month != 4 || month != 6 || month != 7 || month != 9 || month != 11)){month++; day_number = 1;}
    else if (day_number == 32){month++; day_number = 1;}

    if (month == 12){month = 0; year++;}

    if (savetime == 1){
      savetime = 0;
      EEPROM.write(0,sec);
      EEPROM.write(1,min);
      EEPROM.write(2,hour);
      EEPROM.write(3,day);
      EEPROM.write(4,day_number);
      EEPROM.write(5,month);
      EEPROM.put(6,year);
    }
    set_time();
  }
}

Ответы (0 шт):