ELECTRONICS

Библиотека LiquidCrystal

В менеджере библиотек
LiquidCrystal by Arduino, Adafruit
Версия
1.0.7 · всего 7 версий, первая — 1.0.0
Платы
любые — автор не ограничивал
СкачатьLiquidCrystal-1.0.7.zip · 19 КБ

Архивы — копии из официального индекса Arduino, контрольная сумма совпадает. Сверено 19.10.2026.

Символьные дисплеи 1602 и 2004 на контроллере HD44780, подключённые напрямую шестью проводами.

Это библиотека для дисплея без переходника I2C: сам модуль 1602 подключается к плате шестью сигнальными выводами — RS, E и четыре линии данных. Если на обороте дисплея припаяна маленькая плата с подстроечником и четырьмя выводами, нужна другая библиотека, LiquidCrystal I2C.

Дисплей — это объект класса Print, поэтому на него работает всё то же, что для Serial: print() с числами, строками и точностью для дробных.

Как скачать и установить

  1. Через менеджер — самый простой путь. В Arduino IDE: Инструменты → Управлять библиотеками (Ctrl+Shift+I). Введите LiquidCrystal и найдите в списке строку «LiquidCrystal by Arduino, Adafruit» — одноимённых библиотек бывает несколько, отличаются они автором. Нажмите «Установить».
  2. Конкретная версия — если в чужом проекте указана не последняя. В той же карточке менеджера рядом с кнопкой есть выпадающий список версий: выберите нужную и нажмите «Установить».
  3. Из архива — если нет интернета на рабочем компьютере или менеджер не открывается. Скачайте ZIP выше, затем Скетч → Подключить библиотеку → Добавить .ZIP библиотеку и укажите файл. Распаковывать не нужно.

Файл LiquidCrystal.h отдельно не скачивают: он внутри библиотеки и появляется после установки. Если среда пишет LiquidCrystal.h: No such file or directory — библиотека не установлена или установлена не та. Как устроен менеджер и куда складываются файлы — в общей статье про библиотеки.

Строка подключения:

#include <LiquidCrystal.h>

Создание объекта — обычно до setup():

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   // RS, E, D4, D5, D6, D7 — выводы платы
lcd.begin(16, 2);                         // в setup(): столбцов и строк

Методы

Только то, что нужно в обычном скетче. Сигнатуры сверены с версией 1.0.7.

begin(uint8_t cols, uint8_t rows)
Инициализация: размер дисплея. 16×2 или 20×4.
print(...)
Вывести текст или число с текущей позиции курсора. Как у Serial: print(3.14159, 2) даст 3.14.
setCursor(uint8_t col, uint8_t row)
Поставить курсор: столбец и строка с нуля. setCursor(0, 1) — начало второй строки.
clear()
Очистить экран и вернуть курсор в начало. Медленная операция, около 2 мс.
home()
Курсор в начало без очистки.
cursor() / noCursor()
Показать или спрятать подчёркивание под курсором.
blink() / noBlink()
Мигающий курсор.
display() / noDisplay()
Выключить показ, не стирая содержимое, и включить обратно.
scrollDisplayLeft() / scrollDisplayRight()
Сдвинуть всё содержимое на один символ.
autoscroll() / noAutoscroll()
Автоматически сдвигать текст при выводе за край.
createChar(uint8_t n, uint8_t map[8])
Задать свой символ 5×8 точек под номером 0–7; выводится как write(n).
write(uint8_t c)
Вывести один символ по коду, в том числе свой из createChar().

Пример

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.print("Привет? Нет: Hello");   // кириллицы в HD44780 нет
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print(millis() / 1000);
  lcd.print(" s   ");          // пробелы затирают хвост от длинного числа
  delay(500);
}
Запустить в симулятореСхема с этим скетчем — запустить в браузере

Контраст крутится подстроечником на выводе V0. Если видны только чёрные прямоугольники или ничего — крутите его, прежде чем искать ошибку в коде.

На чём попадаются

Два ряда чёрных квадратов

Дисплей не инициализировался: перепутаны RS и E или неверные номера выводов в конструкторе. Порядок — RS, E, D4, D5, D6, D7.

Кириллица выводится как мусор

В обычных модулях знакогенератор без русских букв. Либо латиница, либо свои символы через createChar(), либо модуль с русской прошивкой.

Старое число не стирается

print() не чистит строку. Дописывайте пробелы после короткого значения или печатайте поле фиксированной ширины.

Мерцает при обновлении

clear() каждый цикл — плохая идея. Перерисовывайте только изменившиеся позиции через setCursor().

Где используется на сайте

Что дальше