Подключение LCD 2004A к Arduino по шине I2C
03.03.2017 14:00, автор EW1ADF
Подключение дисплея с использованием шины I2C весьма удобно, так как требует для этого всего 2 линии передачи данных: SCL (serial clock) и SDA (serial data). На плате Arduino для этих целей используются аналоговые пины A5 и A4 соответственно.
Дисплей 2004A имеет 4 строки по 20 символов и внешне выглядит следующим образом:
Для подключения дисплея к шине I2C используется расширитель портов на микросхеме PCF8574.
Важно отметить, что плата расширителя имеет регулировку контрастности дисплея и требует обязательной настройки при первом включении.
Так как в данном случае совместно с платой Arduino использовался протошилд, то собранная схема выглядит так:
Чтобы проверить работу дисплея можно использовать программу, которая выводит основные символы ASCII.
Для этого необходимо определить адрес, по которому подключен дисплей с помощью скетча i2c_scanner, определяющим все устройства на шине I2C http://playground.arduino.cc/Main/I2cScanner
Загрузив данный скетч в Arduino наблюдаем результат его выполнения в мониторе порта:
Подключение и использование дисплея программно, осуществляется с помощью библиотеки LiquidCrystal_I2C https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library, которую необходимо скачать и распаковать в папку библиотек Arduino (C:\Program Files\Arduino\libraries).
Исходный код тестового скетча:
Результатом работы программы является последовательный вывод символов ASCII каждые 250 мс с последующей очисткой дисплея:
Чтобы быть всегда в курсе последних обновлений на сайте, подписывайтесь на наши паблики в социальных сетях:
Дизайн сайта — Yuri Serov, разработка — SergSXM © 2014-2022
Записки scdewt.
. самому себе на память
Arduino Pro Mini + i2c + lcd 2004 (20×4)
- Получить ссылку
- Электронная почта
- Другие приложения
Долгая и муторная эпопея подключения arduino к lcd по i2c закончилась победой.
Небольшой мануал на тему «как это сделать», так как информации в интернете много, а в целом не всегда все сразу получается. Начнем.
Шаг 1.
Подключаем дисплей как указано на картинке:
А именно: SDA к A4, SCL к A5, vcc к vcc, gnd к gnd. Желательно, конечно, отдельно подавать питание на дисплей, но питания от ардуино в данном случае хватит.
Возможно у вас могут быть перепутаны ноги SDA\SCL или A5\A4 на вашей плате или перепутаны подписи к ним. С этим позже разберемся.
Шаг 2.
Надо найти адрес нашего монитора. Так как на i2c шине может быть подключено до 127 устройств параллельно, то у каждого устройства должен быть свой адрес. Для этого воспользуемся i2c сканером. В интернете их великое множество, я использовал такой:
#include
void setup()
<
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println(«\nI2C Scanner»);
>
void loop()
<
byte error, address;
int nDevices;
Serial.println(«Scanning. «);
nDevices = 0;
for(address = 1; address
<
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
<
Serial.print(«I2C device found at address 0x»);
if (address
Serial.print(«0»);
Serial.print(address,HEX);
Serial.println(» !»);
nDevices++;
>
else if (error==4)
<
Serial.print(«Unknown error at address 0x»);
if (address
Serial.print(«0»);
Serial.println(address,HEX);
>
>
if (nDevices == 0)
Serial.println(«No I2C devices found\n»);
else
Serial.println(«done\n»);
delay(5000); // wait 5 seconds for next scan
>
Заливаем этот скетч в ардуино и запускаем. Ждем результата в консоли в виде
I2C Scanner
Scanning.
I2C device found at address 0x3F
Если все именно так и получилось в консоли, то значит все подключено правильно и ничего не перепутано. Записываем адрес монитора, в моем случае это 0x3F.
Если же у вас ошибки или сканирование просто повисло (более 5 секунд ничего не пишет), то скорее всего у вас перепутаны ноги SDA\SCL (ну или A5\A4), потому просто берем и меняем из местами либо на ардуино, либо на мониторе. Запускаем сканер еще раз!
Внимание! Будьте внимательны и убедитесь, что скетч заливается нормально, то есть arduino ide выдает «Загрузка завершена» без ошибок в консоли. Иначе пробуйте залить снова.
Шаг 3.
Пробуем что нибудь вывести на дисплее.
Для этого нам понадобится библиотека LiquidCrystal_I2C.
Ее можно поставить, как из Arduino Ide (Меню->Скетч->Подключить библиотеку->Управлять библиотеками), так и из Git. Я рекомендую вариант из Git — https://github.com/agnunez/ESP8266-I2C-LCD1602 . Это немного пропатченная библиотека.
Теперь берем скетч, типа этого:
#include
#include
// Set the LCD address to 0x27 for a 16 chars and 2 line display
// Arduino UNO => PIN 4 = SCL, PIN 5 = SDA
// NodeMCU Dev Kit => D1 = SCL, D2 = SDA
LiquidCrystal_I2C lcd(0x3F, 20, 4);
void setup()
<
// initialize the LCD
lcd.begin();
>
void loop()
<
lcd.print(«Hello LCD Line 1»);
lcd.setCursor(0, 1);
lcd.print(«Hello LCD Line 2»);
lcd.setCursor(0, 2);
lcd.print(«Hello LCD Line 3»);
lcd.setCursor(0, 3);
lcd.print(«Hello LCD Line 4»);
delay(4000);
>
Заливаем его в ардуино и смотрим на дисплей. Если все получилось и надписи видны — круто.
Если нет, то крутим потенциометр:
Крутим его в одну сторону до упора и в другую, настраивая таким образом яркость\контрастность дисплея. У меня он изначально был в самом крайнем положении (в 0) и я долго не мог понять, почему у меня не выводится текст.
#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
- Arduino UNO или 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, используется плата 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. Ниже приведены основные функции, которые необходимы для работы с дисплеем.
Пример кода вывода текста на LCD 1602 с использованием библиотеки LiquidCrystal.
Не смотря на то, что урок ориентирован на использование подключения дисплея по I2C. Рассмотрим пример подключения дисплея LCD 1602 подключённого по 4-битной параллельной шине. Для работы с дисплеем LCD2004 нужно изменить пятую строчку кода на lcd.begin(20, 4);
Пример вывода текста на LCD 2004, LCD 1602 с использованием библиотеки LiquidCrystal_I2C.
Не смотря на то, что в примере будем использовать подключение LCD 1602 по I2C и библиотеку LiquidCrystal_I2C. Код не сильно изменится. Для работы с дисплеем LCD2004 нужно изменить 3 строку на LiquidCrystal_I2C LCD (0x27,20,4);
Выводим время прошедшее после старта на дисплей LCD1602 подключённый по шине I2C.
Если дисплей LCD 2004, LCD 1602 не отображает текст.
После того как вы всё сделали, подключили дисплей. Загрузили код. На дисплее могут не отображаться символы. Что может быть не так:
- Если дисплей показывает чёрные прямоугольники или пустой экран – нужно отрегулировать яркость дисплея, это синий квадратный регулятор на задней стороне платы.
- Если кроме чёрных прямоугольников и пустого экрана ничего не видно – меняем адрес в программе. Их всего два: 0x27 и 0x3F.
- Если все равно не работает – проверяем подключение и повторяем сначала.
На этом урок про дисплеи LCD 2004, LCD 1602 заканчивается. В следующем уроке рассмотрим, какие символы есть в прошивке дисплея и как их вывести, а также создадим свои символы.
Появились вопросы или предложения, не стесняйся, пиши в комментарии!
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке.
Понравилась статья? Поделитесь ею с друзьями:
Подключение LCD 2004A к Arduino
Сегодня рассмотрим подключение экрана LCD 2004A к Ардуино. Данный модуль интересен для использования (и обзора) по многим причинам. Он достаточно прост в сборке, доступен по бюджетной цене, вполне функционален. Обычно такие устройства применяются в случаях, когда на дисплей необходимо вывести текстовые ∕ цифровые ∕ графические значения и изображения без лишних подключений и телодвижений (по шине I2C, например).
Нуждаетесь в отображении подсказок датчиков? Работаете над проектами, где необходимо отображение меню? Попробуйте поработать с обсуждаемым сегодня символьным ЖК дисплеем!
Его технические параметры таковы:
- напряжение питания: 5V;
- экран: 16 символов 2 строки или 20×04;
- подсветка: синяя (текст выводится белым);
- тип интерфейса: I2C
- габариты: 82 x 35 x 18мм.
Подключение LCD 2004A к Arduino по шине I2C схематически выглядит следующим образом:
Для сборки схемы мы использовали такие аппаратные компоненты: управляющую плату расширения Arduino Uno, LCD I2C модуль, соединительные провода.
Для дальнейшей работы и проверки работоспособности микросхемы нам следует скачать и инсталлировать специализированные библиотеки — Wire (для управления интерфейсом) и LiquidCrystal_I2C1602V1. Не забываем распаковывать архивы с файлами подобного плана в папку libraries в среде Ардуино IDE.
Попробуем вывести на экран надпись «Hello, world!». Для этого загружаем скетч в плату:
Напомним, при желании на дисплей можно выводить не только текстовые сообщения, но и другие символы, например, смайлики или геометрические фигуры. Для этого, естественно, понадобится написать другой программный код.
Ниже приведем еще один вариант прошивки:
Не бойтесь экспериментов – это очень увлекательно! На этом прощаемся! До новых встреч!