Неправильно выводится элемент массива 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();
}
}
