С ентой!
Ну не знаю, запутался. Я вчера пробовал вот этот пример
#include "LCD_1602_RUS.h"
LCD_1602_RUS lcd(0x27, 20, 4);
void setup()
{
String str;
str = "по-русски";
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(2, 0);
lcd.print("Теперь можно");
lcd.setCursor(3, 1);
lcd.print(str);
}
void loop()
{
}
Его в отдельный файл, туда же два файла библиотеки. И компилятор заругался на отсутствие файлов с i2c. Хотя они мне и не нужны при параллельном включении.
Это другая библиотека. В той(Из ХЗ какой номер), что я дал, всё компилируется и работает.
Я сделал, чтоб компилировалась, но один хрен при || включении не работает.
Разве? Ладно, попробую по ссылке Вашей пройти.
Инициализация отличается для IIC и параллельного, да и команды ![]()
Да, теперь то я рассмотрел. Спасибо, заработало.
Попробовал на дисплее без русских символов, сбивается точность при большом числе букв ![]()
#include "LCD_1602_RUS.h"
LCD_1602_RUS lcd(0x27, 20, 4);
void setup()
{
String str;
str = "АБраДУравеселуха";
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(2, 0);
lcd.print("Теперь можно");
lcd.setCursor(0, 1);
lcd.print(str);
}
void loop()
{
}
Ну, дык, неповторимых то не так много, но, всё же больше восьми ![]()
А чё? Нормальная такая “дура веселуха”!
А я видел 2004 с огромными размерами символов (относительно). Но, Лилик, с неумением использовать разные интерфейсы, меня слегка пугает.(
Я тоже в интернете видел, но есть ли в них грация?
Да, вот придёт модуль-спутник, вставлю его в разъём дисплея, а библиотеки то и нет под русифицированный вариант с i2c.
Ну и как же мы дальше будем жить, без библиотеки то!
Да, уж! Это примерно как без медведей! (у наших американских непартнёров есть забавная лингвистическая шутка: «Life without bears would be unbearable»)
Да чёрт его знает. Видимо придётся писать функцию которая будет из строки “АБВГДЕЙКА“ вытягивать по 2 байта на букву, из второго делать сопоставление номеру символа в таблице символов дисплея с учётом, что часть символов берётся из англицких, а другая часть разбросана от балды. Потом, но лучше не надо, аналогично выдумывать при передачи строки из монитор - порта.
А потом добавить её в существующую библиотеку, сказать “рекс-пэкс-фэкс” и … voilà … у нас есть правильная библиотека!
Быстро магаданские чиновники среагировали ![]()
В паузе на обед готовлюсь скрестить функцию одного товарища с массивом из библиотеки другого ![]()
///////////////////////
/* Функция перекодировки русских букв из UTF-8 в Win-1251 */
String utf8rus(String source)
{
int i,k;
String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); i = 0;
while (i < k) {
n = source[i]; i++;
if (n >= 0xC0) {//192
switch (n) {
case 0xD0: {//208
n = source[i]; i++;
if (n == 0x81) { n = 0xA8; break; }//129 Ё
if (n >= 0x90 && n <= 0xBF) n = n + 0x30;//144-191
break;
}
case 0xD1: {//209
n = source[i]; i++;
if (n == 0x91) { n = 0xB8; break; }//145 ё
if (n >= 0x80 && n <= 0x8F) n = n + 0x70;//128-143
break;
}
}
}
m[0] = n; target = target + String(m);
}
return target;
}
///////////////////////
const char utf_recode[] PROGMEM=
{ 0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0,0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7, //р....я
0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4,0xa5,0xa6,0x4b,0xa7,0x4d,0x48,0x4f, //АБВГДЕЖЗИЙКЛМНО
0xa8,0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab,0xac,0xe2,0xad,0xae,0x62,0xaf,0xb0,0xb1,//П....Я
0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,0xbe //а......п
};
///////////////////////
…пока допрёшь какие числа буквам-числам соответствуют, авторы же не пишут…
…А вот была бы такая таблица и не надо было бы ни библиотек, ни функций добавочных.
…теперь я понимаю покупателей дисплеев у китайцев их законный вопрос - а где вторая страница символов???
Кстати можно посмотреть ху из ху ![]()
подсказываю…нужно использовать ещё
lcd.setCursor(i, j);
lcd.write(k);
хотя большинству это неинтересно.
а выводи последовательно в монитор LCD с 0 позиции числа от 128 до 254 и получишь свою русскую таблицу
А зачем? Я её получил, она такая
и из-за того, что она такая запись lcd.print(“Привет, мир!”); не выйдет ![]()
А вот если бы она была такая как справа то всё было бы зер гуд
Поэтому товарищ из
и написал свою библиотеку. Но она не под i2c и с ней работать не будет.
Вот поэтому я написал таки внебиблиотечную функцию для насрать какой библиотеки.
…кстати в массиве-переходнике автора не нашёл всеми любимые Ёё, пришлось добавлять.
void setup(){
lcd.begin(20, 4);
text_rus("English language",2,0);
text_rus("Русский язык",2,1);
text_rus("Ёжик,ель",5,2);
}
Теперь хочется на халяву подобное через монитор порта.
…млять!, хотел же написать ёль.



