02.01.2012

LiquidCrystalRus для 1.0

По многочисленным заявкам телезрителей пользователей, выкладываю под тегом Arduino 1.0 libs адаптированные для Arduino 1.0 библиотеки.

Начинаю с LiquidCrystalRus: скачать LiquidCrystalRus-1.0.zip.

Это копия оригинальной библиотеки LiquidCrystal с поддержкой русского языка. Добавленный код трансформирует русские символы UTF8 в правильные коды для HD44780U. 

Этот вариант будет одинаково нормально работать и с arduino-0023, и с arduino-1.0. Основная причина несовместимости - класс LiquidCrystalRus (как и оригинальный LiquidCrystal) порожден от стандартного Print, у которого поменялся прототип виртуальной функции write: если раньше возвращаемое значение было void, то теперь - size_t.

Проект также доступен на GitHub: https://github.com/mk90/LiquidCrystalRus

8 комментариев:

  1. Подскажите пожалуйста как быть с
    этим? 
    Опытным путем установил что если lcd.write(0); заменить на lcd.print(0); то скетч компилится, но пишет не то что нужно. Хотелось бы как то это поправить, а то библиотека не полная получается.

    ОтветитьУдалить
  2. Компилятор же пишет - "нет такого прототипа для write, не могу вывести int!". Приведите к uint8_t и скомпилится тут же (write понимает только побайтный вывод).

    А по поводу неполноты - не понял. Чего именно не хватает? У меня все, как в стандартной LiaquidCrystal. Если есть желание подискутировать - милости прошу в форум.

    ОтветитьУдалить
  3. Спасибо, попробую, я не про конкретно Вашу библиотеку говорил, в оригинальной тоже самое.

    ОтветитьУдалить
  4. Я мягко говоря не силен в программировании, нашел в LiquidCrystalRus.h такие строчки:

    #if defined(ARDUINO) && ARDUINO >= 100
    virtual size_t write(uint8_t);
    using Print::write;
    #else
    virtual void write(uint8_t);
    #endif

    и в LiquidCrystalRus.cpp такие:

    #if defined(ARDUINO) && ARDUINO >= 100
    size_t LiquidCrystalRus::write(uint8_t value)
    #else
    void LiquidCrystalRus::write(uint8_t value)
    #endif

    вроде бы все как Вы и сказали, может не в том направлении копаю?

    ОтветитьУдалить
  5. Кто скажет, почему у меня мой дисплейчик на русском печатает только одну букву вконце строчки (например от слова привет вывадится в последней позиции первой строки только "Т")? На инглише все пишет как надо
    З.Ы. дисплей WINSTAR WH0802A-YYH-CT

    ОтветитьУдалить
    Ответы
    1. Я такого никогда не наблюдал. Возможно, неисправный дисплей.

      Удалить
  6. А с 1.6.1 эта библиотека не совместима?
    А то с 1.0.6 работала, а на 1.6.1 пишет:
    LiquidCrystalRus.h:30:24: fatal error: LineDriver.h: No such file or directory
    Что-то с этим можно сделать или вопрос вывода русского текста нынче решается как-то иначе?

    ОтветитьУдалить
    Ответы
    1. Да, с 1.6.x пока не совместима. У меня пока руки не доходят, если предложите патч, опубликую на github.

      Удалить