Підключення дисплея 1 602 по i2c до arduino. LCD I2C модуль підключення до Arduino. Підключення за допомогою I2C модуля

  • Модуль FC-113 зроблений на базі мікросхеми PCF8574T, яка представляє собою 8-бітний зсувний регістр - «розширювач» входів-виходів для послідовної шини I2C. На малюнку мікросхема позначена DD1.
  • R1 - підлаштування резистор для регулювання контрастності РК дисплея.
  • Джампер J1 використовується для включення підсвічування дисплея.
  • Висновки 1 ... 16 служать для підключення модуля до висновків LCD дисплея.
  • Контактні майданчики А1 ... А3 потрібні для зміни адреси I2C пристрою. Запаюючи відповідні перемички, можна змінювати адресу пристрою. У таблиці наведено відповідність адрес і перемичок: "0" відповідає розриву ланцюга, "1" - встановленої перемичці. За замовчуванням всі 3 перемички розімкнені і адреса пристрою 0x27.

2 Схема підключення ЖК дисплея до Arduinoпо протоколу I2C

Підключення модуля до Arduino здійснюється стандартно для шини I2C: висновок SDA модуля підключається до аналогового порту A4, висновок SCL - до аналогового порту A5 Ардуіно. Харчування модуля здійснюється напругою +5 В від Arduino. Сам модуль з'єднується висновками 1 ... 16 з відповідними висновками 1 ... 16 на ЖК дисплеї.


3 Бібліотека для роботипо протоколу I2C

Тепер потрібна бібліотека для роботи з LCD по інтерфейсу I2C. Можна скористатися, наприклад, ось цієї (посилання в рядку "Download Sample code and library").

скачаний архів LiquidCrystal_I2Cv1-1.rar разархивируем в папку \\ Libraries \\, Яка знаходиться в директорії Arduino IDE.

Бібліотека підтримує набір стандартних функцій для LCD екранів:

функціяпризначення
LiquidCrystal () створює змінну типу LiquidCrystal і приймає параметри підключення дисплея (номера висновків);
begin () ініціалізація LCD дисплея, завдання параметрів (кількість рядків і символів);
clear () очистка екрану і повернення курсору в початкову позицію;
home () повернення курсору в початкову позицію;
setCursor () установка курсору на задану позицію;
write () виводить символ на РК екран;
print () виводить текст на ЖК екран;
cursor () показує курсор, тобто підкреслення під місцем наступного символу;
noCursor () ховає курсор;
blink () миготіння курсору;
noBlink () скасування миготіння;
noDisplay () вимикання дисплея зі збереженням всієї інформації, що відображається;
display () включення дисплея зі збереженням всієї інформації, що відображається;
scrollDisplayLeft () прокрутка вмісту дисплея на 1 позицію вліво;
scrollDisplayRight () прокрутка вмісту дисплея на 1 позицію вправо;
autoscroll () включення автопрокрутки;
noAutoscroll () вимикання автопрокрутки;
leftToRight () задає напрямок тексту зліва направо;
rightToLeft () напрямок тексту справа наліво;
createChar () створює для користувача символ для LCD-екрану.

4 Скетч для виведення текстуна LCD екран по шині I2C

Відкриємо зразок: Файл Зразки LiquidCrystal_I2C CustomChars і трохи його переробимо. Виведемо повідомлення, в кінці якого буде знаходитися миготливий символ. У коментарях до коду прокоментовані всі нюанси скетчу.

#include // підключаємо бібліотеку Wire #include // підключаємо бібліотеку РКІ #define printByte (args) write (args); // uint8_t heart \u003d (0x0,0xa, 0x1f, 0x1f, 0xe, 0x4,0x0); // бітова маска символу «серце» LiquidCrystal_I2C lcd (0x27, 16, 2); // Задаємо адресу 0x27 для LCD дисплея 16x2 void setup () ( lcd.init (); // ініціалізація ЖК дисплея lcd.backlight (); // включення підсвічування дисплея lcd.createChar (3, heart); // створюємо символ «серце» в 3 осередку пам'яті lcd.home (); // ставимо курсор в лівий верхній кут, в позицію (0,0) lcd.! "); // друкуємо рядок тексту lcd.setCursor (0, 1); // переклад курсору на рядок 2, символ 1 lcd.print ( "i"); // друкуємо повідомлення на рядку 2 lcd.printByte (3); // друкуємо символ «серце», що знаходиться в 3-ій осередку lcd.print ( "Arduino"); } void loop () ( // миготіння останнього символу lcd.setCursor (13, 1); // переклад курсору на рядок 2, символ 1 lcd.print ( "\\ t"); delay (500); lcd.setCursor (13, 1); // переклад курсору на рядок 2, символ 1 lcd.print ( ""); delay (500); }

До речі, символи, записані командою lcd.createChar ();, Залишаються в пам'яті дисплея навіть після вимкнення живлення, тому що записуються в ПЗУ дисплея тисяча шістсот дві.

5 Створення власних символівдля ЖК дисплея

Трохи докладніше розглянемо питання створення власних символів для ЖК екранів. Кожен символ на екрані складається з 35-ти точок: 5 в ширину і 7 у висоту (+1 резервна рядок для підкреслення). У рядку 6 наведеного скетчу ми задаємо масив з 7-ми чисел: (0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0). Перетворимо 16-ковий числа в бінарні: {00000, 01010, 11111, 11111, 01110, 00100, 00000} . Ці числа - не що інше, як бітові маски для кожної з 7-ми рядків символу, де "0" позначають світлу точку, а "1" - темну. Наприклад, символ серця, заданий у вигляді бітової маски, буде виглядати на екрані так, як показано на малюнку.

6 Управління ЖК екраномпо шині I2C

Завантажимо скетч в Arduino. На екрані з'явиться задана нами напис з миготливим курсором в кінці.


7 Що знаходиться «за»шиною I2C

Як бонус розглянемо тимчасову діаграму виведення латинських символів "A", "B" і "С" на РК дисплей. Ці символи є в ПЗУ дисплея і виводяться на екран просто передачею дисплею їх адреси. Діаграма знята з висновків RS, RW, E, D4, D5, D6 і D7 дисплея, тобто вже після перетворювача FC-113 «I2C паралельна шина». Можна сказати, що ми занурюємося трохи «глибше» в «залізо».


Тимчасова діаграма виведення латинських символів "A", "B" і "С" на LCD дисплей 1602

На діаграмі видно, що символи, які є в ПЗУ дисплея (див. Стор.11 даташіта, посилання нижче), передаються двома напівбайтами, перший з яких визначає номер стовпця таблиці, а другий - номер рядка. При цьому дані «замикаються» по фронту сигналу на лінії E (Enable), а лінія RS (Register select, вибір регістру) знаходиться в стані логічної одиниці, що означає передачу даних. Низький стан лінії RS означає передачу інструкцій, що ми і бачимо перед передачею кожного символу. В даному випадку передається код інструкції повернення каретки на позицію (0, 0) ЖК дисплея, про що також можна дізнатися, вивчивши технічний опис дисплея.

І ще один приклад. На цій тимчасовій діаграмі показаний висновок символу «Серце» на РК дисплей.


Знову, перші два імпульсу Enable відповідають інструкції Home () (0000 0010 2) - повернення каретки на позицію (0; 0), а другі два - висновок на ЖК дисплей зберігається в комірці пам'яті 3 10 (0000 0011 2) символ «Серце» (інструкція lcd.createChar (3, heart); скетчу).

LCD дисплей - частий гість в проектах Ардуіно. Але в складних схемах у нас може виникнути проблема нестачі портів Arduino через необхідність підключити екран, у якого дуже дуже багато контактів. Виходом у цій ситуації може стати I2C / IIC перехідник, який підключає практично стандартний для Arduino екран тисячі шістсот дві до платам Uno, Nano або Mega всього лише за допомогою 4 пинов. У цій статті ми подивимося, як можна підключити LCD екран з інтерфейсом I2C, які можна використовувати бібліотеки, напишемо короткий скетч-приклад і розберемо типові помилки.

Рідкокристалічний дисплей (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 екран 1 602 (і варіант 2004) досить популярний, тому ви без проблем зможете знайти його як в вітчизняних інтернет-магазинах, так і на зарубіжних майданчиках. Наведемо кілька посилань на найбільш доступні варіанти:

Модуль LCD1602 + I2C з синім екраном, сумісний з Arduino Простий дисплей LCD1602 (зелене підсвічування) дешевше 80 рублів Великий екран LCD2004 з I2C HD44780 для Ардуіно (синя і зелена підсвітка)
Дисплей 1 602 з IIC адаптером і синім підсвічуванням Ще один варіант LCD1602 зі впаяним I2C модулем Модуль адаптера Port IIC / I2C / TWI / SPI для екрану 1602, сумісний з Ардуіно
Дисплей з RGB-підсвічуванням! LCD 16 × 2 + keypad + Buzzer Shield for Arduino Шілд для Ардуіно з кнопками і екраном LCD1602 LCD 1602 LCD дисплей для 3D принтера (Smart Controller for RAMPS 1.4, Text LCD 20 × 4), модулем кардридера SD і MicroSD-

Опис протоколу 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 1 602 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

Після підключення до скетчу всіх необхідних бібліотек ми створюємо об'єкт і можемо використовувати всі його функції. Для тестування давайте завантажимо наступний стандартний скетч з прикладу.

#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, тому проблем з її використанням бути не повинно.

Проблеми зі з'єднанням i2c lcd дисплея

Якщо після завантаження скетчу у вас не з'явилося жодної написи на дисплеї, спробуйте виконати наступні дії.

По-перше, можна збільшити або зменшити контрастність монітора. Часто символи просто не видно через режим контрастності і підсвічування.

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

Інший часто зустрічається причиною відсутності тексту на екрані може стати неправильний i2c адресу. Спробуйте спершу поміняти в скетчі адресу пристрою з 0x27 0x20 або на 0x3F. У різних виробників можуть бути зашиті різні адреси за замовчуванням. Якщо і це не допомогло, можете запустити скетч i2c сканера, який переглядає всі підключені пристрої і визначає їхню адресу методом перебору. Приклад скетчу i2c сканера.

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

висновок

У цій статті ми розглянули основні питання використання LCD екрана в складних проектах Ардуіно, коли нам потрібно економити вільні Піни на платі. Простий і недорогий перехідник i2c дозволить підключити LCD екран 1602, займаючи всього 2 аналогових Піна. У багатьох ситуаціях це може бути дуже важливим. Плата за зручність - необхідність у використанні додаткового модуля - конвертера і бібліотеки. На наш погляд, зовсім не висока ціна за зручність і ми вкрай рекомендуємо використовувати цю можливість в проектах.

Мабуть один з найпопулярніших екранів на ринку. Зібраний на популярному контролері HD44780U. З назви моделі слід, що екран складається з двох рядків по 16 символів. Підтримки російської мови в цій конкретній моделі немає.

Шина даних ш2с дозволяє по двох проводах підключати до 127 пристроїв, при чому одночасно. Даний I2C реалізований на чіпі PCF8574T.

Схема підключення:

Синя штука - змінний опір, дозволяє налаштувати контрастність екрану.

Перемичка зліва - відповідає за підсвічування екрану.

Блок з 4х контактів підключається до arduino так:

GND - GND
VCC - 5V
SDA - A4 (якщо Arduino MEGA, то до D20)
SCL - A5 (якщо Arduino MEGA, то до D21)

бібліотека

скетч

У дисплея може бути інший IIC адреса, замість 0x27 може виявитися 0x3F. Щоб точно визначити адресу можете скористатися сканером i2c пристроїв.

#include #include // задаємо адресу LCD екрана 0x27, 16 символів, 2 рядка LiquidCrystal_I2C lcd (0x27, 16, 2); void setup () (lcd.init (); // ініціалізувавши екран // включаємо підсвічування lcd.backlight (); // Встановлюємо позицію починаючи з якої виводиться текст. lcd.setCursor (2, 0); // виводимо рядок 1 lcd.print ( "Hello, World!"); // аналогічно виводимо другий рядок lcd.setCursor (1, 1); lcd.print ( "www.сайт"); ) Void loop () ()

Мабуть один з найпопулярніших екранів на ринку. Зібраний на популярному контролері HD44780U. З назви моделі слід, що екран складається з двох рядків по 16 символів. Підтримки російської мови в цій конкретній моделі немає.

Шина даних ш2с дозволяє по двох проводах підключати до 127 пристроїв, при чому одночасно. Даний I2C реалізований на чіпі PCF8574T.

Схема підключення:

Синя штука - змінний опір, дозволяє налаштувати контрастність екрану.

Перемичка зліва - відповідає за підсвічування екрану.

Блок з 4х контактів підключається до arduino так:

GND - GND
VCC - 5V
SDA - A4 (якщо Arduino MEGA, то до D20)
SCL - A5 (якщо Arduino MEGA, то до D21)

бібліотека

скетч

У дисплея може бути інший IIC адреса, замість 0x27 може виявитися 0x3F. Щоб точно визначити адресу можете скористатися сканером i2c пристроїв.

#include #include // задаємо адресу LCD екрана 0x27, 16 символів, 2 рядка LiquidCrystal_I2C lcd (0x27, 16, 2); void setup () (lcd.init (); // ініціалізувавши екран // включаємо підсвічування lcd.backlight (); // Встановлюємо позицію починаючи з якої виводиться текст. lcd.setCursor (2, 0); // виводимо рядок 1 lcd.print ( "Hello, World!"); // аналогічно виводимо другий рядок lcd.setCursor (1, 1); lcd.print ( "www.сайт"); ) Void loop () ()

Кожен радіоаматор після деякої кількості простих саморобок приходить до мети сконструювати щось грандіозне з використання датчиків і кнопок. Адже набагато цікавіше виводити дані на дисплей, ніж на монітор порту. Але тоді постає питання: який дисплей вибрати? І взагалі, як підключати його, що потрібно для підключення? Відповіді на ці питання будуть розглянуті в цій статті.

LCD 1602

Серед безлічі варіантів серед дисплеїв окремо хочеться відзначити саме дисплей LCD1602 на базі контролера HD4478. Існує цей дисплей в двох кольорах: білі букви на синьому тлі, чорні букви на жовтому тлі. Підключення LCD 1602 до Arduino також не викличе жодних проблем, так як є вбудована бібліотека, і нічого завантажувати додатково не потрібно. Дисплеї відрізняються не тільки ціною, але і розміром. Найчастіше радіоаматорами використовується 16 x 2, тобто 2 рядки по 16 символів. Але існує також і 20 x 4, де 4 рядки по 20 символів. Розміри і колір не грають ніякої ролі в підключенні дисплея lcd 1602 до Arduno, підключаються вони однаково. Кут огляду становить 35 градусів, час відгуку дисплея - 250 мс. Працювати може при температурах від -20 до 70 градусів за Цельсієм. При роботі використовує 4 мА на екран і на підсвічування 120 мА.

Де використовується?

Даний дисплей має свою популярність не тільки у радіоаматорів, а й у великих виробників. Наприклад, принтери, кавові апарати так само використовують LCD1602. Це обумовлено її низькою ціною, варто цей дисплей на китайських майданчиках 200-300 рублів. Купувати варто саме там, так як в наших магазинах націнки на цей дисплей дуже високі.

Підключення до Arduino

Підключення LCD +1602 до Arduino Nano і Uno не відрізняється. З дисплеєм можна працювати в двох режимах: 4 біта і 8. При роботі з 8-бітовим використовуються і молодші, і старші біти, а з 4-бітовим - тільки молодші. Працювати з 8-бітовим особливого сенсу немає, так як додасться для підключення ще 4 контакту, що не доцільно, адже швидкості вище не буде, межа оновлень дисплея - 10 раз в секунду. Взагалі, для підключення lcd 1602 до Arduino використовується багато проводів, що доставляє якісь незручності, але існує особливі Шілд, але про це пізніше. На фотографії зображено підключення дисплея до Arduino Uno:

Приклад програмного коду:

#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 ( "сайт"); // Виводимо текст) void loop () ()

Що ж робить код? Насамперед підключається бібліотека для роботи з дисплеєм. Як вже говорилося вище, ця бібліотека вже входить до складу Arduino IDE і додатково завантажувати і встановлювати її не треба. Далі визначаються контакти, які підключені до висновків: RS, E, DB4, DB5, DB6, DB7 відповідно. Після чого задається розмірність екрану. Так як ми працюємо з версією, де 16 символів і 2 рядки, то пишемо такі значення. Встановлюємо курсор в початок першого рядка і виводимо наш перший текст Hello World. Далі ставимо курсор на другий рядок і виводимо назву сайту. От і все! Було розглянуто підключення lcd 1602 до Arduino Uno.

Що таке I2C і навіщо він потрібен?

Як вже говорилося вище, підключення дисплея займає дуже багато контактів. Наприклад, при роботі з декількома датчиками і дисплеєм LCD 1602 контактів може просто не вистачити. Найчастіше радіоаматорами використовуються версії Uno або Nano, де не так багато контактів. Тоді люди придумали спеціальні Шілд. Наприклад, I2C. Він дозволяє підключати дисплей всього в 4 контакти. Це в два рази менше. Продається модуль I2C як окремо, де самому потрібно припаювати, так і вже припаяний до дисплея LCD 1602.

Підключення за допомогою I2C модуля

Підключення LCD 1 602 до Arduino Nano з I2C займає мало місця, всього 4 контакти: земля, харчування і 2 виходи для передачі даних. Харчування і землю підключаємо на 5V і GND на Arduino відповідно. Два контакту: SCL і SDA підключаємо до будь-яких аналоговим пінам. На фотографії можна побачити приклад підключення lcd 1 602 до arduino з I2C модулем:

Програмний код

Якщо для роботи з дисплеєм без модуля необхідно було скористатися тільки однією бібліотекою, то для роботи з модулем потрібно дві бібліотеки. Одна з них вже є в складі Arduino IDE - Wire. Іншу бібліотеку, LiquidCrystal I2C, треба завантажувати окремо і встановлювати. Для установки бібліотеки в Arduino вміст завантаженого архіву необхідно завантажити в кореневу папку Libraries. Приклад програмного коду з використанням I2C:

#include #include LiquidCrystal_I2C lcd (0x27,16,2); // Встановлюємо дисплей void setup () (lcd.init (); lcd.backlight (); // Включаємо підсвічування дисплея lcd..setCursor (8, 1); lcd.print ( "LCD 1 602");) void loop ( ) (// Встановлюємо курсор на другий рядок і нульовий символ. lcd.setCursor (0, 1); // Виводимо на екран кількість секунд з моменту запуску Ардуіно lcd.print (millis () / 1000);)

Як можна побачити, код майже не відрізняється.

Як додати свій символ?

Проблемою цих дисплеїв є те, що немає підтримки кирилиці і символів. Наприклад, необхідно вам який-небудь символ завантажити в дисплей, щоб він міг його відображати. Для цього дисплей дозволяє створити до 7 своїх символів. Уявіть таблицю:

0 0 0 1 0
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 0
0 0 0 0 0

Якщо 0 - там нічого немає, якщо 1 - це зафарбований ділянку. В наведеному вище прикладі можна побачити створення символу "усміхнений смайл". На прикладі програми в Arduino це буде виглядати наступним чином:

#include #include // Лобавляем необхідну бібліотеку // Бітова маска символу посмішки byte smile \u003d (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 () ()

Як можна побачити, була створена бітова маска така ж, як і таблиця. Після створення її можна виводити як змінну в дисплей. Пам'ятайте, що в пам'яті можна зберігати лише 7 символів. В принципі, цього і буває досить. Наприклад, якщо потрібно показати символ градуса.

Проблеми при яких дисплей може не працювати

Бувають такі випадки, коли дисплей не працює. Наприклад, включається, але не показує символи. Або зовсім не включається. Спочатку подивіться, чи правильно ви підключили контакти. Якщо ви використовували підключення lcd 1202 до Arduino без I2C, то дуже легко заплутатися в проводах, що може стати причиною некоректної роботи дисплея. Також слід упевнитися в тому, що контрастність дисплея збільшена, так як при мінімальній контрастності навіть не видно, чи включений LCD 1602 чи ні. Якщо це нічого не допомагає, то, можливо, проблема може криється в пайку контактів, це при використанні модуля I2C. Також частою причиною, при якій дисплей може не працювати, є неправильна установка I2C адреси. Справа в тому, що виробників багато, і вони можуть ставити різний адреса, виправляти потрібно тут:

LiquidCrystal_I2C lcd (0x27,16,2);

У дужках можна побачити два значення, 0x27 і 16,2 (16, 2 - є розміром дисплея, а 0x27 якраз таки адреса I2C). Замість цих значень можна спробувати поставити 0x37 або 0x3F. Ну і ще однією причиною є просто несправний LCD 1602. З огляду на, що практично все для Arduino виготовляється в Китаї, то не можна бути впевненим на 100%, що придбаний товар не є браком.

Плюси і мінуси LCD 1602

Розглянемо плюси і мінуси дисплея LCD 1602.

  • Ціна. Цей модуль можна придбати зовсім по демократичній ціні в китайських магазинах. Ціна становить 200-300 рублів. Іноді продається навіть разом з I2C модулем.
  • Легко підключати. Ймовірно, ніхто зараз не підключає LCD 1602 без I2C. А з цим модулем підключення займає всього 4 контакти, ніяких "павутини" з проводів не буде.
  • Програмування. Завдяки готовим бібліотекам працювати з цим модулем легко, всі функції вже прописані. А при необхідності додати свій символ витрачається всього пару хвилин.
  • За час використання тисячами радіоаматорами ніяких великих мінусів виявлено не було, тільки бувають випадки покупки шлюбу, так як в основному використовуються китайські варіанти дисплеїв.

У цій статті було розглянуто підключення 1602 до Arduino, а також були представлені приклади програм для роботи з цим дисплеєм. Він дійсно є в своїй категорії одним з кращих, не просто так його вибирають тисячі радіоаматори для своїх проектів!