Урок 2. Подключение LCD1602 к Ардуино
Очень часто в наших проектах с Ардуиной нам необходимо управлять и видеть какиме либо процессы и показания. Так же реализовать визуальное меню управления нашим проектом.
Схема подключения:
Для подсветки нашего LCD 1602 нам нельзя использовать +5В, так как это очень много для светодиода установленого в данном модуле. Будем использовать резистор 1кОм. Для настройки яркости подсветки вы можете подобрать другой наминал подходяший для вас. В следующем уроке мы разберем как менять яркость подсветки без резистора, а с помощью кнопок и PWM.
Нам необходима библиотека LiquidCrystal скачать. Установите данную библиотеку и приступаем к разбору примера.
Код программы:
#include // Устанавливаем номера пинов к которым подключен дисплей LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() < // Устанавливаем количество символов в строке (16) и количство строк (2) lcd.begin(16, 2); // Выводим на дисплей надпись "iarduino.ru" lcd.print("iarduino.ru"); //Устанавливаем курсор на вторую строчку (Первая строка - 0 , вторая - 1) и 8 символ читая с левой стороны lcd.setCursor(8, 1); // Выводим на дисплей надпись "LCD 1602" lcd.print("LCD 1602"); >void loop() < // Устанавливаем курсор на вторую строку и нулевой символ. lcd.setCursor(0, 1); // Выводим на экран количество секунд с момента запуска ардуины lcd.print(millis()/1000); >
Результат:
Видео примера LCD 1602 Arduino
Дисплей LCD 1602 без лапши из проводов

Не всегда под рукой есть LCD дисплей с интерфейсом I2C… А так хочется собрать изделие поскорей и не ждать заказа из Интернет-магазина. Да и не всегда экономически целесообразно использовать именно I2C, особенно если Вам требуется изготовить много устройств с таким дисплеем.
Да, минусами голого дисплея являются:
- Сложность монтажа – ведь потребуется развести около 1.5 десятка проводов-премычек,
- Значительный расход пинов – целых 6 цифровых пинов!
Но у голого дисплея есть, как минимум, один, но очень весомый плюс:
Простая библиотека LiquidCrystal требует на 219 меньше оперативной памяти, чем New LiquidCrystal и на 198 байт меньше, чем не менее популярная LiquidCrystal I2C!
219 байт, Карл! Ведь для Ардуино Нано или Уно это же о-го-го как много!
Что же сэкономить – 4 пина или 219 байт – определяется конкретной ситуаций. В этой статье я расскажу как облегчить монтаж голого дисплея.
Да, я очень часто использую именно простой экран, а не с драйвером SPI, I2C или тем более SSD1306, с одной из самых тяжелых библиотек.
Но чтобы монтаж не превращался каждый раз в мороку, у меня есть готовая сборка, легко подключаемая к Arduino UNO и Nano. Давайте посмотрим как я этого добился.
Я чаще использую Nano, вставленную в микро-breadboard на 170 дырок. Так гораздо меньше проводов, и сборка компактней чем c UNO. И к такой макетке легко прицепить еще одну макетку, с заранее подготовленной обвязкой экрана.

Пару пояснений по схеме. В схеме задействовано 2 макетные платы размера «микро», т.е. на 170 точек (очень рекомендую иметь запас таких дешевых и весьма полезных макеток): на одной находится ардуино Nano, а на другой – экран LCD 1602. Макетные платы в действительности вставляются друг в друга, хотя на рисунке, для ясности, они изображены раздельно.
На плате с ардуино 5V протащены под ардуинкой, но можно это сделать в обход двумя перемычками, например, как на макетке рядом, или одним проводом поверх ардуинки.
В итоге, перемычки проложены таким образом, чтобы было меньше нависающей «лапши». Все очень аккуратно и компактно, и можно продолжать работу над новым творением. Вот фото примера готовой сборки:

Надеюсь, мой опыт поможет в вашем творчестве и вдохновит на создание собственных, более оптимальных решений в подобных ситуациях. А у вас есть заранее подготовленные сборки, сокращающие трудозатраты? Расскажите нам!
Posted in Секреты монтажа | Tagged дисплей | Leave a reply
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
#34. ЖК-дисплей LCD 1602 и LCD 2004. Подключение к Arduino. Основы.

Символьные ЖК-дисплеи LCD 1602 и LCD 2004 достаточно часто используются в Arduino проектах, благодаря большому размеру и относительно небольшой стоимости. Кроме этого с данными дисплеями достаточно просто работать. Сегодня в Arduino уроке рассмотрим основы работы с ЖК-дисплеями LCD 1602 и LCD 2004. Подключим lcd 1602 к Ардуино. И рассмотрим пару примеров скетчей, которые позволят вывести текстовую информацию на LCD 1602 и 2004.
Описание и классификация LCD 1602 и LCD 2004.
LCD 1602 дисплей еще называют символьным. Это связано с тем, что ЖК-дисплей разбит на области точек. На каждую такую область можно вывести 1 символ. В связи с чем дисплей данного типа подразделяется по количеству строчек и символов в строке. Например, 2 строки и 16 символов в каждой строке, данное значение указывается в названии дисплея 1602. По аналогии 20 символов и 4 строки это LCD 2004. Также есть и другое разрешение дисплея 0802, но у меня, к сожалению, нет таких маленьких дисплеев и продемонстрировать их я вам не смогу. Но работа с ними ничем не отличается от старших братьев.

Также можно выделить разный тип подсветки. Существуют дисплеи: синий фон белые буквы, зелёный фон чёрные буквы, чёрный фон белые буквы и проч. Я буду использовать, с синим фоном и белыми буквами.
Для урока понадобится:
LCD 1602 и LCD 2004 подключение к Ардуино.
Существует несколько вариантов подключения LCD 1602 или LCD 2004 к Ардуино по 4-бит или 8-бит параллельному интерфейсу. При таком подключении у нас будет задействовано 6 или 10 контактов Arduino, что неприемлемо при использовании Arduino UNO, Arduino NANO и подобных отладочных плат, в которых не так и много пинов, которые можно использовать.
Схема подключения LCD 1602 к Arduino UNO.

Чтобы уменьшить количество проводов для подключения LCD 1602, используется плата PCF8574, которая позволяет подключить дисплей по I2C. Что уменьшает количество проводов до 2. Сегодня в уроке будем использовать подключение LCD 1602 и LCD 2004 к Arduino по I2C.

Схема подключения LCD 1602 к Arduino UNO по I2C с использованием PCF8574.

LCD 2004, LCD 1602 библиотека.
Для работы с дисплеем используется библиотека LiquidCrystal. Но в связи с тем, что мы будем использовать подключение LCD 1602 и LCD 2004 к Arduino по I2C. Библиотеку использовать будем другую LiquidCrystal_I2C. Которую можно скачать с GitHub. Или внизу статьи, в разделе «Файлы для скачивания».
После того как вы скачали архив с библиотекой. Заходим в Arduino IDE, открываем вкладку «Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку…»

В открывшемся окне выбираем скаченный архив. После чего вы увидите, что библиотека успешно установлена.

Сейчас можно посмотреть примеры, которые установились с библиотекой LiquidCrystal_I2C. Я же данные примеры немного изменю и подпишу, что означает каждая строка кода.

Описание библиотеки LiquidCrystal_I2C.

Перед тем как начать работать с дисплеем LCD 2004, LCD 1602 давайте рассмотрим библиотеку LiquidCrystal_I2C. Ниже приведены основные функции, которые необходимы для работы с дисплеем.
print(data); // вывести (любой тип данных) setCursor(x, y); // курсор на (столбец, строка) clear(); // очистить дисплей home(); // аналогично setCursor(0, 0) noDisplay(); // отключить отображение display(); // включить отображение blink(); // мигать курсором на его текущей позиции noBlink(); // не мигать cursor(); // отобразить курсор noCursor(); // скрыть курсор scrollDisplayLeft(); // подвинуть экран влево на 1 столбец scrollDisplayRight(); // подвинуть экран вправо на 1 столбец backlight(); // включить подсветку noBacklight(); // выключить подсветку createChar(uint8_t, uint8_t[]); // создать символ createChar(uint8_t location, const char *charmap); // создать символ
Пример кода вывода текста на LCD 1602 с использованием библиотеки LiquidCrystal.
Не смотря на то, что урок ориентирован на использование подключения дисплея по I2C. Рассмотрим пример подключения дисплея LCD 1602 подключённого по 4-битной параллельной шине. Для работы с дисплеем LCD2004 нужно изменить пятую строчку кода на lcd.begin(20, 4);
#include // Подключаем библиотеку LiquidCrystal для работы с LCD дисплеем LiquidCrystal lcd(2,3,4,5,6,7); // Объявляем объект библиотеки, указывая выводы дисплея (RS,E,D4,D5,D6,D7) // Если используется 8 проводов шины данных, то указываем (RS,E,D0,D1,D2,D3,D4,D5,D6,D7) void setup() < // lcd.begin(16, 2); // Инициируем работу с LCD дисплеем, указывая количество (столбцов, строк) lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка) lcd.print("LCD2004"); // Выводим текст "LDC1602", начиная с установленной позиции курсора lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка) lcd.print("arduino-tex.ru"); // Выводим текст arduino-tex.ru, начиная с установленной позиции курсора >// // void loop()<> // Код внутри функции loop выполняется постоянно. Но так как мы выводим статичный текст, нам достаточно его вывести 1 раз при старте, без использования кода loop
Пример вывода текста на LCD 2004, LCD 1602 с использованием библиотеки LiquidCrystal_I2C.
#include // Подключаем библиотеку для работы с LCD дисплеем по шине I2C LiquidCrystal_I2C lcd(0x27,16,2); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2) // Если надпись не появилась, замените адрес 0x27 на 0x3F void setup() < // lcd.init(); // Инициируем работу с LCD дисплеем lcd.backlight(); // Включаем подсветку LCD дисплея lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка) lcd.print("LCD"); // Выводим текст "LCD", начиная с установленной позиции курсора lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка) lcd.print("arduino-tex.ru"); // Выводим текст arduino-tex.ru, начиная с установленной позиции курсора >// // void loop()<> // Код внутри функции loop выполняется постоянно. Но так как мы выводим статичный текст, нам достаточно его вывести 1 раз при старте, без использования кода loop

Не смотря на то, что в примере будем использовать подключение LCD 1602 по I2C и библиотеку LiquidCrystal_I2C. Код не сильно изменится. Для работы с дисплеем LCD2004 нужно изменить 3 строку на LiquidCrystal_I2C LCD (0x27,20,4);

Выводим время прошедшее после старта на дисплей LCD1602 подключённый по шине I2C.
#include // Подключаем библиотеку для работы с LCD дисплеем по шине I2C LiquidCrystal_I2C lcd(0x27,20,4); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 20, количество строк = 4) // uint8_t tim_D, tim_H, tim_M, tim_S; // Объявляем переменные для хранения дней, часов, минут и секунд. uint32_t tim; // Объявляем переменную для хранения общего количества времени прошедшего после старта. // Если надпись не появилась, замените адрес 0x27 на 0x3F void setup() < // lcd.init(); // Инициируем работу с LCD дисплеем lcd.backlight(); // Включаем подсветку LCD дисплея lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка) lcd.print("LCD"); // Выводим текст "LCD", начиная с установленной позиции курсора lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка) lcd.print("arduino-tex.ru"); // Выводим текст arduino-tex.ru, начиная с установленной позиции курсора >// // void loop() < // // Получаем время прошедшее после старта: tim = millis() / 1000; // Получаем общее количество секунд (максимум 4'294'967 сек ≈ 49,7 дней). tim_S = tim % 60; // Получаем секунды: остаток от деления всех секунд на минуту (60 сек). tim = (tim-tim_S) / 60; // Получаем общее количество минут. tim_M = tim % 60; // Получаем минуты: остаток от деления всех минут на час (60 мин). tim = (tim-tim_M) / 60; // Получаем общее количество часов. tim_H = tim % 24; // Получаем часы: остаток от деления всех часов на день (24 час). tim_D = (tim-tim_H) / 24; // Получаем общее количество дней. // Выводим время прошедшее после старта: if (millis()%1000<100)< // Условие выполняется в течении 100 первых миллисекунд каждой новой секунды. delay(100); lcd.setCursor(2, 2); // Устанавливаем курсор в позицию (0 столбец, 0 строка). lcd.print("Days: "); // Выводим текст. if(tim_D<10)// Выводим 0 перед количеством дней. lcd.print(tim_D ); // Выводим количество дней. lcd.setCursor(0, 3); // Устанавливаем курсор в позицию (0 столбец, 1 строка) lcd.print("Time: "); // Выводим текст. if(tim_H <10)// Выводим 0 перед количеством часов. lcd.print(tim_H ); // Выводим количество часов. lcd.print(':' ); // Выводим символ. if(tim_M <10)// Выводим 0 перед количеством минут. lcd.print(tim_M ); // Выводим количество минут. lcd.print(':' ); // Выводим символ. if(tim_S <10)// Выводим 0 перед количеством секунд. lcd.print(tim_S ); // Выводим количество секунд. > // > //
Если дисплей LCD 2004, LCD 1602 не отображает текст.
После того как вы всё сделали, подключили дисплей. Загрузили код. На дисплее могут не отображаться символы. Что может быть не так:
- Если дисплей показывает чёрные прямоугольники или пустой экран – нужно отрегулировать яркость дисплея, это синий квадратный регулятор на задней стороне платы.
- Если кроме чёрных прямоугольников и пустого экрана ничего не видно – меняем адрес в программе. Их всего два: 0x27 и 0x3F.
- Если все равно не работает – проверяем подключение и повторяем сначала.
На этом урок про дисплеи LCD 2004, LCD 1602 заканчивается. В следующем уроке рассмотрим, какие символы есть в прошивке дисплея и как их вывести, а также создадим свои символы.
Появились вопросы или предложения, не стесняйся, пиши в комментарии!
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке.
Понравилась статья? Поделитесь ею с друзьями:
LCD 1602 – подключение к Arduino

В этой статье рассмотрим подключение простенького LCD дисплея к Arduino, а также выясним, для чего он предназначен и каковы особенности написания кода для работы с ним.
Подключая какие-либо датчики и модули к Arduino или к другим платформам, мы часто используем монитор порта для вывода данных.
Например, если мы подключили датчик температуры из семейства DHT или подключили какой-нибудь ультразвуковой модуль для измерения расстояния до ближайшего объекта, то данные с них (здесь – это температура и влажность воздуха или расстояние в сантиметрах) выводятся именно на экран компьютера.
Но ведь, если вы сделали метеостанцию на Arduino (пусть даже самую простую), вам непременно захочется сделать ее автономной и поместить в каком-нибудь отдельном месте дома или квартиры, чтобы следить за показаниями. В этом случае постоянно держать под рукой компьютер не получится.
На помощь придет обычный дисплей, который позволит нам выводить данные напрямую на экран, и тогда не придется постоянно заходить в монитор порта.
Для реализации проекта из этой статьи нам потребуются следующие компоненты:
- Arduino Uno R3
- LCD 1602 16×2 – символьный I2C дисплей с голубой подсветкой
- Макетная плата на 400 точек
- Набор макетных проводов “папа-папа”
Обзор дисплея LCD 1602
Дисплей представляет собой достаточно небольшой (по меркам дисплеев) модуль, с примерными размерами 8×3 см, закрепленный на небольшой подложке с контактами для подключения.
К его основным достоинствам можно приписать низкую стоимость, четкое отображение, выдержка перепадов температур (от -20 до +70°C), широкий угол обзора, регулируемая контрастность и малые размеры, о чем говорилось ранее.

Данные на дисплее могут отображаться в формате 16×2 символов. Питание осуществляется с помощью напряжения в 5 В. Также на дисплее имеется светодиодная подсветка, что позволяет использовать его в темное время суток.
Подключение дисплея
Дисплей имеет 16 контактов для подключения:
Также для подключения понадобится переменный резистор (потенциометр) на 10 кОм.
Все это подключается так, как на схеме ниже:
| 1 | GND (земля) |
| 2 | +5В питание |
| 3 | VO (установка контрастности) |
| 4 | RS (команды и данные) |
| 5 | RW (чтение и запись) |
| 6 | E (Enable) |
| 7-14 | (DB0…DB7) линия данных |
| 15 | A (плюс подсветки) |
| 16 | K (минус подсветки) |

После успешного подключения и подачи питания на Arduino дисплей загорится. А еще с помощью резистора вы можете менять яркость подсветки.
Как можно заметить, подключение довольно муторное, ибо занимает 9 пинов на плате Ардуино, что значительно снизит возможность платы в вашем проекте (особенно, если в нем присутствуют несколько модулей).
Для удобства подключения принято использовать интерфейс I2C. Благодаря данной шине число пинов, используемых на подключение дисплея, сводится к четырем.
Чаще всего такие дисплеи уже продаются с данной шиной, припаянной с обратной стороны, но вы также можете подключить этот интерфейс к экрану и самостоятельно, если изначально приобрели дисплей без I2C переходника.

Также желательно не снимать перемычку, на которую указывает желтая стрелочка. Она нужна для корректной работы модуля и для подсветки. Также в сам модуль i2c уже встроен резистор для регулировки контрастности и дополнительно подключать переменный резистор уже не нужно.
Подключение в Arduino IDE
Для работы дисплея используется встроенная в среду Arduino IDE библиотека LiquidCrystal.h. Если вы подключаете дисплей по i2c протоколу, то лучше используйте библиотеку LiquidCrystal_I2C.h.
Подключив данный модуль к Arduino, можно проверить его работоспособность, загрузив программный код из примеров, которые уже загружены в среду разработки. Путь расположения указан на картинке ниже:

Программа “HelloWorld” выводит текст в кавычках на дисплей и является самой простой для работы с дисплеем.

