LCD1602 большие цифры

С ентой!

Ну не знаю, запутался. Я вчера пробовал вот этот пример

#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 и параллельного, да и команды :grinning_face:

Да, теперь то я рассмотрел. Спасибо, заработало.

Попробовал на дисплее без русских символов, сбивается точность при большом числе букв :slight_smile:

#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()
{
}

Ну, дык, неповторимых то не так много, но, всё же больше восьми :slightly_smiling_face:

А чё? Нормальная такая “дура веселуха”!

А я видел 2004 с огромными размерами символов (относительно). Но, Лилик, с неумением использовать разные интерфейсы, меня слегка пугает.(

Я тоже в интернете видел, но есть ли в них грация?

Да, вот придёт модуль-спутник, вставлю его в разъём дисплея, а библиотеки то и нет под русифицированный вариант с i2c.

Ну и как же мы дальше будем жить, без библиотеки то!

Да, уж! Это примерно как без медведей! (у наших американских непартнёров есть забавная лингвистическая шутка: «Life without bears would be unbearable»)

Да чёрт его знает. Видимо придётся писать функцию которая будет из строки “АБВГДЕЙКА“ вытягивать по 2 байта на букву, из второго делать сопоставление номеру символа в таблице символов дисплея с учётом, что часть символов берётся из англицких, а другая часть разбросана от балды. Потом, но лучше не надо, аналогично выдумывать при передачи строки из монитор - порта.

А потом добавить её в существующую библиотеку, сказать “рекс-пэкс-фэкс” и … voilà … у нас есть правильная библиотека!

Быстро магаданские чиновники среагировали :slight_smile:

В паузе на обед готовлюсь скрестить функцию одного товарища с массивом из библиотеки другого :slight_smile:

///////////////////////
/* Функция перекодировки русских букв из 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 //а......п
       };     
///////////////////////

…пока допрёшь какие числа буквам-числам соответствуют, авторы же не пишут…

…А вот была бы такая таблица и не надо было бы ни библиотек, ни функций добавочных.

…теперь я понимаю покупателей дисплеев у китайцев их законный вопрос - а где вторая страница символов???

Кстати можно посмотреть ху из ху :slight_smile:

подсказываю…нужно использовать ещё

lcd.setCursor(i, j); 
lcd.write(k);

хотя большинству это неинтересно.

а выводи последовательно в монитор LCD с 0 позиции числа от 128 до 254 и получишь свою русскую таблицу

А зачем? Я её получил, она такая

и из-за того, что она такая запись lcd.print(“Привет, мир!”); не выйдет :slight_smile:

А вот если бы она была такая как справа то всё было бы зер гуд

Поэтому товарищ из

и написал свою библиотеку. Но она не под i2c и с ней работать не будет.

Вот поэтому я написал таки внебиблиотечную функцию для насрать какой библиотеки.

…кстати в массиве-переходнике автора не нашёл всеми любимые Ёё, пришлось добавлять.

void setup(){
  lcd.begin(20, 4);
 text_rus("English language",2,0);
 text_rus("Русский язык",2,1);
 text_rus("Ёжик,ель",5,2);
 }

Теперь хочется на халяву подобное через монитор порта.

…млять!, хотел же написать ёль.