LCD 16x2 и русский алфавит

arssev1
Offline
Зарегистрирован: 10.04.2014

Приобрел LCD в формате 16x2, но как оказалось без "вшитой" кирилицы. Дисплей на базе HD44780.

Пытался подружить его с LiquidCrystalRus.h, но рисуются иероглифы. Есть ли библиотека, которая "прорисовывает" русский алфавит?

Клапауций
Offline
Зарегистрирован: 10.02.2013

ну, и всё - так и будешь ходить, весь в латинице, нерусский.

можно использовать до 8-ми заказных символов, но оно не решит проблему полностью.

забей и пользуй латиницу... или меняй индикатор.

arssev1
Offline
Зарегистрирован: 10.04.2014

Грусть-тоска, а нельзя поточечно вырисовать буквы

Клапауций
Offline
Зарегистрирован: 10.02.2013

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

заказные символы, до 8-ми штук, тоже аппаратное ограничение памяти индикатора http://arduino.cc/en/Reference/LiquidCrystalCreateChar

byte smiley[8] = {
  B00000,
  B10001,
  B00000,
  B00000,
  B10001,
  B01110,
  B00000,
};

есть библиотека http://playground.arduino.cc/Code/LCDBitmap , можно точки рисовать, но это костыль из 8-ми штук заказных символов.

arssev1
Offline
Зарегистрирован: 10.04.2014

А есть какая-нибудь вспомогательная прога, чтобы рисовать 5х8, а она переводила в символы

Клапауций
Offline
Зарегистрирован: 10.02.2013

arssev1 пишет:

А есть какая-нибудь вспомогательная прога, чтобы рисовать 5х8, а она переводила в символы

я находил типо "проги", но затем повыбрасывал, т.к. понял, что проще руками нарисовать любой символ - там же просто "0" - пусто, "1" - рисуем пиксель.

vlkam
Offline
Зарегистрирован: 17.02.2013

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

http://yadi.sk/d/2RAgbPlDMCWDe

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Вообще говоря, среди этих "иероглифов" есть некоторые зачатки русских букв. Ну и часть латиницы похожа на русские... Остается приложить интеллект и наделать интуитивно понятных  сокращений...

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

arssev1 пишет:
А есть какая-нибудь вспомогательная прога, чтобы рисовать 5х8, а она переводила в символы

http://www.quinapalus.com/hd44780udg.html

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

arssev1, а ещё бывают индикаторы с русским шрифтом, но расположенным в нестандартных адресах. Мне такой попадался от производителя PowerTip.  Что-бы точно узнать что в вашем нет русского, нужно перебором вывести поочереди  всю таблицу символов.

renoshnik
Offline
Зарегистрирован: 11.04.2013

arssev1 пишет:

А есть какая-нибудь вспомогательная прога, чтобы рисовать 5х8, а она переводила в символы

 

http://www.geocities.com/dinceraydin/lcd/charcalc.htm

arssev1
Offline
Зарегистрирован: 10.04.2014

dimax пишет:

arssev1, а ещё бывают индикаторы с русским шрифтом, но расположенным в нестандартных адресах. Мне такой попадался от производителя PowerTip.  Что-бы точно узнать что в вашем нет русского, нужно перебором вывести поочереди  всю таблицу символов.

А как вывести всю таблицу символов?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

arssev1 пишет:

А как вывести всю таблицу символов?

Можно так:


#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);
const int numRows = 2; 
const int numCols = 16;


void setup() {
  lcd.begin(16, 2);
}
void loop() 
{

  int currentRow = 0;
  int currentCol = 0;
  for (int letter = 0; letter <= 255; letter++) {
    lcd.setCursor(currentCol, currentRow-1);
    lcd.print(char(letter));
    currentCol++;
    if (currentCol > numCols)
    {
      currentCol = 0;
      if (currentRow < (numRows - 1) )
      {
        currentRow++;
      }
      else
      {
        delay(5000);
        lcd.clear();
        currentRow = 0;            
      }
    }
  }       
}

Код не мой.

vvadim
Offline
Зарегистрирован: 23.05.2012
arssev1
Offline
Зарегистрирован: 10.04.2014

vvadim пишет:

Попробуйте http://mk90.blogspot.ru/2012/01/liquidcrystalrus-10.html

Я же говорил - не работает

maxfat
Offline
Зарегистрирован: 18.08.2019

Нашел две ошибки в коде вывода таблицы символов который был выше, вот исправленный мною код

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);
const int numRows = 2; 
const int numCols = 16;


void setup() {
  lcd.begin(16, 2);
}
void loop() 
{

  int currentRow = 0;
  int currentCol = 0;
  for (int letter = 0; letter <= 255; letter++) {
    lcd.setCursor(currentCol, currentRow);
    lcd.print(char(letter));
    currentCol++;
    if (currentCol == numCols)
    {
      currentCol = 0;
      if (currentRow < (numRows - 1) )
      {
        currentRow++;
      }
      else
      {
        delay(5000);
        lcd.clear();
        currentRow = 0;            
      }
    }
  }       
}