Символьний LCD та Arduino

У цій інструкції показано, як підключати Arduino і використовувати LCD екрани на 16х2 і 20х4.

Ці екрани мають вбудоване підсвічування на базі малопотужного світлодіода, працюють від +5 В. Для підключення цих рідкокристалічних екранів знадобиться 6 контактів. Можна використовувати будь-які піни на Arduino!

Інструкція написана на підставі LCD екранів від компанії Adafruit - blue&white 16x2, RGB 16x2 LCD, і blue&white 20x4, RGB 20x4. Якщо ви використовуєте РК-екран від іншого виробника, немає 100% гарантії, що він спрацює (хоча в 99% випадків все працює).

Символьні та графічні LCD – у чому різниця?

Існує безліч різних РК екранів. У цій статті ми розглянемо символьний (character) LCD. Подібні екрани – чудовий варіант для відображення тексту. Можна налаштувати і відображати іконки, але розмір цих іконок не повинен перевищувати 7 пікселів (дуже маленькі!).

На фото нижче показано приклад роботи LCD монітора на 16 символів з двома рядками:

використовувати

Якщо ви придивитесь уважніше, ви побачите маленькі прямокутники, в яких відображаються символи. Кожен прямокутник – це окрема сітка пікселів. Для порівняння, нижче показаний графічний (graphical) LCD екран:

символьний

На графічному рідкокристалічному екрані одна велика сітка пікселів (в даному прикладі - 128х64). На ньому можна відобразити текст, але краще виводити зображення. Графічні LCD зазвичай більше за розмірами, на них більше контактів для підключення, використовувати їх складніше, ніж текстові.

У цій статті ми розглянемо лише текстові/символьні екрани!

Різні моделі LCD екранів

Після того, як ми обмежили тип екранів, розглянемо, які вони бувають.

використовувати

Незважаючи на те, що вони використовуються тільки для відображення тексту, існують різні моделі та форм-фактори: у лівому верхньому кутку РК екран 20x4 з білим текстом на синьому тлі, у правому верхньому – 16x4 з чорним текстом на зеленому тлі, зліва внизу – 16x2 з білим текстом на блакитному тлі та 16x1 з чорним текстом на сірий фон.

Хороша новина: всі ці екрани взаємозамінні. Якщо ви налаштували один із них, ви можете замінити його на іншу модель. Скетч Arduino доведеться трохи змінити, але підключення однакове!

контактів

У цій частині ми використовуємо LCD екрани з однією рейкою та 16 контактами для підключення (дивіться фото вище). Є LCD з 2 рейками по 8 контактів для підключення (на малюнку нижче).

Arduino

Підключити другу модель до безпайкової монтажної плати складніше.

Підключення символьного LCD екрану до Arduino

Встановлюємо рейки контактів

Arduino

Крім LCD екрана, вам знадобиться додаткова обв'язка. По-перше - потенціометр на 10 кому. За допомогою потенціометра ми налаштовуватимемо контрастність дисплея. На кожному РК екрані різні налаштування контрастності, тому без регулювання не обійтися. Крім того, вам знадобиться рейки контактів 0.1".

використовувати

Якщо рейки з контактами надто довга, зайві контакти модно просто відрізати!

Вам потрібно припаяти контакти до РК-дисплея.

Під час паяння будьте гранично обережні, не пошкодьте ваш Breadboard! Можете спочатку "прихопити" перший і 16 контактів, а потім вже припаяти інші.

підключення

Рекомендуємо для паяння встановити рейки на макетці, а зверху поставити екран. У такому положенні екран буде досить надійно зафіксований і процес паяння пройде легко та невимушено ;)!

Харчування та підсвічування

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

Ми починаємо підбиратися до цікавих речей! Встановіть LCD на breadboard.

Макетну плату запитуємо від нашого Arduino. Підключіть +5V до червоної рейки, а Gnd – до синьої.

Після цього підключимо підсвічування нашого LCD екрану. Підключіть контакт 16 до gnd, а пін 15 до +5V. На більшості РК екранів передбачені резистори для підсвічування.

Якщо ж на вашому модулі резисторів не виявилося, доведеться додати один між 5V і піном 15. Для розрахунку номіналу резисторів уточніть максимальний струм для живлення підсвічування та зразкове значення падіння напруги з даташиту. Відніміть значення падіння напруги від 5 В, після цього розділіть на максимальну силу струму і округліть до найближчого стандартного значення номіналу резистора. Наприклад, якщо падіння напруги становить 3.5, а сила струму 16 мА, номінал резистора дорівнюватиме: (5 - 3.5)/0.016 = 93.75 Ом, або 100 Ом після округлення до стандартного значення. Якщо ви не можете знайти даташит, використовуйте резистор на 220 Ом. Щоправда, у цьому випадку підсвічування може бути досить блідим.

Підключіть ваш Arduino до живлення. Підсвічування повинне спалахнути.

До речі, на деяких дешевих LCD екранах підсвічування не передбачене!

Схема для налаштування контрасту

Ланцюг для налаштування контрасту

Встановлюємо потенціометр. На фото він знаходиться праворуч від піна 1.

Підключіть одну сторону потенціометра до +5V, а другу - до Gnd. Середній контакт потенціометра підключіть до 3 пін на LCD.

Тепер підключаємо логіку нашого екрану - це окремий від підсвічування ланцюг! Пін 1 йде до Gnd, апін 2 – до +5V.

Увімкніть ваш Arduino. Якщо на LCD моніторі передбачено підсвічування, воно повинно спалахнути. Покрутіть ручку потенціометра, щоб побачити перші прямокутники пікселів на першому рядку.

Якщо все спрацювало, вітаємо. Це означає, що логіка, підсвічування та контраст працюють! Якщо не вийшло, не переходьте до наступних кроків інструкції, доки не з'ясуйте, у чому помилка!

Остаточне підключення

Від D0 до D7, RS, EN та RW. D0-D7 – це контакти, на яких зберігається значення, що передаються на дисплей. Контакт RS повідомляє контролеру, чи будемо відображати дані (наприклад, ASCII символ) або це керуючий байт (наприклад, зміна положення курсору). Контакт EN – це скорочення від 'enable' (доступно), за допомогою цього контакту ми повідомляємо LCD, коли дані готові до зчитування. Контакт RW використовується для встановлення напрямку - ми хочемо відобразити (зазвичай) або рахувати (використовується рідше) дані з дисплея.

Не всі ці контакти слід підключати до Arduino. Наприклад, використовувати RW не потрібно, якщо ми лише відображаємо дані на екрані, так що його достатньо підтягнути до контакту Gnd. Крім того, можна обмінюватися даними з LCD екраном, використовуючи 4 контакти замість 8. Ймовірно, виникає закономірне питання, у яких випадках використовують 8 контактів? Швидше за все це впливає на швидкість передачі даних. Тобто, використовуючи 8 контактів замість 4, ви можете збільшити швидкість обміну інформацією у 2 рази. В даному випадку, швидкість не важлива, тому ми використовуємо 4 контакти для підключення LCD до Arduino.

Отже, нам знадобляться 6 контактів: RS, EN, D7, D6, D5 та D4.

Для роботи з LCD екраном будемо використовувати бібліотеку LiquidCrystal library, яка значно полегшує процес налаштування пінів.Одна з переваг цієї бібліотеки: ви можете використовувати будь-які піни на Arduino для підключення контактів РК-дисплея. Так що після закінчення цього гайду ви зможете легко замінити контакти, якщо це критично для вашого проекту.

контактів
символьний
контактів
символьний
контактів
Arduino
Arduino
підключення
Остаточне підключення дисплея

Як згадувалося вище, ми не будемо використовувати пін RW, так що 'підтягуємо' його до землі. Це пін 5.

Після підключення RS - це пін #4. Ми використовуємо коричневий провід для підключення до цифрового контакту #7 на Arduino.

Білим дротом підключаємо контакт EN-пін #6 до цифрового піну digital #8 на Arduino.

Підійшла черга до контактів data. DB7 – це пін #14 на LCD. Він підключається помаранчевим дротом до піну #12 на Arduino.

Залишилося три контакти data, DB6 (пін #13 жовтий), DB5 (пін #12 зелений) та DB4 (пін #11 синій). Вони підключаються до пін #11, 10 та 9 на Arduino відповідно.

В результаті підключення у вас вийде щось схоже на фото зліва.

Використовуємо символьний LCD

Настав час завантажити скетч на Arduino для керування LCD екраном. Бібліотека LiquidCrystal library встановлена ​​в Arduino IDE за промовчанням. Так що нам достатньо завантажити один із прикладів і трохи підкоригувати відповідно до тих пін, які ми використовували для підключення.

Відкрийте скетч File→Examples→LiquidCrystal→HelloWorld.

Оновлюємо інформацію про піни. Шукаємо наступний рядок:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

Тепер можете компілювати та завантажувати скетч на Arduino.

Arduino

Якщо треба, настройтеконтраст

контактів

Природно, ви можете використовувати РК-дисплей з будь-якими розмірами. Наприклад, на фото нижче показано роботу LCD 20x4.

контактів

Або чорний текст на зеленому тлі:

контактів

Одна з переваг екранів з чорним текстом на зеленому тлі - можливість відключення підсвічування.

символьний

Задіємо наскільки рядків

Давайте розберемося, як РК ​​екран обробляє довгі повідомлення та задіює кілька рядків. Наприклад, якщо ви зміните наступний рядок:

lcd.print("hello, world! this is a long long message");

LCD дисплей 16x2 обріже все після 16-го символу:

використовувати

Але LCD дисплей 20x4 перенесе не відображені символи з першого рядка на третій (другий рядок продовжиться на четвертому). Не дуже зручно, але на цьому етапі доведеться змиритися. Так що при відображенні довгих рядків, рахуйте символи, щоб не перевищити допустиму довжину.

Arduino

LCD з RGB підсвічуванням

Ці екрани працюють так само, як і звичайні, але для підсвічування встановлені три світлодіоди (червоний, зелений, синій), так що ви можете використовувати різні кольори підсвічування.

Після підключення LCD та його перевірки відповідно до інструкцій вище, підключіть світлодіоди до ШИМ аналогових пін вашого Arduino для точного налаштування кольору. Якщо ви використовуєте Arduino Uno, у вас мало залишитися три вільні ШІМ контакти. підключіть червоний світлодіод (16 контакт на LCD) до Digital 3, зелений світлодіод (контакт 17) – до Digital 5, а синій світлодіод (18 контакт на LCD) – до digital 6. На LCD модулі вже передбачені резистори, так що підключати додаткові не треба.

символьний

Тепер завантажте наведений нижче скетч Arduino.

// Включаємо в скетч бібліотеки:

#define REDLITE 3

#define GREENLITE 5

#define BLUELITE 6

// оголошуємо кількість контактів, які використовуємо

// для передачі даних

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// Яскравість можна змінювати в діапазоні 0-> 255

int brightness = 255;

// налаштовуємо кількість стовпців та рядків на LCD:

контактів
використовувати
Arduino
Arduino
Arduino
використовувати