Arduino и дисплей LCD1602
Описание
Классический LCD дисплей, раньше такие стояли в кассовых аппаратах и офисной технике.
- Бывают разного размера, самый популярный – 1602 (16 столбцов 2 строки), есть ещё 2004, 0802 и другие. В наборе идёт 1602.
- Снабжён отключаемой светодиодной подсветкой. Существует несколько вариантов, например синий фон белые буквы, зелёный фон чёрные буквы, чёрный фон белые буквы и проч. В наборе идёт с зелёным фоном и чёрными буквами.
- Сам по себе требует для подключения 6 цифровых пинов, но китайцы выпускают переходник на шину I2C на базе PCF8574, что сильно упрощает подключение и экономит пины. В наборе идёт дисплей с припаянным переходником.
- На переходнике также распаян потенциометр настройки контрастности (синий параллелепипед с крутилкой под крестовую отвёртку). В зависимости от напряжения питания нужно вручную подстроить контрастность. Например при питании платы от USB на пин 5V приходит
4.7V, а при внешнем питании от адаптера – 5.0V. Контрастность символов на дисплее будет разной!
Подключение
Дисплей подключается по шине I2C, выведенной на пины:
- Arduino: SDA – A4, SCL – A5
- Wemos: SDA – D2, SCL – D1
- Питание: 5V в обоих случаях
Библиотеки
Для этого дисплея существует несколько библиотек, я рекомендую LiquidCrystal_I2C от Frank de Brabander. Библиотека идёт в архиве к набору, а также её можно скачать через менеджер библиотек по названию LiquidCrystal_I2C и имени автора. Репозиторий на GitHub.
Пример вывода
При первой работе с дисплеем нужно настроить контраст и определиться с адресом:
- Прошить пример “Демо”
- Если дисплей показывает чёрные прямоугольники или пустой экран – крутим контраст
- Если кроме чёрных прямоугольников и пустого экрана ничего не видно – меняем адрес в программе: 0х26 , 0x27 и 0x3F
- Снова крутим контраст, должно заработать
- Если не работает – проверяем подключение и повторяем сначала
- Примечание: в наборе должны идти дисплеи с адресом 0x27 , но может зависеть от партии!
Символы дисплея
В памяти дисплея содержится 255 символов, это английские буквы, стандартные символы и китайские буквы. Стандартные символы, такие как !@#$%&()* и так далее выводятся через print() , остальные можно вывести по их коду при помощи write() :
- Стрелка вправо – 126
- Стрелка влево – 127
- Символ градуса – 223
- Прямоугольник – 255
Свои символы
Библиотека поддерживает создание “своих” дополнительных символов размером 5х7 точек, можно воспользоваться онлайн-генератором кодов символов – ссылка. Для компактности рекомендую переключить его в HEX. Вот так будет выглядеть “символ” крестик: byte myX[] = <0x00, 0x00, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x00>;
Дисплей имеет 8 ячеек под сторонние символы, добавляются они при помощи createChar(номер, массив) , где номер – от 0 до 7, а массив – имя массива с данными, которое мы создали для символа. Выводятся символы при помощи write(номер) .
Важный момент: после вызова createChar сбрасывается позиция вывода текста, нужно обязательно вызвать setCursor!
Важная информация по дисплеям
Данная информация относится ко всем дисплеям.
- Вывод данных на дисплей занимает время, поэтому выводить нужно либо по таймеру, либо по факту изменения данных.
- Очищать дисплей полностью не всегда целесообразно, иногда достаточно вывести новые значения поверх старых, либо частично очистить “пробелами”.
Урок 16. Подключение датчика DHT11 к Arduino UNO. Выводим температуру и влажность на LCD 1602 I2C дисплей
В этом уроке мы рассмотрим самый популярный датчик температуры DHT11. Научимся считывать показания датчика и выводить на LCD 1602 I2C дисплей.
Нам понадобится:
Для реализации проекта нам необходимо установить библиотеки:
Схема подключения:
Этом уроке к arduino uno будет подключено два модуля, датчик температуры и влажности DHT11 и символьный дисплей LCD1602 IIC/I2.
1) Датчик DHT11 с помощью которого будем получать данные о температуре и влажности окружающей среды, подключается следующим образом.
Описание подключения DHT11 к Arduino:
DHT11 | Arduino |
---|---|
1 контакт | 5V |
2 контакт | Pin 2 |
3 контакт | Через резистор 10 kOm к 5V |
4 контакт | GND |
2) Теперь подключаем символьный дисплей LCD1602 IIC/I2C к Arduino uno, на который будет выводиться информация о температуре и влажности.
Arduino | LCD1602 IIC/I2C | Цвет проводов на фото |
GND | GND | Черный |
5V | VCC | Красный |
A4 | SDA | Коричневый |
A5 | SCL | Серый Скетч: Не забудьте установить библиотеки указанные в начале урока. Демонстрация работы:
Вывод с DS18B20 на LCD дисплейЗадача
Базовые урокиПодключение
БиблиотекиПрограмма 1Для начала просто выведем температуру с датчика на дисплей. Программа 2Теперь будем выводить такую строку: “температура с момента запуска программы” -> “текущая температура”. Может быть полезным для исследования изменения температуры. Нам нужно завести переменную для хранения первого значения, назовём её prevT . При запуске программы запросим температуру с датчика, подождём, запишем результат в переменную и будем выводить на дисплей как в предыдущем примере: Также можно вывести время, прошедшее с момента запуска программы, например в формате часы:секунды.
Программа 3Следующая задача – опросить два термометра и вывести их текущие показания и разность.
Далее аналогично примеру one_pin_many_sensors записываем полученные адреса в массивы и создаём два датчика. Дальнейшая работа ведётся с двумя датчиками: Домашнее задание
Полезный пример?25 КомментариевПростой проект. Более того, мой первый. Чуть не наложил себе в руки из-за того что сделал всё чётко по инструкции, но на экране ничего не отображалось. Не буду описывать свои ухищрения, дело оказалось в настроечной крутилке позади экрана. Подкрутил и всё высветилось. Именно поэтому в самом начале статьи дана ссылка на базовый урок по дисплею Да мне ж быстрее-быстрее начать хотелось) б….. Ты мой герой. Чуть не прослезился. Спасибо родной. Мужики, значиться так. С Библиотекой microDS18B20 не хочет работать. Показывает температуру 0 градусов. С onewire (примеры) все хорошо. Причем месяц назад собирал, все работало. Подскажите, где косячу. Единственное что поменялось из условий – ядро и другой пк. Поставил gyvercor. Гугл говорит ставь резистор если 0, понятное дело ставил. Мультиметром тыкался все ок, напруга наваливает, все проходит и все контачит. Библа не отрабатывает. попробуй на стандартном ядре, вдруг гуверкор слишком быстрый. Микродс18б20 актуальной версии работает отлично, даже на есп8266 microDS18B20 не работает на GyverCore! починили, нужно обновить ядро и библу плохой контакт с подтягивающим резистором (у меня тоже такое было) на уно не работает пробовал перезагружать поэтому паять надо Алекс, почему в 1 примере 2 значения? потому что первое запрос температуры а второе получение Спасибо за подробный урок! Все сработало вместе с деталями из GyverKit PRO. Единственное, было бы классно для совсем новичков поизучать основы электрических законов. Что такое эти подтягивающие резисторы, почему они располагаются в схеме. Может быть добавлять в уроки принципиальную схему? Или ссылку на какой-то пакет с симуляцией электро деталей? базовые уроки по электронике будут. А резисторы – требование из документации к датчику =) Не понимаю в чём проблема. Упираюсь в это.. Скетч использует 5978 байт (19%) памяти устройства. Всего доступно 30720 байт. библиотеку переустанови и проверь точка запятые поставлены везде У меня такая штука была, при чём на одних картинках было нормально, на других сбой синхронизации (так вроде это называется, где-то нагуглил). Помогло заменой загрузчика на “Old Bootloader” Alex помоги прикрутить датчик без i2c. СПАСИБО. Как к этому скетчу прикрутить HC-SR04 чтоб работали в паре В примере 1 и 2 выводит температуру 2.00 вместо 20.00 или 24.00 в чем проблема? Разобрался сам, надо использовать библиотеку вместо Adblockdetector |