Подключение LCD-дисплея на базе HD44780 к Arduino
При работе с Arduino иногда возникает необходимость вывести какие-либо данные на дисплей, но передавать для этого данные на ПК имеет смысл только если устройство будет использоваться в связке с ПК. А как же быть с автономными устройствами? Тут на помощь придут LCD-дисплеи. Рассмотрим LCD-дисплеи на базе контроллера HD44780
Этот монохромный дисплей имеет опциональную подсветку и может отображать 2 строки по 16 символов. Разрешение символов — 5x8 точек. Существует поддержка кириллицы.
Чем хороши такие дисплеи? LCD-экран HD44780 — стандартный и часто используемый среди небольших монохромных LCD-дисплеев, поэтому библиотека для работы с дисплеями на его базе записана профессионалами. Разработчики Arduino написали библиотеку для своей платформы, и называется она LiquidCrystal. Её мы и используем для работы с выбранным мной дисплеем.
Для подключения LCD экрана нам понадобятся такие компоненты
- Любая Arduino(в нашем случае Arduino UNO)
- LCD-дисплей на базе HD44780
- Breadboard(макетная плата)
- Соединительные провода
- Потенциометр (не обязателен)
Подключение LCD экрана
Подключение LCD экрана к Ардуино не сложно даже для ребенка. Закрепите экран на breadboard'е и подведите к рельсам питания breaboard'а питание +5 В и "землю" с Arduino как показано на фотографии. (Так как питание и "землю" мы будем использовать много раз , удобнее подключить к рельсам, да и вообще, нужно привыкать подключать именно так)
Для полноценной работы Arduino с дисплеем подключим 12 выводов:
- 1 — Vss, земля ⇨ GND
- 2 — Vdd, питание ⇨ +5 В
- 3 — Vo, управление контрастностью напряжением ⇨ выход потенциометра
- 4 — RS, выбор регистра ⇨ пин 12 Arduino
- 5 — R/W, чтение/запись ⇨ земля (режим записи)
- 6 — E, он же Enable, cтроб по спаду ⇨ пин 11 Arduino
- 7-10 — DB0-DB3, младшие биты 8-битного интерфейса; не подключены
- 11-14 — DB4-DB7, старшие биты интерфейса ⇨ пины 5-2 Arduino
- 15 — A, питание для подсветки ⇨ +5 В
- 16 — K, земля для подсветки ⇨ GND
Этот дисплей, как и прочие на контроллере HD44780, поддерживает два варианта параллельного интерфейса:
- 8-битный, выводы DB0-DB7, за один такт передаётся 1 байт (8 бит)
- 4-битный, выводы DB4-DB7, за один такт передаётся половина байта (4 бита)
Смысла использовать 8-битный вариант нет, потому что это требует больше ног, а выигрыша в скорости всё равно нет: частота обновления дисплея не больше 10 раз в секунду, так что мы всё равно не сможем увидеть часто обновляемые данные. Поэтому выводы DB0-DB3 оставляем неподключенными.
Экран подключен и готов к приёму данных. Осталось написать программу для Arduino.
Программирование
Для вывода текста с Arduino воспользуемся библиотекой Liquid Crystal, о которой мы говорили выше.
Для работы датчика на Arduino нужно скачать и установить библиотеку DHT11 .
Скачать библиотеку можно здесь .
После того, как мы скачали нужную библиотеку, ее нужно правильно установить. скачанные файлы нужно переместить по следующему пути :
Диск C Progtam Files Arduino Libraries
После того, как мы все сделали перейдем к самой важной ступеньке, а именно к программированию.
/* Подключаем библиотеку для работы с LCD */
#include <LiquidCrystal.h>
/* Создаём объект LCD-дисплея, используя конструктор класса LiquidCrystal
* с 6ю аргументами. Библиотека по количеству аргументов сама определит,
* что нужно использовать 4-битный интерфейс.
* Указываем, к каким пинам Arduino подключены выводы дисплея:
* RS, E, DB4, DB5, DB6, DB7
*/
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
/* Инициализируем дисплей: 2 строки по 16 символов */
lcd.begin(16, 2);
/* Выводим на дисплей фразу */
lcd.print("hello from HelpDuino!");
}
void loop()
{
/* Устанавливаем курсор в 1 столбец 2й строки. Нумерация идёт с нуля,
* первым аргументом идёт номер столбца.
*/
lcd.setCursor(0, 1);
/* Выводим на дисплей число секунд, прошедших с момента старта Arduino */
lcd.print(millis() / 1000);
}
Вот, что у вас должно получиться, это самый простой скетч, в состав него входят всего 4 основные строчки , но вы можете разобраться и уже по этому принципу создать то, что нужно именно вам!