Русские символы LCD 5110

zvyagaaa
Offline
Зарегистрирован: 31.05.2015

то, что русифицирован не по стандарту, это и так понятно ;) не понятно почему если я пишу в коде "привет" - на экране тоже "привет", а когда приходит код ASCII - то не отображается ничего :( а так как я "не настоящий сварщик", то разобраться не могу с кодировкой. я не понимаю, как русифицировать по стандарту.

Droni
Offline
Зарегистрирован: 12.10.2014
lcd.print('A', HEX);

что выдает?

zvyagaaa
Offline
Зарегистрирован: 31.05.2015

выдает "41" :)

Droni
Offline
Зарегистрирован: 12.10.2014

zvyagaaa пишет:

выдает "41" :)

Это для английской А, а для русской что?

labor
Offline
Зарегистрирован: 20.11.2015

Electric_62 пишет:

Вот отредактированная мной библиотека Adafruit_GFX с поддержкой русских букв

https://yadi.sk/d/MEiPGeXcepeJK

извините, но в вашей библиотеке не работает перенос строки по println

Electric_62
Offline
Зарегистрирован: 22.02.2015

labor пишет:

извините, но в вашей библиотеке не работает перенос строки по println

Смотрите внимательнее свой код, println работает исправно.

san010101
Offline
Зарегистрирован: 27.09.2016

Всем привет, у меня заработал русский язык. Библиотеку со шрифтами брал тут

https://www.drive2.ru/c/2530193/

но сразу не заработало т.к. Ардуинка не сохраняет файлы в 1251 кодировке.

пришлось вставить такой костыль....

http://arduino.ru/forum/programmirovanie/pomoshch-sketch-vyvod-chasov-rt...

нашел код тут

/* Recode russian fonts from UTF-8 to Windows-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) {
      switch (n) {
        case 0xD0: {
          n = source[i]; i++;
          if (n == 0x81) { n = 0xA8; break; }
          if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
          break;
        }
        case 0xD1: {
          n = source[i]; i++;
          if (n == 0x91) { n = 0xB8; break; }
          if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
          break;
        }
      }
    }
    m[0] = n; target = target + String(m);
  }
return target;
}

 

В итоге получаем

myGLCD.print(utf8rus("Test сообщение"), CENTER, 40);

вуаля и видем сообщение на русском!!!

 

arduinec
Offline
Зарегистрирован: 01.09.2015

san010101 пишет:

но сразу не заработало т.к. Ардуинка не сохраняет файлы в 1251 кодировке.
пришлось вставить такой костыль

Функция взята отсюда:
http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...

Там же есть пример для Nokia 5110.

DrProg
Offline
Зарегистрирован: 07.08.2015

Тему не читал, но не так давно переделал стандартную библиотеку на возможность писать и латиницей и кириллицей прямо как обычно без костылей .println("Привет!"); Кому надо пишите, дам ссылку.

Joiner
Offline
Зарегистрирован: 04.09.2014

DrProg пишет:

Тему не читал, но не так давно переделал стандартную библиотеку на возможность писать и латиницей и кириллицей прямо как обычно без костылей .println("Привет!"); Кому надо пишите, дам ссылку.

Мне надо. Жду ссылку.

Спасибо.

DrProg
Offline
Зарегистрирован: 07.08.2015

Вот тут ближе к концу темы есть файлик. Попробуйте и отпишитесь.

Joiner
Offline
Зарегистрирован: 04.09.2014

Не получилось. Там в скетче еще подключается библиотека PCD 8544rus, а у меня установлена библиотека просто PCD 8544.

DrProg
Offline
Зарегистрирован: 07.08.2015

Joiner пишет:

Не получилось. Там в скетче еще подключается библиотека PCD 8544rus, а у меня установлена библиотека просто PCD 8544.

Там все в подправленной блиотеке есть. Удалите старую и поставьте эту. Ссылку на файл rus удалите, это вероятно я забыл, теперь все где надо.

Joiner
Offline
Зарегистрирован: 04.09.2014

DrProg пишет:

....Удалите старую и поставьте эту. Ссылку на файл rus удалите, это вероятно я забыл,.....

Не совсем понял где что удалять. Удалял в нескольких местах, но ничего не получилось. Вы бы выложили уже поправленный комплектик...

DrProg
Offline
Зарегистрирован: 07.08.2015

Я проверил, все там правильно.  Файлы с допиской _rus там присутсвуют. Все компилируется и работает. Вы ее как установили, что файлы не перетащились в папку?

Joiner
Offline
Зарегистрирован: 04.09.2014

DrProg пишет:

Я проверил, все там правильно. .........................

Копирую папку [Adafruit_GFX_Library_RUS] в папку с библиотеками. В ней есть примеры и файлы с приписочкой rus. Запускаю пример rus-lat, компилирую, выдается сообщения об ошибках

Arduino: 1.6.5 (Windows 7), Плата"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

Используем библиотеку Adafruit_GFX_Library_RUS в папке: C:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS (legacy)



C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR -IC:\Users\Sergey\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.5\cores\arduino -IC:\Users\Sergey\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.5\variants\eightanaloginputs -IC:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS C:\Users\Sergey\AppData\Local\Temp\build7902192357054585376.tmp\rus-lat.cpp -o C:\Users\Sergey\AppData\Local\Temp\build7902192357054585376.tmp\rus-lat.cpp.o 

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR -IC:\Users\Sergey\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.5\cores\arduino -IC:\Users\Sergey\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.5\variants\eightanaloginputs -IC:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS -IC:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS\utility C:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS\glcdfont_rus.c -o C:\Users\Sergey\AppData\Local\Temp\build7902192357054585376.tmp\Adafruit_GFX_Library_RUS\glcdfont_rus.c.o 

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR -IC:\Users\Sergey\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.5\cores\arduino -IC:\Users\Sergey\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.5\variants\eightanaloginputs -IC:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS -IC:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS\utility C:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS\Adafruit_GFX_rus.cpp -o C:\Users\Sergey\AppData\Local\Temp\build7902192357054585376.tmp\Adafruit_GFX_Library_RUS\Adafruit_GFX_rus.cpp.o 

C:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS\Adafruit_GFX_rus.cpp: In member function 'virtual size_t Adafruit_GFX::write(uint8_t)':
C:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS\Adafruit_GFX_rus.cpp:384:13: error: invalid conversion from 'const unsigned char*' to 'byte* {aka unsigned char*}' [-fpermissive]
     fontMap = font;
             ^
C:\Users\Sergey\Documents\Arduino\libraries\Adafruit_GFX_Library_RUS\Adafruit_GFX_rus.cpp:388:16: error: invalid conversion from 'const unsigned char*' to 'byte* {aka unsigned char*}' [-fpermissive]
        fontMap = rus;
                ^
Ошибка компиляции.

Я по английски не очень, не понимаю, что там еще надо. Библиотека PCD8544 у меня установлена, правда без приписочки rus. Может какая другая нужна?

 

DrProg
Offline
Зарегистрирован: 07.08.2015

Не нравится ему конвертировать byte в unsigned char почему то. Странно, это одно и тоже. У меня на двух компах компилируется нормально и еще пара человек установило. Попробуй версию IDE 1.6.11 может в этом дело?

Joiner
Offline
Зарегистрирован: 04.09.2014

Ок, попробую.

Спасибо.

DrProg
Offline
Зарегистрирован: 07.08.2015

Вообще надо, конечно, довести до ума, чтобы зацепиться было не за что, но все времени нет. Сейчас вот библиотеку для DFPlyer переделывал, так как родная вообще хрень нерабочая. Убивать таких библиотекарей. )

Joiner
Offline
Зарегистрирован: 04.09.2014

Почитал тему про руссификацию библиотеки Adafruit, каким-то чудом смог руссифицировать дисплей ILI9163C. Очень понравилось решение, описанное в теме. Теперь есть мечта, используя этот подход, руссифицировать ходовые дисплеи Nokia5110, ILI9163, ILI9140 .... и т.д., чтобы можно было подключать разные шрифты и прочее. Чтобы было не хуже, чем на родном английском. Но знаний моих не хватает, а опытным спецам это неинтересно.

.....вот так, брат :(

arduinec
Offline
Зарегистрирован: 01.09.2015

Joiner пишет:

Почитал тему про руссификацию библиотеки Adafruit, каким-то чудом смог руссифицировать дисплей ILI9163C. Очень понравилось решение, описанное в теме. Теперь есть мечта, используя этот подход, руссифицировать ходовые дисплеи Nokia5110, ILI9163, ILI9140 .... и т.д., чтобы можно было подключать разные шрифты и прочее. Чтобы было не хуже, чем на родном английском. Но знаний моих не хватает, а опытным спецам это неинтересно.

Пример для Nokia 5110 уже есть в теме: http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafruit-gfx-i-vyvod-russkikh-bukv-na-displei-v-kodi

К остальным дисплеям нужно подключить соответствующие библиотеки Adafruit - все они используют Adafruit-GFX, которая там русифицирована.

Mining
Offline
Зарегистрирован: 31.01.2016

Joiner пишет:

Почитал тему про руссификацию библиотеки Adafruit, каким-то чудом смог руссифицировать дисплей ILI9163C. Очень понравилось решение, описанное в теме. Теперь есть мечта, используя этот подход, руссифицировать ходовые дисплеи Nokia5110, ILI9163, ILI9140 .... и т.д., чтобы можно было подключать разные шрифты и прочее. Чтобы было не хуже, чем на родном английском. Но знаний моих не хватает, а опытным спецам это неинтересно.

.....вот так, брат :(

Библиотека LCD5510  от  ринки-динка, русифицирована форумчанином  ssvs111 и что б дисплей работал на 4 пинах вот ссылка http://arduino.ru/forum/programmirovanie/5110-i-nano-kak-nauchit-russkom...

Joiner
Offline
Зарегистрирован: 04.09.2014

Mining пишет:

Библиотека LCD5510  от  ринки-динка, русифицирована форумчанином  ssvs111 и что б дисплей работал на 4 пинах вот ссылка http://arduino.ru/forum/programmirovanie/5110-i-nano-kak-nauchit-russkom...

Я эту библиотеку применил в "контроллере самогонщика". При написании скетча небольшое неудобство - ghb[jlbncz gbcfnm fyukbqcrbvb ,erdfvb, а в самом устройстве все окей, информация выводится на понятном русском языке.

Joiner
Offline
Зарегистрирован: 04.09.2014

arduinec пишет:

.......................................

К остальным дисплеям нужно подключить соответствующие библиотеки Adafruit - все они используют Adafruit-GFX, которая там русифицирована.

arduinec, подскажите пожалуйста как можно отредактировать шрифт и добавить в него русские буквы. В настоящее время пробовал библиотеку ILI9163C версия 1.0.7p для одноименного дисплея. Эта версия работает сама по себе без библиотеки Adafruit. В ней имеется несколько красивых шрифтов разной величины, и даже вроде бы есть шрифт с разной шириной букв......но там нет русских букв :( Хотелось бы их дорисовать

arduinec
Offline
Зарегистрирован: 01.09.2015

Joiner пишет:

arduinec пишет:
К остальным дисплеям нужно подключить соответствующие библиотеки Adafruit - все они используют Adafruit-GFX, которая там русифицирована.

arduinec, подскажите пожалуйста как можно отредактировать шрифт и добавить в него русские буквы. В настоящее время пробовал библиотеку ILI9163C версия 1.0.7p для одноименного дисплея. Эта версия работает сама по себе без библиотеки Adafruit. В ней имеется несколько красивых шрифтов разной величины, и даже вроде бы есть шрифт с разной шириной букв......но там нет русских букв :( Хотелось бы их дорисовать

В посте 27 темы http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru... приводится код для преобразования кодов символов в визуальный формат и обратно.
 

Joiner
Offline
Зарегистрирован: 04.09.2014

arduinec пишет:

В посте 27 темы http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru... приводится код для преобразования кодов символов в визуальный формат и обратно.

Спасибо. Попробую разобраться.

beve
Offline
Зарегистрирован: 15.07.2015

DrProg пишет:
Не нравится ему конвертировать byte в unsigned char почему то. Странно, это одно и тоже. У меня на двух компах компилируется нормально и еще пара человек установило. Попробуй версию IDE 1.6.11 может в этом дело?

У меня тоже на версии IDE-1.6.4 выскакивала подобная ошибка конвертации. Обновил IDE до версии - 1.6.12 и компиляция происходит без ошибок, на экранчике все правильно начало отображаться.

Nefelisk
Offline
Зарегистрирован: 09.09.2017

Electric_62 пишет:

labor пишет:

извините, но в вашей библиотеке не работает перенос строки по println

Смотрите внимательнее свой код, println работает исправно.

"Уже кончено много времени прошло, но у меня тоже не работает перевод строки через println а так же если задать в самой строке .print("text\n")... Как это исправить, не подскажете?"