0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Подключение дисплея 1602 lcd i2c. 1602 ардуино дисплей

Подключение дисплея 1602 lcd i2c. 1602 ардуино дисплей

Сегодня изучим LCD индикаторы. Иногда их ещё называют ЖК – жидкокристаллические экраны.

  • Рассмотрим LCD 1602 и LCD2004.
  • Два способа подключения. С помощью параллельной шины LCD и I2C.
  • Узнаем адрес в I2C на котором подключен экран используя сканер.
  • Протестируем дисплей на наличие или отсутствии русского шрифта.
  • Рассмотрим таблицу знакогенератора. Дисплейный модуль хранит в памяти две страницы знакогенератора. По умолчанию установлена нулевая страница.
  • Научимся создавать свои символы

В самом названии LCD 1602 и LCD2004 заложено количество символов в строке и количество строк.
Так в LCD 1602 – 16 символов в 2 строчках,
LCD2004 уже 20 символов в 4 строчках.
Ещё они отличаются цветом подсветки. Например, синяя или желтая подсветка.

Приступаем к изучению.
Сначала нам нужно узнать по какому адресу находится LCD дисплей. Для этого нам понадобится скетч Сканер I2C.

Характеристики дисплеев.

Характеристики
• Символов: 16
• Строк: 2
• Напряжение питания VCC,В: от 4.7 до 5.3
• Ток потребления ICC,мА: 1.5
• Размеры модуля, мм: 80x36x11;
• Размеры индикатора, мм: 64.5×14;
• Цвет точки: серый, позитивный;
• Цвет LED подсветки: желто-зеленый;
• Интерфейс: последовательный 8 бит.

Очень удобно пользоваться дисплеем с I2C адаптером. Если у вас простой дисплей, без модуля I2C, то вы можете купить модуль отдельно и припаять его к дисплею.
I2C адаптером — это преобразователь интерфейсов обеспечивающий обмен между параллельной шиной LCD и шиной I2C. И вместо 8 контактов на Ардуино вам понадобится всего 2, а к самой шине I2C можно подключить огромное число различных устройств.
Адрес адаптера хранится в энергонезависимой памяти.

Рассмотрим работу скетча Сканер I2C.
Сканер прослушивает все адреса и если будет найдено устройство подключённое к шине I2C то в монитор порта будет выведен адрес устройства который нужно запомнить и затем ввести в код для работы с этим устройством.

Для начала работы нужно установить библиотеку LiquidCristal_ITC. Как добавлять библиотеки мы уже много раз рассматривали. Если вы не знаете, то посмотрите предыдущие видео, там я подробно рассказывал как это делать. Загрузим скетч из архива. HelloWorld. Или из примера библиотеки.

Здесь указываем адрес устройства которое определил сканер. И какой у вас дисплей. 16 или 20 знаков.
Здесь мы инициализируем дисплей.
Включаем на нём подсветку.
Устанавливаем курсор на 3 знакоместо экрана, так как отсчёт ведётся с 0.
Выводим текст. Перемещаем курсор на 2 строку и 2 символ.
Выводим другую надпись.
Прошиваем контроллер и смотрим результат. Мы видим, что обе надписи вывелись на экран и именно там где мы и хотели.

Теперь попробуем вывести надпись на русском языке. То есть кириллицей. Для этого закоментируем эти строки и расскомментируем эти. Прошиваем Ардуино и видим непонятные зюки. Это потому, что наш дисплей не поддерживает русскую кодировку. Так как там не прошиты русские символы.

Для того что бы выводить текст у вас должна быть установлена библиотека LCD 16 02 RUS ALL
По моему мнению – это самая лучшая библиотека для вывода кириллицы на экран. Она работает с разными дисплеями с 16 и 20 символами и с подключением по I2C и прямым подключением.
Если вы уже установили уту библиотеку, то просто меняем заголовочный текст в скетче на этот.
Этим мы подключаем библиотеку и указываем адрес устройства и тип дисплея.
Больше ничего менять не надо.
Теперь прошиваем и видим, что проблема с кодировкой исчезла. Теперь можно выводить любой текст на экран.

Теперь давайте рассмотрим что же такое кодировка.
В памяти дисплея прошиты символы к которым можно обратиться из программы по определённым адресам.
Например запустив этот скетч вы можете узнать, поддерживает ли ваш дисплей русскую кодировку или нет.
А ещё есть память ОЗУ в которую можно прошить 8 своих символов. Эти места находятся в первом столбце таблицы. Как создавать свои символы мы рассмотрим чуть позже.

Каждый раз когда вы пишете в своём скетче текст вы обращаетесь к этим символам по этим адресам. И если бы вы не использовали библиотеку, то вам пришлось бы писать эти адреса. Что как видно совсем не просто. Вот всю эту грязную работу выполняет за вас библиотека.
А здесь разработчиками были оставлены 2 пустых столбца. Зачем я не знаю. Лучше бы они туда русский шрифт разместили.
А здесь размещены символы которые не входят в основную кодировку. Вот она и меняется производителем в зависимости от страны использования. И если ваш дисплей не показывает здесь русского алфавита, то значит у него нет поддержки русских текстов. Но мы сможем обойти эти ограничения используя библиотеку.

Это скетч из примеров библиотеки. Как видим разработчиками были созданы символы сердце, смайлик, и человечек. Дальше я покажу как создавать свои символы. Не забудьте, в скетче, одновременно, можно использовать до 8 символов. Но это можно обойти, если в процессе выгружать из памяти уже не нужные символы и загружать новые.

Читайте так же:
Как регулировать напряжение и ток в зарядном устройстве для

Для создания символов будем использовать эту программу. Если вам она не понравилась, то можете найти другую, их много.
Заходим и настраиваем программу. Здесь ничего сложного. Главное указать, что у вас Ардуино, и выбрать I2C.
Вам создадут скетч, который вы можете скопировать и разместить на своей странице. Не забудьте вставить свой адрес и тип дисплея.
Теперь нащёлкиваем свой символ и копируем.

Открываем свой скетч и вставляем скопированный код. Ещё раз проверяем адрес и тип дисплея.
Компилируем и получаем ошибку. Это из-за того, что код всё равно скомпилировался для парцелльного подключения. Исправляем эту строчку.
Еще раз прошиваем. Теперь мы видим символ на экране, но у нас не включена подсветка. Возвращаемся и включаем подсветку. Прошиваем и вот теперь всё хорошо.

Теперь попробуем создать анимированный символ. Для работы с устройствами нам часто приходится использовать батарейки. Давайте сделаем символ который будет показывать значение остаточного напряжения на батарейке. Ну, то есть на сколько она разряжена. Для этого создадим несколько вариантов символов батарейки. От почти разряженной до полностью заряженной. После создания каждого варианты мы копируем код. Теперь нам не надо копировать весь код, а только сам массив.
Единственное, то надо делать – это давать массиву различные имена. Я буду прибавлять каждому имени по 1.
Также в сетапе копируем строку вывода символа. И так же меняем названия.
Я сделал 4 символа, но можно было бы и больше.
Теперь прошиваем скетч и смотрим что получилось. И видим, что батарейка вывелась на экран, но показан только последний символ. Символ полностью заряженной батарейки.
Давайте скопируем весь код и поместим его в луп. Пусть выполняется без конца.
И поставим небольшие задержки после каждого вывода символа, а иначе мы не заметим изменений.
Прошиваем и видим, что что-то не то.
А всё потому, что я при копировании захватил лишнее. Вернём это обратно в сетап.
Прошиваем.
Видим, что теперь всё работает как надо. И батарейка постепенно заполняется. Если вставить каждый символ в определённое место программы, отвечающее за разряд батарейки, то можно видеть на сколько разряжена батарейка.

А теперь давайте напишем небольшой код для вывода на экран. До этого мы выводили только статичный текст. Например давайте сделаем секундомер. Этот скетч будет прибавлять по 1 каждую секунду.
Выводить будем всё в одной строке.
Слово Секундомер будем выводить начиная с первого знака, а сам счётчик начиная с 13 знакоместа. Не забываем, что счёт идёт с 0.
Прошиваем. Но скетч нам возвращает ошибку. Это всё потому, что мы пытались вывести на экран цифру. То есть результат имеющий тип int. А на экран можно выводить только текстовую информацию.
Переведём int в string. Сделаем из цифры текст.
Теперь скетч прошился без ошибок и на экране мы видим надпись Секундомер и меняющиеся цифры с частотой в 1 секунду.
А это один из примеров входящих в библиотеку. На этом индикаторе можно делать бегущие строки.
Для этого в библиотеке есть различные функции. Мы их рассмотрим дальше в видео.
Кстати вот так я подключил 4 строчный индикатор на 20 символов без шины i2c.

А теперь давайте рассмотрим примеры работы с курсором.
Для того чтобы увидеть курсор его надо включить. Курсор может иметь два вида. В виде подчёркивания и как мигающий прямоугольник. Устанавливаем курсор на 9 знакоместо.
Прошиваем и видим курсор по середине экрана.
Теперь изменим тип курсора с подчёркивания на мигающий прямоугольник. Чтобы отключить, надо набрать ноублинк. Прямоугольник пропадёт, а подчёркивание останется до тех пор пока не отключим курсор.

Теперь немного познакомимся с функциями библиотеки. Я покажу только основные из них.
Например можно выводить текст справа на лево. А вот тут произошёл обломс. Русская библиотека не работает с функциями. Поэтому будем работать с основной библиотекой.
Загружаем пример HELLO WORLD из библиотеки Liquid Crystal i2c.

Снова вставляем выводить текст справа на лево. И наш текст убежал за пределы экрана. Так как он вывелся с 4 знакоместа и ушёл вправо. Изменяем начало текста. Я забыл и написал с 16 места, забыв что счёт идёт с нуля. Поэтому первый символ стал за границы экрана. Исправил на 15.
Теперь мы получили текст справа на лево, начинающийся с крайней правой точки первой строки.
А теперь для сравнения добавим этот же текст, но с лево на право.

Давайте сдвинем все тексты на экране на 1 символ вправо. Видим, что у нас пропал первый символ первой строки, так как всё передвинулось вправо.
Ещё есть возможность скрыть весь текст на экране не удаляя его и не очищая экран. Теперь размещу функцию показать всё на дисплее в середину текста. Как можно увидеть, часть экрана показать нельзя. Только или скрыть весь экран или показать весь экран.

Ну и в конце покажу как я подключил 4 строчечный дисплей без i2c. Подстроечным резистором можно регулировать яркость и контрастность экрана, добиваясь нужной яркости.
И покажу как смотрится таблица символов на этом экране. Я вывел только основную страницу.
На этом я заканчиваю этот большой урок про LCD дисплеи.

Читайте так же:
Как отрегулировать подсветку монитора

Характеристики I2C адаптера.

Характеристики
• Напряжение питания: 5 В.
• Потребляемый ток: до 6 мА.
• Интерфейс: I2C.
• Скорость шины I2C: 100 кбит/с.
• Адрес на шине I2C: устанавливается программно (по умолчанию 0x09).
• Уровень логической 1 на линиях шины I2C: 3,3 В (толерантны к 5 В).
• Рабочая температура: от -20 до +70 °С.
• Габариты: 41,91 х 17,15 мм (1650 x 675 mil).
• Вес: 6 г.

Какие бывают дисплеи для Ардуино и как их подключить

Микроконтроллеры позволяют сделать любые системы автоматизации и мониторинга. Но для взаимодействия техники и человека нужны как устройства ввода – различные кнопки, рычаги, потенциометры, так и устройства вывода – световые индикаторы (лампочки), различные звуковые сигнализаторы (пищалки) и наконец дисплеи. В этой статье мы рассмотрим символьные дисплеи для Arduino, как их подключить и заставить работать.

Какие бывают дисплеи для Ардуино и как их подключить

Содержание статьи

Виды дисплеев

Дисплеи можно разделить на:

Сегментные (такие, как на цифровых часах);

Сегментные используются для индикации простых величин, например: температура, время, количество оборотов. Такие используются в калькуляторах и на бюджетной бытовой технике и по сей день. Информация выводится путем засвечивания определенных символов.

Они могут быть как жидкокристаллическими, так и светодиодными. Алфавитно-цифровые дисплеи можно встретить на старой бытовой технике, игрушках, промышленной технике и прочем. Их еще называют знакосинтезирующими, текстовыми, символьными. Состоят из набора крупных пикселей. Могут быть выполнены по LCD, TFT и OLED-технологии.

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

Знакосинтезирующие дисплеи

Дисплеи этого вида могут одновременно отображать определенное количество символов, ограниченное геометрическими размерами. Маркируются они по такому образцу:

Где первые две цифры – количество символов в строке, а вторая пара – количество строк. Таким образом дисплей с названием 1602 может отображать одновременно 2 строки по 16 символов.

По типу ввода данных различают дисплеи:

С параллельным вводом данных;

С вводом данных по протоколу I2C.

Параллельный ввод данных предполагает передачу 8 или 4-битных слов по 10 или 6 выводам соответственно (рис. ниже – схема подключения для управления 4 битами). Кроме данных на дисплей подаётся питание. Учитывайте это при проектировании, в противном случае вам может не хватить пинов платы Ардуино.

Схема подключения дисплея к Ардуино

Передача данных на дисплей с помощью I2С займет 4 пина вашей Arduino, 2 из которых питание, а 2 – данные. Но подробнее рассмотрим этот вопрос немного ниже.

Среди отечественных производителей можно выделить фирму МЭЛТ. Среди продукции, которой есть целый ряд различных дисплеев. Например, ниже изображен дисплей с маркировкой 20S4, по аналогии с предыдущей рассмотренной, это говорит нам о том, что он отображает 4 строки по 20 знаков.

Дисплей 20S4

Он построен на контроллере КБ1013ВГ6, от ОАО «АНГСТРЕМ», который аналогичен HD44780 фирмы HITACHI и KS0066 фирмы SAMSUNG. На которых построены подавляющее большинство китайских дисплеев. Кстати он, как и дисплеи на перечисленных чипах поддерживает стандартную библиотеку параллельного управления Arduino IDE, но о ней позже.

Разные виды дисплеев для использования Ардуино

Знакосинтезирующие дисплеи бывают с подсветкой и без неё, также могут отличаться цветом изображаемых символов. Яркость подсветки и контрастность изображения обычно регулируется. Ниже приведет пример схемы из даташита, на упомянутый выше МЭЛТ.

Пример схемы из даташита МЭЛТ

Переменный резистор R и служит для регулировки яркости.

Подключение

Подключение будем рассматривать на дисплее типа 1602. В первую очередь обратите внимание на подписи выводов. Встречается два варианта, нумерации. На двух рисунках ниже всё нормально – от 1 до 16 вывода.

Выводы дисплея типа 1602

Выводы дисплея типа 1602

Отметим, что под VSS понимается земля. В остальном назначения выводов идентичны. Но часто можно встретить и нестандартную нумерацию:

Нестандартная нумерация выводов дисплея

Что вы видите? Контакты подписаны только 1, 14 и 15. Причем в неправильной последовательности. В остальном – 15 и 16 контакт всё также остались анодом и катодом подсветки, а 1 и 2 – общий контакт и плюс питания. Будьте бдительны и обращайте внимание при подключении на этот факт!

2 – (Vcc) «+» питания. Чаще всего это 5 вольт.

3 – регулировка контрастности символов. Осуществляется через потенциометр, установленный между «+» питания и этим контактом. Чем выше напряжение – тем меньше яркость и энергопотребление.

4 – (RS) Адресный сигнал. По наличию сигнала от ардуино на этом входе контроллер дисплея понимает, на линии данных сигнал команды (перемещение курсора, например) или кода символа для отображения.

5 – (E) разрешения доступа к данным. Когда здесь логическая «1» — дисплей выполняет команду или выводит символ.

6-14 – через эти пины обеспечивается параллельный ввод данных.

15 – (BLA) анод подсветки. Чтобы она зажглась на всю яркость – сюда подают +5В.

16 – (BLC) катод подсветки. Подключают к земле.

Один из примеров подключения к Ардуино в 4 битовом режиме мы рассмотрели выше. Теперь взгляните на схему подключения в 8 битовом режиме управления. Кстати вы могли заметить переменный резистор. Он и нужен для регулировки яркости подсветки, как было сказано ранее.

Схема подключения дисплея к Ардуино в 8 битовом режиме управления

Таким образом у вас оказываются занятыми половина входов платы Arduino UNO. Конечно если вы будете использовать MEGA – это будет не столь существенной проблемой, но всё же это не рационально, особенно если вы собираетесь подключать группу датчиков и клавиш управления.

Чтобы высвободить входы используйте конвертер I2C для LCD экрана (именно так он называется, и вы сможете найти его в магазинах под таким названием).

Конвертер I2C для LCD экрана

Если будете покупать этот модуль отдельно от дисплея не забудьте о расположении и нумерации выводов, которую мы рассмотрели ранее.

Гребёнка, изображенная снизу просто припаивается к дисплею, а четыре контакта на торце платы – подключаются к пинам Arduino, также есть третья группа из двух контактов (на фото сзади) – это включение подсветки, модели поставляются с установленной перемычкой.

Схема такого модуля выглядит следующим образом:

Схема модуля

А вот так он выглядит припаянным непосредственно к контактам дисплея. Большинство моделей продаются уже распаянными.

Подключение модуля к контактам дисплея

Однако для его использования вам нужно будет найти в сети библиотеку LiquidCrystal_I2C её нет в стандартном наборе актуального на момент написания статьи Arduino IDE.

Напомним цоколевку плат Arduino UNO, по нумерации контактов она в принципе совпадает и с Nano и некоторыми другими (для увеличения нажмите на рисунок).

Цоколевку платы Arduino UNO

Для работы по I2C нужно сформировать 2 информационных сигнала – SDA и SCL, обратите внимание в нижний правый угол рисунка. Эти выводы в ардуино совмещены с A4 и A5 аналоговыми входами.

Переназначить их вы на другие выводы не можете.

Тогда монтажная схема подключения будет иметь вид:

Схема подключения экрана к Ардуино через конвертер

Согласитесь, проводов намного меньше! От ардуино к дисплею идут всего 4 провода. А сигнальных пина использовано всего два!

Но просто подключить у вас ничего не получится вы должны знать адрес устройства, для этого есть еще одна группа контактов, где адрес задаётся с помощью перемычек. Это указывается в инициализирующей команде соответствующей библиотеки, об этом далее.

Конвертер I2C для LCD экрана

Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств

Программа

Естественно нам нужен какой-то скетч, который может показывать изображение на символьном дисплее. Если вы хотите «напрямую» работать с дисплеем – придется изучить даташиты и таблицы символов на каждое конкретное изделие. Но Ардуино была создана для простого и быстрого прототипирования электронных устройств. Поэтому мы пойдем другим путём и воспользуемся благами цивилизации. Мы уже упомянули, что в стандартном наборе библиотек в Arduino IDE есть готовое решение для работы с LCD-дисплеями. Найти его можно здесь:

Подключение библиотеки

Кстати после нажатия строка с объявлением о подключении библиотеки появляется автоматически.

Строка с объявлением о подключении библиотеки

Также в Arduino IDE есть несколько примеров для работы с дисплеем. Они отражают базовые операции и функции.

Примеры для работы с дисплеем

Рассмотрим простейший «Хэлоу ворд». Пример полностью совпадает с тем, что есть в стандартном наборе IDE, я лишь перевёл текст комментариев на русский язык. Обратите внимание – это пример работы в 4-битном режиме.

Простая программа

Работа с I2C практически аналогична:

Программа для работы с I2C

Обратите внимание, что в этом примере кода первой командой указан несколько размер дисплея, количество строк и символов, но и его I2C адрес. А именно – 0x27, что соответствует отсутствующим перемычкам. Вообще это нужно для того, чтобы подключить на два сигнальных провода несколько дисплеев (8 штук).

Официальную документацию к библиотеке liquidcrystal с примерами и пояснениями вы сможете найти на официальном сайте Arduino:

Полезные ссылки

Подборка видеоуроков по теме

Чтобы вам не было сложно освоить навык работы с дисплеем мы сделали подборку видеоуроков по этой теме.

Заключение

Оказывается, подружить плату Arduino и дисплей совсем не сложно. Вам доступна возможность как параллельной передачи данных, так и последовательной с помощью шины I2C, что выбрать – решать вам, как по удобству, так и по требованиям к быстродействию системы в целом. Пишите в комментариях какие вопросы нужно рассмотреть подробнее и что конкретно вы бы хотели видеть по теме микроконтроллеров!

Еще больше информации про Ардуино и особенности его использования в различных схемах смотрите в электронной книге — Ардуино для чайников. Иллюстрированное практическое руководство.

Совсем недавно вышел новый курс Максима Селиванова «Программирование дисплеев Nextion». Это «arduino» в мире дисплеев с сенсорным экраном. Но, информации по нему очень мало.

Дисплей Nextion

Что такое дисплеи Nextion? Если кратко, то эти дисплеи представляют собой программируемые дисплеи с тачскрином и UART для создания самых разных интерфейсов на экране. Для программирования используется очень удобная и простая среда разработки, которая позволяет создавать даже очень сложные интерфейсы для различной электроники буквально за пару вечеров! А все команды передаются через интерфейс UART на микроконтроллер или компьютер.

Здесь есть все что бы начать работать с дисплеями Nextion на новом уровне: Программирование дисплеев NEXTION

Максим Селиванов — автор видеокурсов «Программирование микроконтроллеров для начинающих», «Программирование микроконтроллеров на языке С», «Создание устройств на микроконтроллерах». Подробее о нем и его видеокурсах смотрите здесь — Обучение программированию и созданию устройств на микроконтроллерах

Любите умные гаджеты и DIY? Станьте специалистом в сфере Internet of Things и создайте сеть умных гаджетов!

Записывайтесь в онлайн-университет от GeekBrains:

Обучение Интернет вещей и современные встраиваемые системы

Изучить C, механизмы отладки и программирования микроконтроллеров;

Получить опыт работы с реальными проектами, в команде и самостоятельно;

Получить удостоверение и сертификат, подтверждающие полученные знания.

Starter box для первых экспериментов в подарок!

После прохождения курса в вашем портфолио будет: метостанция с функцией часов и встроенной игрой, распределенная сеть устройств, устройства регулирования температуры (ПИД-регулятор), устройство контроля влажности воздуха, система умного полива растений, устройство контроля протечки воды.

Вы получите диплом о профессиональной переподготовке и электронный сертификат, которые можно добавить в портфолио и показать работодателю.

#34. ЖК-дисплей LCD 1602 и LCD 2004. Подключение к Arduino. Основы.

.#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 1602или LCD 2004 или Arduino NANO

LCD 1602 и LCD 2004 подключение к Ардуино.

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

Схема подключения LCD 1602 к Arduino UNO.

Схема подключения LCD 1602 к Arduino UNO.

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

 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 библиотеку…»

LCD 2004, LCD 1602 библиотека.

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

установились с библиотекой LiquidCrystal_I2C

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

примеры, которые установились с библиотекой LiquidCrystal_I2C

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

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

Перед тем как начать работать с дисплеем LCD 2004, LCD 1602 давайте рассмотрим библиотеку LiquidCrystal_I2C. Ниже приведены основные функции, которые необходимы для работы с дисплеем.

Пример кода вывода текста на LCD 1602 с использованием библиотеки LiquidCrystal.

Не смотря на то, что урок ориентирован на использование подключения дисплея по I2C. Рассмотрим пример подключения дисплея LCD 1602 подключённого по 4-битной параллельной шине. Для работы с дисплеем LCD2004 нужно изменить пятую строчку кода на lcd.begin(20, 4);

Пример вывода текста на LCD 2004, LCD 1602 с использованием библиотеки LiquidCrystal_I2C.

Пример вывода текста на LCD 2004, LCD 1602 с использованием библиотеки LiquidCrystal_I2C.

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

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

Выводим время прошедшее после старта на дисплей LCD1602 подключённый по шине I2C.

Выводим время прошедшее после старта на дисплей LCD1602 подключённый по шине I2C.
Если дисплей LCD 2004, LCD 1602 не отображает текст.

После того как вы всё сделали, подключили дисплей. Загрузили код. На дисплее могут не отображаться символы. Что может быть не так:

  • Если дисплей показывает чёрные прямоугольники или пустой экран – нужно отрегулировать яркость дисплея, это синий квадратный регулятор на задней стороне платы.
  • Если кроме чёрных прямоугольников и пустого экрана ничего не видно – меняем адрес в программе. Их всего два: 0x27 и 0x3F.
  • Если все равно не работает – проверяем подключение и повторяем сначала.

На этом урок про дисплеи LCD 2004, LCD 1602 заканчивается. В следующем уроке рассмотрим, какие символы есть в прошивке дисплея и как их вывести, а также создадим свои символы.

Появились вопросы или предложения, не стесняйся, пиши в комментарии!

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Выводим температуру и влажность помещения на LCD I2C дисплей. Подключение датчика DHT11 к Arduino UNO

Я продолжаю свое увлечение электроникой. Буквально вчера пришла посылка с моим набором для изучения Arduino UNO — конечно же сразу захотелось что-нибудь собрать.

Немного поигравшись с мигающими светодиодами, я решил протестировать остальное содержимое набора. Выбор пал на ЖК-дисплей и датчик температуры и влажности DHT11.

Очень хотелось вывести показания датчика не только на экран монитора, но и на дисплей. Убив несколько часов на поиск и изучение статей по данной теме, я так и не смог заставить все работать нужным образом. Все готовые решения содержали ошибки или недомолвки, либо применялись другие компоненты — дисплей показывал что угодно, но только не температуру и влажность. Поскольку метод «с наскока» не удался, пришлось не просто копировать готовый код, а разбираться в том, как он работает. Но в итоге я все же смог получить нужную программу (ссылка на скачивание в конце статьи) и загрузить ее в микроконтроллер, ура:

Датчики температуры и влажности подключенные к Arduino

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

Датчик DHT11 очень неточный, поэтому использовать его в качестве источника информации для каких-то серьезных систем я бы не советовал, но для учебных целей он очень даже подходит.

Ниже я подробно расскажу как повторить данную конструкцию (если кому-то захочется) и приведу текст скетча для Arduino IDE.

Начнем с дисплея:

LCD I2C дисплей

На картинке приведен вид спереди и сзади. Как можно увидеть, мой экземпляр снабжен интерфейсом I2C (маленькая платка на задней стороне). Данный интерфейс очень упрощает подключение дисплея к Arduino — нужно использовать всего 4 контакта:

GRD — минус питания («земля»)
VCC — питание +5V
SDA — линия данных
SLC — линия синхронизации

Без I2C подключение LCD дисплея осуществляется несколько сложнее.

Датчик DH11 так же имеет 4 контакта, при этом один из них вообще не используется. Мой дачик уже расположен на платке, на которой сразу установлен дополнительный резистор (который требуется для нормальной работы датчика) и выведено 3 ножки:

датчик влажности dht11

Левая подписана как S — с нее поступает сигнал, правая — «-», ну а средняя получается «+» на нее подается питание.

Итак, собираем схему:

схема подключения датчиков в Arduino Uno

NB! Перед монтажом схемы и внесением в нее каких-либо изменений обязательно отключайте питание всех элементов, иначе можно их банально сжечь — потом будет жалко.

1) Подключаем датчик:

  • S на A0
  • + на +5V
  • — на GND

2) Подключаем LCD дисплей:

  • SDA на A4
  • SLC на A5
  • VCC на +5V (на Arduino UNO такой pin всего один и там уже обосновался провод питания идущий от датчика, поэтому лучше соединить VCC дисплея с «+» датчика (например джампером) или использовать для одного из устройств внешнее питание)
  • GND на GND Arduino («земли» на UNO как раз две, так что тут никаких проблем)

Сборка на этом закончена, осталось прошить микроконтроллер.
Вот код скетча:

В данном коде используются библиотеки DHT и LiquidCrystal_I2C, которые не входят в стандартный пакет Arduino IDE. В сети множество разных библиотек с такими же названиями. И несмотря на их схожесть, не со всеми версиями данный код работает. Чтобы вам не тратить свое время и нервы на поиск рабочего варианта, я прикладываю к данной статье архив, в котором содержатся данные библиотеки и сам скетч для Arduino IDE. Библиотеки надо разархивировать и поместить в папку C:Program Files (x86)Arduinolibraries после чего перезапустить программу Arduino IDE.

Я думаю, что опытные разработчики найдут к чему придраться в данном коде (например, здесь нет обработчика ошибок), но на данном этапе, для меня главное, что он работает. Если вы будете применять детали схожие с моими, должно заработать и у вас. Конечно, рекомендую не просто скопировать, но и попытаться понять за что отвечает каждая строчка кода (комментарии в коде сильно в этом помогут).

Быстрые результаты в любом деле это не цель, а всего лишь мотивация, которая должна подталкивать вас копать глубже. Помните об этом! =)

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector