Введение
Добро пожаловать в очередной учебник Velxio! Сегодня мы соберем классический проект Hello World с использованием 20x4 LCD дисплея и Arduino Uno. Это отличный проект для новичков, желающих научиться подключать символьные LCD к микроконтроллерам. Мы будем использовать популярную библиотеку LiquidCrystal, которая значительно упрощает управление дисплеем.
К концу этой статьи вы сможете подключить 20x4 LCD, написать код для отображения текста на нескольких строках и даже показывать динамические данные, такие как время работы. Давайте начнем!
Схема подключения

Наша схема состоит из двух основных компонентов: Arduino Uno и 20x4 LCD (модель wokwi-lcd2004). У LCD 16 контактов, но нам понадобятся только 6 для данных и управления. Вот подключение:
- RS (Register Select) – подключен к контакту Arduino 12 (зеленый провод)
- E (Enable) – подключен к контакту Arduino 11 (зеленый провод)
- D4 – подключен к контакту Arduino 5 (синий провод)
- D5 – подключен к контакту Arduino 4 (синий провод)
- D6 – подключен к контакту Arduino 3 (синий провод)
- D7 – подключен к контакту Arduino 2 (синий провод)
Мы используем 4-битный режим, который требует только четыре линии данных (D4–D7) вместо восьми. Это экономит ценные контакты ввода-вывода. LCD также требует питания (5V) и земли, но в Velxio они подключаются автоматически при размещении компонентов.
Чтобы собрать эту схему в Velxio:
- Откройте пример LCD Hello World или создайте новый проект.
- Используйте выбор компонентов, чтобы добавить Arduino Uno и 20x4 LCD.

- Нажмите на контакты и перетащите провода в соответствии с подключениями выше. Вы можете изменить цвета проводов, нажав на образец цвета.
- Ваш холст должен выглядеть как схема выше.
Разбор кода

Теперь давайте посмотрим на код. Откройте редактор кода в Velxio (вы увидите редактор Monaco с подсветкой синтаксиса). Вот полный скетч:
// LiquidCrystal Library - Hello World
// Demonstrates the use a 20x4 LCD display
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(20, 4);
// Print a message to the LCD.
lcd.print("Hello, Arduino!");
lcd.setCursor(0, 1);
lcd.print("Velxio Emulator");
lcd.setCursor(0, 2);
lcd.print("LCD 2004 Test");
}
void loop() {
// set the cursor to column 0, line 3
lcd.setCursor(0, 3);
// print the number of seconds since reset:
lcd.print("Uptime: ");
lcd.print(millis() / 1000);
}
Как это работает
- Подключение библиотеки:
#include <LiquidCrystal.h>предоставляет доступ ко всем функциям LCD. - Определение контактов: Мы создаем константы для номеров контактов:
rs = 12,en = 11,d4 = 5,d5 = 4,d6 = 3,d7 = 2. Они соответствуют нашей схеме. - Создание объекта LCD:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);сообщает библиотеке, какие контакты подключены. - В
setup():lcd.begin(20, 4);инициализирует дисплей с 20 столбцами и 4 строками.lcd.print()выводит текст на текущей позиции курсора.lcd.setCursor(col, row)перемещает курсор на указанную позицию (нумерация с 0).
- В
loop():- Перемещаем курсор на строку 3, столбец 0.
- Выводим “Uptime: ” и затем
millis() / 1000(секунды с момента сброса).
Чтобы запустить код, нажмите кнопку Compile на панели инструментов, затем Run.

Ключевые концепции
- 4-битный vs 8-битный режим: Использование только 4 линий данных (D4–D7) экономит контакты. Библиотека LiquidCrystal управляет протоколом.
- Позиционирование курсора:
setCursor(col, row)– помните, что строки и столбцы начинаются с 0. millis(): Возвращает миллисекунды с момента запуска программы. Деление на 1000 дает секунды.- Управление библиотеками: Velxio включает библиотеку LiquidCrystal по умолчанию. Вы можете добавить другие библиотеки через Менеджер библиотек.

Частые ошибки и советы по отладке
- Ошибки подключения: Перепроверьте, что каждый провод соединяет правильные контакты. Перепутанные D4 и D5 приведут к искаженным символам.
- Неверные размеры в
begin(): Если вы используетеlcd.begin(16, 2)с дисплеем 20x4, текст может отображаться обрезанным или смещенным. - Отсутствие библиотеки: Если при компиляции возникает ошибка о
LiquidCrystal.h, убедитесь, что библиотека установлена (по умолчанию она должна быть). - Курсор не виден: Курсор по умолчанию невидим. Используйте
lcd.cursor(), чтобы показать подчеркивание. - Текст не обновляется: В цикле может потребоваться очистить строку перед выводом новых данных. Используйте
lcd.setCursor(0, 3); lcd.print(" ");для очистки строки.
Предлагаемые улучшения
Когда базовый Hello World заработает, попробуйте эти дополнения:
- Прокрутка текста: Используйте
lcd.scrollDisplayLeft()илиlcd.scrollDisplayRight()для создания прокручивающихся сообщений. - Отображение данных с датчика: Считайте аналоговый датчик (например, потенциометр) и выведите его значение на LCD.
- Пользовательские символы: Создайте собственные символы с помощью
lcd.createChar(). - Кнопочный ввод: Добавьте кнопку для смены отображаемого сообщения.
- Несколько экранов: Используйте конечный автомат для циклического переключения между разными страницами информации.
Попробуйте сами!
Готовы создать свой собственный проект с LCD? Откройте пример LCD Hello World в Velxio и начинайте экспериментировать. Вы можете изменять код, менять подключения или добавлять новые компоненты – все в вашем браузере, без необходимости в оборудовании.
Удачного творчества!