Lcd 1602 подключение. Подключение и работа с дисплеем WH1602. LCD с RGB подсветкой

LCD 1602 – подключение к Arduino

Lcd 1602 подключение. Подключение и работа с дисплеем WH1602. LCD с RGB подсветкой

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

Подключая какие-либо датчики и модули к Arduino или к другим платформам, мы часто используем монитор порта для вывода данных.

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

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

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

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

Дисплей представляет собой достаточно небольшой (по меркам дисплеев) модуль, с примерными размерами 8×3 см, закрепленный на небольшой подложке с контактами для подключения.

К его основным достоинствам можно приписать низкую стоимость,  четкое отображение, выдержка перепадов температур (от -20 до +70°C), широкий угол обзора, регулируемая контрастность и малые размеры, о чем говорилось ранее.

Данные на дисплее могут отображаться в формате 16×2 символов. Питание осуществляется с помощью напряжения в 5 В. Также на дисплее имеется светодиодная подсветка, что позволяет использовать его в темное время суток.

Дисплей имеет 16 контактов для подключения:

Также для подключения понадобится переменный резистор (потенциометр) на 10 кОм.

Все это подключается так, как на схеме ниже:

1GND (земля)
2+5В питание
3VO (установка контрастности)
4RS (команды и данные)
5RW (чтение и запись)
6E (Enable)
7-14(DB0…DB7) линия данных
15A (плюс подсветки)
16K (минус подсветки)

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

Как можно заметить, подключение довольно муторное, ибо занимает 9 пинов на плате Ардуино, что значительно снизит возможность платы в вашем проекте (особенно, если в нем присутствуют несколько модулей).

Для удобства подключения принято использовать интерфейс I2C. Благодаря данной шине число пинов, используемых на подключение дисплея, сводится к четырем.

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

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

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

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

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

Он выглядит вот так:

Код вывода текста на дисплей #include // Добавляем необходимую библиотеку LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup(){ lcd.begin(16, 2); // Задаем размерность экрана lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки lcd.print(“Hello, world!”); // Выводим текст lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print(“1”); // Выводим текст } void loop(){ }

#include   // Добавляем необходимую библиотекуLiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7)  lcd.begin(16, 2);                  // Задаем размерность экрана  lcd.setCursor(0, 0);              // Устанавливаем курсор в начало 1 строки  lcd.print(“Hello, world!”);       // Выводим текст  lcd.setCursor(0, 1);              // Устанавливаем курсор в начало 2 строки  lcd.print(“1”);         // Выводим текст

Также библиотека LiquidCrystal.h имеет достаточно широкий функционал, который, несомненно, вам пригодится при дальнейшей работе с этим модулем:

Код работы с курсором, вывода информации и для шпионов:) //Работа с курсором lcd.setCursor(0, 0); // Устанавливаем курсор (номер ячейки, строка) lcd.home(); // Установка курсора в ноль (0, 0) lcd.cursor(); // Включить видимость курсора (подчеркивание) lcd.noCursor(); // Убрать видимость курсора (подчеркивание) lcd.blink(); // Включить мигание курсора (курсор 5х8) lcd.noBlink(); // Выключить мигание курсора (курсор 5х8) //Вывод информации lcd.print(“1”); // Вывод информации lcd.clear(); // Очистка дисплея, (удаление всех данных) установка курсора в ноль lcd.rightToLeft(); // Запись производится справа на лево lcd.leftToRight(); // Запись производится слева на право lcd.scrollDisplayRight(); // Смещение всего изображенного на дисплее на один символ вправо lcd.scrollDisplayLeft(); // Смещение всего изображенного на дисплее на один символ влево //Информация полезная для шпионов:) lcd.noDisplay(); // Информация на дисплее становится невидимой, данные не стираются // если, в момент когда данная функция активна, ничего не выводить на дисплей, то lcd.display(); // При вызове функции display() на дисплее восстанавливается вся информация которая была

lcd.setCursor(0, 0);              // Устанавливаем курсор (номер ячейки, строка)lcd.home();                       // Установка курсора в ноль (0, 0)lcd.cursor();                     // Включить видимость курсора (подчеркивание)lcd.noCursor();                   // Убрать видимость курсора (подчеркивание)lcd.blink();                      // Включить мигание курсора (курсор 5х8)lcd.noBlink();                    // Выключить мигание курсора (курсор 5х8)lcd.print(“1”);         // Вывод информацииlcd.clear();                      // Очистка дисплея, (удаление всех данных) установка курсора в нольlcd.rightToLeft();                // Запись производится справа на левоlcd.leftToRight();                // Запись производится слева на правоlcd.scrollDisplayRight();         // Смещение всего изображенного на дисплее на один символ вправоlcd.scrollDisplayLeft();          // Смещение всего изображенного на дисплее на один символ влево//Информация полезная для шпионов:)lcd.noDisplay();                  // Информация на дисплее становится невидимой, данные не стираются// если, в момент когда данная функция активна, ничего не выводить на дисплей, тоlcd.display();                    // При вызове функции display() на дисплее восстанавливается вся информация которая была

Источник: https://Voltiq.ru/lcd-1602-and-arduino/

Подключение LCD 1602 (HD44780) к Arduino

Lcd 1602 подключение. Подключение и работа с дисплеем WH1602. LCD с RGB подсветкой

18.03.2014 10:17:00

LCD дисплеи размерности 1602, на базе контроллера HD44780, являются одними из самых простых, доступных и востребованных дисплеев для разработки различных электронных устройств.

Его можно встретить как и в устройствах собранных на коленке, так и в промышленных устройствах, таких, как например, автоматы для приготовления кофе.

 На базе данного дисплея собраны самые популярные модули и шилды в тематике Arduino такие как LCD I2C модуль и LCD Keypad Shield.

В данной статье мы расскажем как его подключить к Arduino и вывести информацию.

Используемые компоненты (купить в Китае):

• Управляющая плата

Arduino UNO 16U2, либо более дешевая Arduino UNO CH340G,

Arduino Nano CH340G, либо Arduino MEGA 16U2, либо более дешевая Arduino MEGA CH340G,

• Дисплей

LCD 1602 либо LCD2004

• Соединительные провода

Соединительные провода папа-папа

Данные дисплеи имеют два исполнения: желтая подсветка с черными буквами либо, что встречается чаще, синюю подсветку с белыми буквами. 

Размерность дисплеев на контроллере HD44780 может быть различной, управляться они будут одинаково. Самые распространенные размерности 16×02 (т.е. по 16 символов в двух строках) либо 20×04. Разрешение же самих символов – 5×8 точек.

Большинство дисплеев не имеют поддержку кириллицы, имеют её лишь дисплеи с маркировкой CTK. Но данную проблему можно попытаться частично решить (продолжение в статье).

Выводы дисплея:

На дисплее имеется 16pin разъем для подключения. Выводы промаркированы на тыльной стороне платы.

1 (VSS) – Питание контроллера (-)2 (VDD) – Питание контроллера (+)3 (VO) – Вывод управления контрастом4 (RS) – Выбор регистра 5 (R/W) – Чтение/запись ( режим записи при соединении с землей)6 (E) – Еnable (строб по спаду) 7-10 (DB0-DB3) – Младшие биты 8-битного интерфейса11-14 (DB4-DB7) – Старшие биты интерфейса15 (A) – Анод (+) питания подсветки

16 (K) – Катод (-) питания подсветки

Режим самотестирования:

Перед попытками подключения и вывода информации, было бы неплохо узнать рабочий дисплей или нет. Для этого необходимо подать напряжение на сам контроллер (VSS и VDD), запитать подсветку (A и K), а также настроить контрастность.

Для настройки контрастности следует использовать потенциометр на 10 кОм. Каким он будет по форме – не важно. На крайние ноги подается +5V и GND, центральная ножка соединяется с выводом VO

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

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

Вывод информации:

Для работы дисплея используется встроенная с среду Arduino IDE библиотека LiquidCrystal.h

//Работа с курсором lcd.setCursor(0, 0); // Устанавливаем курсор (номер ячейки, строка)lcd.home(); // Установка курсора в ноль (0, 0)lcd.cursor(); // Включить видимость курсора (подчеркивание)lcd.noCursor(); // Убрать видимость курсора (подчеркивание)lcd.blink(); // Включить мигание курсора (курсор 5х8)lcd.noBlink(); // Выключить мигание курсора (курсор 5х8) //Вывод информацииlcd.print(“zelectro.cc”); // Вывод информацииlcd.clear(); // Очистка дисплея, (удаление всех данных) установка курсора в нольlcd.rightToLeft(); // Запись производится справа на левоlcd.leftToRight(); // Запись производится слева на правоlcd.scrollDisplayRight(); // Смещение всего изображенного на дисплее на один символ вправоlcd.scrollDisplayLeft(); // Смещение всего изображенного на дисплее на один символ влево //Информация полезная для шпионов:)lcd.noDisplay(); // Информация на дисплее становится невидимой, данные не стираются// если, в момент когда данная функция активна, ничего не выводить на дисплей, тоlcd.display(); // При вызове функции display() на дисплее восстанавливается вся информация которая была

Сам же дисплей может работать в двух режимах :

• 8-битный режим – для этого используются и младшие и старшие биты (BB0- DB7)

• 4-битный режим – для этого используются и только младшие биты (BB4- DB7)

Использование 8-битного режима на данном дисплее не целесообразно. Для его работы требуется на 4 ноги больше, а выигрыша в скорости практически нет т.к. частота обновления данного дисплея упирается в предел < 10раз в секунду.

Для вывода текста необходимо подключить выводы RS, E, DB4, DB5, DB6, DB7 к выводам контроллера. Их можно подключать к либым пинам Arduino, главное в коде задать правильную последовательность.

Пример программного кода: //Тестировалось на Arduino IDE 1.0.5 #include  // Лобавляем необходимую библиотекуLiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup(){   lcd.begin(16, 2); // Задаем размерность экрана   lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки  lcd.print(“Hello, world!”); // Выводим текст  lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки  lcd.print(“zelectro.cc”); // Выводим текст} void loop(){}

Создание собственных символов

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

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

В ниже приведенном примере нарисуем смайлик.

//Тестировалось на Arduino IDE 1.0.5 #include #include  // Лобавляем необходимую библиотеку// Битовая маска символа улыбкиbyte smile[8] ={  B00010,  B00001,  B11001,  B00001,  B11001,  B00001,  B00010,};    LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup(){   lcd.begin(16, 2); // Задаем размерность экрана   lcd.createChar(1, smile); // Создаем символ под номером 1   lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки  lcd.print(“\1”); // Выводим смайлик (символ под номером 1) – “\1”      } void loop(){}

Подключение дисплеев LCD1602, LCD2402 и LCD1602 I2C к arduino

Lcd 1602 подключение. Подключение и работа с дисплеем WH1602. LCD с RGB подсветкой

I2C LCD LCD1602 LCD1602 I2C LCD2402

Сегодня мы рассмотрим подключение LCD дисплея LCD1602  на базе контроллера HD44780 к плате Arduino, работу с дисплеем LCD1602 и LCD2402 с помощью библиотеки LiquidCrystal, подключим дисплей LCD1602 по I2C шине, а также подключим 2 и 3 LCD дисплея одновременно.

дисплей LCD1602 ( вид спереди)

дисплей LCD1602 (верхнее фото с модулем I2C)

Основные характеристики LCD дисплея LCD1602

  • Тип отображения символьный с возможностью загрузки символов;
  • Формат отображения 16×2 символов;
  • ТехнологияSTN, Transflective, Positive;
  • Контроллер HD44780;
  • Интерфейс 8-bit Parallel Interface;
  • Подсветка светодиодная;
  • Угол обзора 180;
  • Напряжение питания 5 В;
  • VLCD подстройка контраста 5.0 V (Vop.);
  • Рабочая температура от -20 °С до +70 °С;
  • Температура хранения от -30 °С до +80 °С.

Дисплей LCD1602 имеет 16 выводов, назначение каждого приведено ниже:

  • 1 – VSS – GND (земля);
  • 2 – VDD – (+5В питание);
  • 3 – VO установка контросности;
  • 4 – RS (команды, данные);
  • 5 – RW (четние, запись);
  • 6 – E (Enable);
  • 7-14 – (DB0…DB7) линия данных;
  • 15 – A (плюс подстветки);
  • 16 – K (минус подсветки).

Где купить LCD дисплей LCD1602 (ссылка):

Blue screen 16×2 Character LCD Display Module HD44780 Controller blue blacklight

Подключение LCD дисплея LCD1602 к плате Arduino

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

Для подключения LCD дисплея к плате Arduino UNO нам потребуется переменный или подстроечный резистор на 10 кОм, подключаем все как на фото выше и при подключении к плате питания мы должны увидеть следующую картинку.

Потом в Arduino IDE 1.6.11 выбираем из примеров папку с библиотекой LiquidCrystal, а в ней тестовый скетч HelloWorld

И потом загружаем в нашу плату, на экране в первой строке должна отобразится надпись “hello, world!, а во второй – время с начала запуска скетча в секундах. Смотрите на фото примеры отображений надписи на фото…

Слишком мало контраста – отрегулируйте подстроечным резистором

Слишком много контраста – отрегулируйте подстроечным резистором

Правильное отображение надписи

Нестандартное подключение дисплея LCD1602

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

initialize the library

// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(12, 11, 5, 4, 3, 2);

инициализируем их по своему ( я подключил ноги RS и E на 7 и 6 пины arduino )

initialize the library 2

// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(7, 6, 5, 4, 3, 2);

// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(7, 6, 5, 4, 3, 2);

Если у вас не хватает ног на плате ардуино для подключения дисплея, например, на Arduino nano, аналоговые входи с А0 по А5, можно использовать как цифровые с 14 по 19. Под каждую плату Arduino рекомендую смотреть свою распиновку…

Подключение дисплея LCD2402

Завалялся еще у меня один LCD дисплей от системного телефона LG на контроллере HD44780, в которого нет подсветки и еще 2 дополнительных пина. Пины 15-18 используются для двух сигнальных светодиодов LED1 и LED2

Дисплей LCD2402 (вид спереди)

Дисплей LCD2402 (вид сзади)

Я этот дисплей решил подключить нестандартно, а точнее с использованием дополнительных пинов на плате Arduino.

LCD2402 initialize

LiquidCrystal lcd(9, 8, 17, 16, 15, 14);

LiquidCrystal lcd(9, 8, 17, 16, 15, 14);

Пины 14-17, это аналоговые входы A0-A3 на плате Arduino nano

Отображение HelloWorld на дисплее LCD2402

Рекомендую, еще lcd.begin(16,2); исправить на строку lcd.begin(24,2); 

Подключение двух LCD дисплеев одновременно

Я думаю вы догадались почему я подключил второй LCD дисплей на другие пины..?

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

LCD2402_LCD1602

// include the library code:#include // initialize the library with the numbers of the interface pinsLiquidCrystal lcd(9, 8, 17, 16, 15, 14);LiquidCrystal lcd2(7, 6, 5, 4, 3, 2);void setup() {// set up the LCD's number of columns and rows:lcd.begin(24, 2);lcd2.begin(16, 2);// Print a message to the LCD.lcd.print(“hello, world!”);lcd2.

print(“hello, world!”);}void loop() {// set the cursor to column 0, line 1// (note: line 1 is the second row, since counting begins with 0):lcd.setCursor(0, 1);lcd2.setCursor(0, 1);// print the number of seconds since reset:lcd.print(millis() / 100);lcd.setCursor(11,1);lcd.print(“display 24×2”);lcd2.print(millis() / 1000);lcd2.setCursor(4,1);lcd2.

print(“display 16×2”);}

12345678910111213141516171819202122232425262728// include the library code:#include// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(9, 8, 17, 16, 15, 14);LiquidCrystal lcd2(7, 6, 5, 4, 3, 2);void setup() {  // set up the LCD's number of columns and rows:  lcd.begin(24, 2);  lcd2.begin(16, 2);  // Print a message to the LCD.  lcd.print(“hello, world!”);  lcd2.print(“hello, world!”);}void loop() {  // set the cursor to column 0, line 1  // (note: line 1 is the second row, since counting begins with 0):  lcd.setCursor(0, 1);  lcd2.setCursor(0, 1);  // print the number of seconds since reset:  lcd.print(millis() / 100);  lcd.setCursor(11,1);  lcd.print(“display 24×2”);  lcd2.print(millis() / 1000);  lcd2.setCursor(4,1);  lcd2.print(“display 16×2”);}

И как мы видим на фото все работает )))

Одновременная работа двух дисплеев lcd2402 и lcd1602

На первом дисплее отображаются 1/10 секунды от начала запуска скетча, а на втором секунды от начала запуска скетча.

Подключение LCD дисплея LCD1602 по протоколу I2C

Иногда не рационально использовать стандартное подключение дисплея LCD1602 к плате ардуино и более удобно использовать модуль для подключения дисплея LCD1602 по шине I2C , для которого нам потребуется только 4 пина ( +5v, GND, SDA, SCL )

Модуль i2c lcd1602

После установки модуля i2c на дисплей, нам потребуется скачать и установить библиотеку  LiquidCrystal I2C , и рекомендую использовать версию Arduino IDE 1.6.5 (самые новые версии работают не корректно). Для загрузки я использовал немного переделанный скетч “HelloWorld”

HelloI2C

#include #include LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line displayvoid setup(){lcd.init(); // initialize the lcd // Print a message to the LCD.lcd.backlight();lcd.print(“Hello, world I2C!”);}void loop(){lcd.setCursor(0, 1);lcd.print(millis() / 1000);lcd.setCursor(4,1);lcd.print(“display 16×2”);}

123456789101112131415161718192021#include#includeLiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line displayvoid setup(){  lcd.init();                      // initialize the lcd  // Print a message to the LCD.  lcd.backlight();  lcd.print(“Hello, world I2C!”);}void loop(){  lcd.setCursor(0, 1);  lcd.print(millis() / 1000);  lcd.setCursor(4,1);  lcd.print(“display 16×2”);}

Если контрастность дисплея большая, или недостаточная – покрутите многооборотный резистор на модуле I2C

Отображение информации на дисплее LCD1602 I2C

Если на дисплее отображаются кубики в верхней строке, измените адрес устройства в строке LiquidCrystal_I2C lcd(0x20,16,2); на например LiquidCrystal_I2C lcd(0x27,16,2);

Подключение LCD1602, LCD2402 и LCD1602 I2C одновременно

Ну что же, а теперь подключим  LCD1602, LCD2402 и LCD1602 I2C как я рассказывал ранее и загрузим мой переделанный скетч в плату Arduino.

3_lcd

// include the library code:#include #include #include // initialize the library with the numbers of the interface pinsLiquidCrystal lcd(9, 8, 17, 16, 15, 14);LiquidCrystal lcd2(7, 6, 5, 4, 3, 2);LiquidCrystal_I2C lcd3(0x20,16,2);void setup() {// set up the LCD's number of columns and rows:lcd.

begin(24,2);lcd2.begin(16,2);lcd3.init(); // initialize the lcd lcd3.backlight();// Print a message to the LCD.lcd.print(“Hello, world!”);lcd2.print(“Hello, world!”);lcd3.

print(“Hello world I2C!”);}void loop() {// set the cursor to column 0, line 1// (note: line 1 is the second row, since counting begins with 0):lcd.setCursor(0,1);lcd2.setCursor(0,1);lcd3.setCursor(0,1);// print the number of seconds since reset:lcd.print(millis() / 100);lcd.setCursor(11,1);lcd.

print(“display 24×2”);lcd2.print(millis() / 1000);lcd2.setCursor(4,1);lcd2.print(“display 16×2”);lcd3.print(millis() / 500);lcd3.setCursor(4,1);lcd3.print(“display 16×2”);}

123456789101112131415161718192021222324252627282930313233343536373839// include the library code:#include#include#include// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(9, 8, 17, 16, 15, 14);LiquidCrystal lcd2(7, 6, 5, 4, 3, 2);LiquidCrystal_I2C lcd3(0x20,16,2);void setup() {  // set up the LCD's number of columns and rows:  lcd.begin(24,2);  lcd2.begin(16,2);  lcd3.init();                      // initialize the lcd  lcd3.backlight();  // Print a message to the LCD.  lcd.print(“Hello, world!”);  lcd2.print(“Hello, world!”);  lcd3.print(“Hello world I2C!”);}void loop() {  // set the cursor to column 0, line 1  // (note: line 1 is the second row, since counting begins with 0):  lcd.setCursor(0,1);  lcd2.setCursor(0,1);  lcd3.setCursor(0,1);  // print the number of seconds since reset:  lcd.print(millis() / 100);  lcd.setCursor(11,1);  lcd.print(“display 24×2”);  lcd2.print(millis() / 1000);  lcd2.setCursor(4,1);  lcd2.print(“display 16×2”);  lcd3.print(millis() / 500);  lcd3.setCursor(4,1);  lcd3.print(“display 16×2”);}

Как мы видим все работает просто супер

Работа трех LCD дисплеев одновременно

При этом у нас еще осталось 6 цифровых и 2 аналоговых пина на плате Arduino nano…

Что бы не упускать наши новые видео и статьи подписывайтесь на наш канал в .

Спасибо за внимание!

Источник: http://arduino-project.net/lcd1602/

Дисплей LCD 1602 i2C Ардуино подключение

Lcd 1602 подключение. Подключение и работа с дисплеем WH1602. LCD с RGB подсветкой

Подключив LCD дисплей к Arduino ► вы сможете визуально отображать данные с датчиков на экране. Рассмотрим основные команды для управления LCD 1602 по I2C.

LCD дисплей Arduino позволяет визуально отображать данные с датчиков. Расскажем, как правильно подключить модуль QAPASS LCD к Arduino по I2C и рассмотрим основные команды инициализации и управления LCD 1602. Также рассмотрим различные функции в языке программирования C++, для вывода текстовой информации на дисплее, который часто требуется использовать в проектах Ардуино.

Как подключить LCD 1602 к Arduino

I2C — последовательная двухпроводная шина для связи интегральных схем внутри электронных приборов, известна, как I²C или IIC (англ. Inter-Integrated Circuit). I²C была разработана фирмой Philips в начале 1980-х годов, как простая 8-битная шина для внутренней связи между схемами в управляющей электронике (например, в компьютерах на материнских платах, в мобильных телефонах и т.д.).

Схема i2c интерфейса для подключения lcd1602

В простой системе I²C может быть несколько ведомых устройств и одно ведущее устройство, которое инициирует передачу данных и синхронизирует сигнал.

К линиям SDA (линия данных) и SCL (линия синхронизации) можно подключить несколько ведомых устройств.

Часто ведущим устройством является контроллер Ардуино, а ведомыми устройствами: часы реального времени или LCD Display.

Как подключить жк дисплей к Ардуино по I2C

Жидкокристаллический дисплей 1602 с I2C модулем подключается к плате Ардуино всего 4 проводами — 2 провода данных и 2 провода питания.

Подключение QAPASS 1602a к Arduino проводится стандартно для шины I2C: вывод SDA подключается к порту A4, вывод SCL – к порту A5. Питание LCD дисплея осуществляется от порта +5V.

Смотрите подробнее схему подключения жк монитора 1602 на фото ниже.

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • LCD монитор 1602 i2c;
  • 4 провода «папа-мама».

Подключение модуля LCD 1602 к Arduino UNO через I²C

После подключения LCD монитора к Ардуино через I2C вам потребуется установить библиотеку LiquidCrystal_I2C.h для работы с LCD дисплеем по интерфейсу I2C и библиотека Wire.

h (имеется в стандартной программе Arduino IDE). Скачать рабочую библиотеку LiquidCrystal_I2C.

h для LCD 1602 с модулем I2C можно на странице Библиотеки для Ардуино на нашем сайте по прямой ссылке с Google Drive.

Скетч для жк дисплея QAPASS 1602 I2C

#include // библиотека для управления устройствами по I2C #include // подключаем библиотеку для QAPASS 1602 LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея void setup() { LCD.init(); // инициализация LCD дисплея LCD.

backlight(); // включение подсветки дисплея LCD.

setCursor(1,0); // ставим курсор на 1 символ первой строки LCD.print(“I LOVE”); // печатаем сообщение на первой строке LCD.setCursor(8,1); // ставим курсор на 1 символ второй строки LCD.print(“ARDUINO”); // печатаем сообщение на второй строке } void loop() { LCD.

noDisplay(); // выключаем и включаем надпись на дисплее delay(1000); LCD.display(); delay(1000); }

Пояснения к коду:

  1. перед выводом информации на дисплей, необходимо задать положение курсора командой setCursor(0,1), где 0 — номер символа в строке, 1 — номер строки;
  2. в отличии от clear() — команда noDisplay() не удаляет надпись, а отключает ее вывод на дисплее и ее можно снова покзать.

Библиотека LiquidCrystal_I2C.h для дисплея

В следующем примере разберем сразу несколько возможностей, которая дает библиотека LiquidCrystal_I2C (на самом деле мы взяли команды из стандартной библиотеки). Продемонстрируем вывод мигающего курсора, как убрать надпись с экрана на некоторое время без удаления и, как управлять подсветкой дисплея из кода программы. Для этого загрузите в Ардуино следующий код.

Скетч с командами библиотеки LiquidCrystal_I2C.h

#include // библиотека для управления устройствами по I2C #include // подключаем библиотеку для QAPASS 1602 LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея void setup() { LCD.init(); // инициализация LCD дисплея LCD.

backlight(); // включение подсветки дисплея LCD.

blink(); // включение мигающего курсора delay(2000); LCD.noBlink(); LCD.setCursor(1,0); // ставим курсор на 1 символ первой строки LCD.print(“I LOVE”); // печатаем сообщение на первой строке LCD.setCursor(8,1); // ставим курсор на 1 символ второй строки LCD.print(“ARDUINO”); // печатаем сообщение на второй строке delay(2000); LCD.cursor(); // включение текущей позиции курсора delay(2000); LCD.noCursor(); } void loop() { LCD.

noBacklight(); // выключаем и включаем подсветку экрана delay(1000); LCD.backlight(); delay(1000); }

Подключение дисплея LCD 1602 к arduino по i2c / IIC

Lcd 1602 подключение. Подключение и работа с дисплеем WH1602. LCD с RGB подсветкой

LCD дисплей – частый гость в проектах ардуино. Но в сложных схемах у нас может возникнуть проблема недостатка портов Arduino из-за необходимости подключить экран, у которого очень очень много контактов.

Выходом в этой ситуации может стать I2C /IIC переходник, который подключает практически стандартный для Arduino экран 1602 к платам Uno, Nano или Mega всего лишь при помощи 4 пинов.

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

Жк дисплей arduino lcd 1602

Жидкокристаллический дисплей (Liquid Crystal Display) LCD 1602 является хорошим выбором для вывода строк символов в различных проектах. Он стоит недорого, есть различные модификации с разными цветами подсветки, вы можете легко скачать готовые библиотеки для скетчей Ардуино.

Но самым главным недостатком этого экрана является тот факт, что дисплей имеет 16 цифровых выводов, из которых обязательными являются минимум 6. Поэтому использование этого LCD экрана без i2c добавляет серьезные ограничения для плат Arduino Uno или Nano.

Если контактов не хватает, то вам придется покупать плату Arduino Mega или же сэкономить контакты, в том числе за счет подключения дисплея через i2c.

Краткое описание пинов LCD 1602

Давайте посмотрим на выводы LCD1602 повнимательней:

Каждый из выводов имеет свое назначение:

  1. Земля GND;
  2. Питание 5 В;
  3. Установка контрастности монитора;
  4. Команда, данные;
  5. Записывание и чтение данных;
  6. Enable;

7-14. Линии данных;

  1. Плюс подсветки;
  2. Минус подсветки.

Технические характеристики дисплея:

  • Символьный тип отображения, есть возможность загрузки символов;
  • Светодиодная подсветка;
  • Контроллер HD44780;
  • Напряжение питания 5В;
  • Формат 16х2 символов;
  • Диапазон рабочих температур от -20С до +70С, диапазон температур хранения от -30С до +80 С;
  • Угол обзора 180 градусов.

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

Стандартная схема присоединения монитора напрямую к микроконтроллеру Ардуино без I2C выглядит следующим образом.

Из-за большого количества подключаемых контактов может не хватить места для присоединения нужных элементов. Использование I2C уменьшает количество проводов до 4, а занятых пинов до 2.

Где купить LCD экраны и шилды для ардуино

LCD экран 1602 (и вариант 2004) довольно популярен, поэтому вы без проблем сможете найти его как в отечественных интернет-магазинах, так и на зарубежных площадках. Приведем несколько ссылок на наиболее доступные варианты:

Описание протокола I2C

Прежде чем обсуждать подключение дисплея к ардуино через i2c-переходник, давайте вкратце поговорим о самом протоколе i2C.

I2C / IIC(Inter-Integrated Circuit) – это протокол, изначально создававшийся для связи интегральных микросхем внутри электронного устройства. Разработка принадлежит фирме Philips.

В основе i2c  протокола является использование 8-битной шины, которая нужна для связи блоков в управляющей электронике, и системе адресации, благодаря которой можно общаться по одним и тем же проводам с несколькими устройствами.

Мы просто передаем данные то одному, то другому устройству, добавляя к пакетам данных идентификатор нужного элемента.

Самая простая схема I2C может содержать одно ведущее устройство (чаще всего это микроконтроллер Ардуино) и несколько ведомых (например, дисплей LCD). Каждое устройство имеет адрес в диапазоне от 7 до 127. Двух устройств с одинаковым адресом в одной схеме быть не должно.

Плата Arduino поддерживает i2c на аппаратном уровне. Вы можете использовать пины A4 и A5 для подключения устройств по данному протоколу.

В работе I2C можно выделить несколько преимуществ:

  • Для работы требуется всего 2 линии – SDA (линия данных) и SCL (линия синхронизации).
  • Подключение большого количества ведущих приборов.
  • Уменьшение времени разработки.
  • Для управления всем набором устройств требуется только один микроконтроллер.
  • Возможное число подключаемых микросхем к одной шине ограничивается только предельной емкостью.
  • Высокая степень сохранности данных из-за специального фильтра подавляющего всплески, встроенного в схемы.
  • Простая процедура диагностики возникающих сбоев, быстрая отладка неисправностей.
  • Шина уже интегрирована в саму Arduino, поэтому не нужно разрабатывать дополнительно шинный интерфейс.

Недостатки:

  • Существует емкостное ограничение на линии – 400 пФ.
  • Трудное программирование контроллера I2C, если на шине имеется несколько различных устройств.
  • При большом количестве устройств возникает трудности локализации сбоя, если одно из них ошибочно устанавливает состояние низкого уровня.

Модуль i2c для LCD 1602 Arduino

Самый быстрый и удобный способ использования i2c дисплея в ардуино – это покупка готового экрана со встроенной поддержкой протокола. Но таких экранов не очень много истоят они не дешево.

А вот разнообразных стандартных экранов выпущено уже огромное количество.

Поэтому самым доступным и популярным сегодня вариантом является покупка и использование отдельного I2C модуля – переходника, который выглядит вот так:

С одной стороны модуля мы видим выводы i2c – земля, питание и 2 для передачи данных. С другой переходника видим разъемы внешнего питания. И, естественно, на плате есть множество ножек, с помощью которых модуль припаивается к стандартным выводам экрана.

Для подключения к плате ардуино используются i2c выходы. Если нужно, подключаем внешнее питание для подстветки. С помощью встроенного подстроечного резистора мы можем настроить настраиваемые значения контрастности J

На рынке можно встретить LCD 1602 модули с уже припаянными переходниками, их использование максимально упощено. Если вы купили отдельный переходник, нужно будет предварительно припаять его к модулю.

Подключение ЖК экрана к Ардуино по I2C

Для подключения необходимы сама плата Ардуино, дисплей, макетная плата, соединительные провода и потенциометр.

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

Жидкокристаллический монитор с поддержкой i2c подключается к плате при помощи четырех проводов – два провода для данных, два провода для питания.

  • Вывод GND подключается к GND на плате.
  • Вывод VCC – на 5V.
  • SCL подключается к пину A5.
  • SDA подключается к пину A.

И это все! Никаких паутин проводов, в которых очень легко запутаться. При этом всю сложность реализации i2C протокола мы можем просто доверить библиотекам.

Библиотеки для работы с i2c LCD дисплеем

Для взаимодействие Arduino c LCD 1602 по шине I2C вам потребуются как минимум две библиотеки:

  • Библиотека Wire.h для работы с I2C уже имеется в стандартной программе Arduino IDE.
  • Библиотека LiquidCrystal_I2C.h, которая включает в себя большое разнообразие команд для управления монитором по шине I2C и позволяет сделать скетч проще и короче. Нужно дополнительно установить библиотеку После подключения дисплея нужно дополнительно установить библиотеку LiquidCrystal_I2C.h

Скачать библиотеку для работы с экраном I2C LiquidCrystal_I2C.

После подключения к скетчу всех необходимых библиотек мы создаем объект и можем использовать все его функции. Для тестирования давайте загрузим следующий стандартный скетч из примера.

#include #include // Подключение библиотеки //#include // Подключение альтернативной библиотеки LiquidCrystal_I2C lcd(0x27,16,2); // Указываем I2C адрес (наиболее распространенное значение), а также параметры экрана (в случае LCD 1602 – 2 строки по 16 символов в каждой //LiquidCrystal_PCF8574 lcd(0x27); // Вариант для библиотеки PCF8574 void setup() { lcd.init(); // Инициализация дисплея lcd.backlight(); // Подключение подсветки lcd.setCursor(0,0); // Установка курсора в начало первой строки lcd.print(“Hello”); // Набор текста на первой строке lcd.setCursor(0,1); // Установка курсора в начало второй строки lcd.print(“ArduinoMaster”); // Набор текста на второй строке } void loop() { }

Описание функций и методов библиотеки LiquidCrystal_I2C:

  • home() и clear() – первая функция позволяет вернуть курсор в начало экрана, вторая тоже, но при этом удаляет все, что было на мониторе до этого.
  • write(ch) – позволяет вывести одиночный символ ch на экран.
  • cursor() и noCursor() – показывает/скрывает курсор на экране.
  • blink() и noBlink() – курсор мигает/не мигает (если до этого было включено его отображение).
  • display() и noDisplay() – позволяет подключить/отключить дисплей.
  • scrollDisplayLeft() и scrollDisplayRight() – прокручивает экран на один знак влево/вправо.
  • autoscroll() и noAutoscroll() – позволяет включить/выключить режим автопрокручивания. В этом режиме каждый новый символ записывается в одном и том же месте, вытесняя ранее написанное на экране.
  • leftToRight() и rightToLeft() – Установка направление выводимого текста – слева направо или справа налево.
  • createChar(ch, bitmap) – создает символ с кодом ch (0 – 7), используя массив битовых масок bitmap для создания черных и белых точек.

Альтернативная библиотека для работы с i2c дисплеем

В некоторых случаях при использовании указанной библиотеки с устройствами, оснащенными контроллерами PCF8574 могут возникать ошибки. В этом случае в качестве альтернативы можно предложить библиотеку LiquidCrystal_PCF8574.h. Она расширяет LiquidCrystal_I2C, поэтому проблем с ее использованием быть не должно.

Скачать библиотеку можно на нашем сайте. Библиотека также встроена в  последние версии Arduino IDE.

Проблемы подключения i2c lcd дисплея

Если после загрузки скетча у вас не появилось никакой надписи на дисплее, попробуйте выполнить следующие действия.

Во-первых, можно увеличить или уменьшить контрастность монитора. Часто символы просто не видны из-за режима контрастности и подсветки.

Если это не помогло, то проверьте правильность подключения контактов, подключено ли питание подсветки. Если вы использовали отдельный i2c переходник, то проверьте еще раз качество пайки контактов.

Другой часто встречающейся причиной отсутствия текста на экране может стать неправильный i2c адрес. Попробуйте сперва поменять в скетче адрес устройства с 0x27 0x20 или на 0x3F.

У разных производителей могут быть зашиты разные адреса по умолчанию.

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

Если экран все еще останется нерабочим, попробуйте отпаять переходник и подключить LCD обычным образом.

Заключение

В этой статье мы рассмотрели основные вопросы использования LCD экрана в сложных проектах ардуино, когда нам нужно экономить свободные пины на плате. Простой и недорогой переходник i2c позволит подключить LCD экран 1602, занимая всего 2 аналоговых пина.

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

Источник: https://ArduinoMaster.ru/datchiki-arduino/lcd-i2c-arduino-displey-ekran/

WikiMedForum.Ru
Добавить комментарий