02.01.12

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

6 коммент.:

  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. Я такого никогда не наблюдал. Возможно, неисправный дисплей.

      Удалить