4.01.7. Лабораторная работа №4.1.7.md


ЖК-дисплей

Тема работы

До сих пор для получения информации от Рудирона мы использовали монитор порта. Это удобно для отладки, но для автономного устройства, которое должно работать без компьютера, нужен свой собственный экран. В этой лабораторной работе мы подключим и научимся управлять самым популярным и доступным типом дисплея — символьным ЖК 16x2. Мы выведем на него текст и научимся обновлять информацию в реальном времени.

Цель

  • Понять принцип работы и устройство символьного ЖК-дисплея.
  • Научиться подключать дисплей к GPIO-пинам Рудирона в 4-битном режиме.
  • Освоить работу с библиотекой Rudiron_LCD1602 для вывода текста и управления курсором.
  • Создать устройство с собственным интерфейсом вывода информации.

Оборудование и материалы

  • Отладочная плата Рудирон.
  • Макетная плата.
  • Символьный ЖК-дисплей 16x2.
  • Потенциометр (10 кОм) для регулировки контрастности.
  • Резистор 220 Ом (для подсветки).
  • Соединительные провода.
  • USB-кабель для подключения Рудирона.
  • Компьютер с Arduino IDE и установленной библиотекой Rudiron_LCD1602.

Ход работы

  1. Как устроен ЖК-дисплей?

    LCD (Liquid Crystal Display) — это жидкокристаллический дисплей. В его основе лежат жидкие кристаллы, которые под действием электрического поля могут менять свою поляризацию. Каждый символ на экране (16 символов в 2 строках) — это матрица из 5x8 таких крошечных ячеек-пикселей.

    Управляет всем этим встроенный контроллер (обычно Hitachi HD44780). Он принимает от Рудирона команды и данные и сам «рисует» нужные символы. Чтобы сэкономить пины микроконтроллера, мы будем использовать 4-битный режим, передавая данные по 4 проводам двумя порциями.

  2. Установка библиотеки Rudiron_LCD1602

    • Скачайте архив с библиотекой из нашего репозитория: Rudiron Libraries.
    • В Arduino IDE установите её через меню Sketch → Include Library → Add .ZIP Library…
  3. Сборка схемы

    Это самая сложная схема из всех, что мы собирали. Будьте внимательны!

    • Установите дисплей и потенциометр на макетную плату.
    • Подключите питание и контрастность дисплея:
      • VSS (вывод 1) и RW (вывод 5) — к GND.
      • VDD (вывод 2) — к +5V.
      • VO (вывод 3) — к центральному выводу потенциометра. Крайние выводы потенциометра подключите к +5V и GND.
    • Подключите подсветку:
      • A (или LED+, вывод 15) — через резистор 220 Ом к +5V.
      • K (или LED-, вывод 16) — к GND.
    • Подключите управляющие пины к Рудирону:
      • RS (вывод 4) — к пину 12.
      • E (вывод 6) — к пину 11.
    • Подключите шину данных (4-битный режим):
      • D4 (вывод 11) — к пину 5.
      • D5 (вывод 12) — к пину 4.
      • D6 (вывод 13) — к пину 3.
      • D7 (вывод 14) — к пину 2.
  4. Написание и загрузка кода

    • Установите перемычку PRG | RUN в положение PRG.
    • В Arduino IDE введите следующий код, который соответствует нашей библиотеке Rudiron_LCD1602:

      // 1. Подключаем нашу библиотеку
      #include <Rudiron_LCD1602.h>
      
      // 2. Создаём объект для работы с дисплеем
      Rudiron_LCD1602 lcd;
      
      int seconds = 0;
      
      void setup() {
        // 3. Инициализируем дисплей, указывая пины, к которым он подключен
        // Порядок пинов: (RS, E, D4, D5, D6, D7)
        lcd.attach(12, 11, 5, 4, 3, 2);
      
        // 4. Выводим приветственное сообщение
        lcd.print("Hello, Rudiron!");
      }
      
      void loop() {
        // 5. Устанавливаем курсор во 2-ю строку, 1-й столбец
        // (нумерация с нуля: столбец 0, строка 1)
        lcd.setCursor(0, 1);
      
        // 6. Выводим количество прошедших секунд
        lcd.print("Time: ");
        lcd.print(seconds);
      
        seconds++; // Увеличиваем счётчик
        delay(1000);
      }
      
    • Нажмите кнопку «Upload», чтобы загрузить код на плату.
  5. Проверка работы

    • После загрузки на дисплее должна появиться надпись «Hello, Rudiron!». Если символы не видны, покрутите ручку потенциометра для настройки контрастности.
    • На второй строке начнёт работать счётчик секунд, обновляясь каждую секунду.

Результаты

Вы успешно подключили LCD-дисплей и вывели на него информацию. Теперь ваши проекты могут быть полностью автономными и общаться с пользователем напрямую, без компьютера.

Анализ результатов

  • #include <Rudiron_LCD1602.h>. Подключает библиотеку, которая скрывает всю сложную логику управления пинами.
  • lcd.attach(...). В отличие от стандартной библиотеки, здесь мы инициализируем дисплей и указываем пины в одном действии внутри setup().
  • lcd.print(...). Выводит на дисплей текст или числа.
  • lcd.setCursor(col, row). Перемещает курсор в указанную позицию (нумерация с нуля), позволяя выводить текст в любом месте экрана.

Выводы

В этой лабораторной работе вы научились работать с символьным LCD-дисплеем — одним из самых распространённых способов вывода информации в DIY-проектах. Вы поняли, как с помощью библиотеки можно легко управлять сложным устройством, и создали автономный счётчик.

Вопросы для самопроверки

  1. Какие два режима работы есть у LCD-дисплея и какой пин за них отвечает?
  2. Зачем в схеме используется потенциометр?
  3. Какая команда перемещает курсор на дисплее?
  4. Что делает команда lcd.clear()? (Найдите ответ в интернете или примерах библиотеки).
  5. Задача со звёздочкой: Объедините эту лабораторную работу с лабораторной работой 4.01.06 (датчик DHT11). Напишите программу, которая будет выводить на первую строку дисплея температуру, а на вторую — влажность.

Вы научились выводить текстовую информацию!