Свързване на LCD 1602 към Arduino: описание, характеристики, инструкции, характеристики, проблеми и техните решения

Всеки радиолюбител след определен брой прости кълнове достига до целта да изгради нещо грандиозно в използването на сензори и бутони. Много по-интересно е да се показват данните, отколкото порта за монитор. Но тогава възниква въпросът: кой дисплей да изберем? И като цяло, как да го свържете, какво е необходимо за свързване? Отговорите на тези въпроси ще бъдат разгледани в тази статия.

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 mA за екрана и 120 mA за подсветката.


Къде се използва?

Този дисплей има своята популярност не само в радиолюбителите, но и в големите производители. Например, принтери, кафе машини също използват LCD1602. Това се дължи на ниското му нивоцената си струва този дисплей на китайските дворове 200-300 рубли. Закупуването е точно там, както в магазините ни, надбавките на този дисплей са много високи.

Свързване с Arduino

Свързването на LCD 1602 с Arduino Nano и Uno не се различава. Дисплеят може да работи в два режима: 4 бита и 8. При работа с 8 бита се използват както по-млади, така и по-стари битове, а с 4-битов - само младши. Няма специален смисъл да се работи с 8-битов, тъй като ще се добавят още 4 контакта, което не е целесъобразно, защото скоростта няма да бъде по-висока, а лимитът на актуализациите на дисплея - 10 пъти в секунда. Като цяло, много кабели се използват за свързване на lcd 1602 към Arduino, което носи някакво неудобство, но има специални шилди, но повече за това по-късно. Картината показва връзката на дисплея с Arduino Uno:


Пример за програмен код:

# включват: Добавяне на необходимата библиотека
LiquidCrystal lcd (765 432); //(RS, E, DB4 DB5 DB6 DB7)

void setup () {
lcd. Започва (16 2); //Задаване на размера на екрана

lcd.setCursor (0 0); //Задаване на курсора в началото на първия ред
lcd.print ("Здравей, свят!"); //Изходен текст
lcd.setCursor (0 1); //Инсталирайте курсора в началото на ред 2
lcd.print ("fb.ru"); //Изведете текста
}

void loop () {
}

Какво прави кодът? Първата задача е да свържете библиотека за работа с дисплея. Както вече споменахме, тази библиотека вече е част от Arduino IDE и не е необходимо допълнително изтегляне и инсталиране. Определете контактите, които са свързани към следното: RS, E, DB4 DB5 DB6 DB7, съответно. След това се определя размерът на екрана. Тъй като работим върху версия с 16 знака и 2 реда, пишем такавастойност. Поставяме курсора в началото на първия ред и изваждаме първия си текст Hello World. След това поставете курсора на втория ред и покажете името на сайта. Това е всичко! Беше разгледана връзката на LCD 1602 с Arduino Uno.


& lt; script type = "text /javascript" & gt;
може да blockSettings2 = {blockId: "R-A-271049-5", renderTo: "yandex_rtb_R-A-70350-39", async: 0};
if (document.cookie.indexOf ("abmatch =")> = 0) blockSettings2.statId = 70350;
Функция (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (функция () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("скрипт") , d = b.createElement ("скрипт"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (това, този.документ," yandexContextAsyncCallbacks ");

Какво е I2C и защо е необходимо?

Както беше споменато по-горе, връзката на дисплея заема много контакти. Например, при работа с множество сензори и LCD дисплей 1602 контактите може просто да не са достатъчни. Често радиолюбителите използват версии на Uno или Nano, където няма много контакти. Тогава хората дойдоха със специална шилда. Например, I2C. Тя ви позволява да свържете дисплея само с 4 контакта. Това е два пъти по-малко. Модулът I2C се продава отделно, където е необходимо да се запоява, и вече е споен с LCD дисплея 1602.

Свързване чрез I2C модул

Свързването на LCD 1602 към Arduino Nano с I2C заема малко място, само 4 контакта: земя, мощност и 2 изхода за предаване на данни. Мощност и земята са свързани към 5V и GND съответно на Arduino. Остават два контакта: SCL и SDA са свързани към всякакви аналогови игли. На снимката можете да видите пример за свързване на lcd 1602 към arduino с I2C модул:

Код на програмата

Ако работи с дисплея без модулнеобходимо е да се използва само една библиотека, след което за работа с модула са необходими две библиотеки. Един от тях вече е в Arduino IDE - Wire. Друга библиотека, LiquidCrystal I2C, трябва да бъде изтеглена отделно и инсталирана. За да инсталирате библиотеката Arduino, съдържанието на изтегления архив трябва да се изтегли в основната директория на библиотеките. Пример код, използващ I2C:


& lt; script type = "text /javascript" & gt;
може да blockSettings3 = {blockId: "R-A-271049-6", renderTo: "yandex_rtb_R-A-70350-44", async: 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings3.statId = 70350;
Функция (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (функция () {Ya.Context.AdvManager.render (blockSettings3)}), e = b.getElementsByTagName ("скрипт") , d = b.createElement ("скрипт"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (това, този.документ," yandexContextAsyncCallbacks ");
# включват
# включват
LiquidCrystal_I2C lcd (0x27162); //Инсталирайте дисплея
void setup ()
{
lcd.init ();
lcd.backlight (); //Включване на подсветката на дисплея
lcd.print ("FB.ru");
lcd.setCursor (8 1);
lcd.print ("LCD 1602");
}
void loop ()
{
//Поставете курсора на втория ред и нулевия символ.
lcd.setCursor (0 1);
//Показваме броя на секундите след началото на arudui
lcd.print (millis () /1000);
}

Както виждате, кодът е почти същият.

Как да добавите вашия характер?

Проблемът с тези дисплеи е, че няма поддръжка за кирилица и символи. Например, имате нужда от символ, за да изтеглите дисплея, така че той да може да го покаже. За тази цел дисплеят ви позволява да създадете до 7 от вашите знаци. Представете си таблицата:

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

Ако 0 - няма нищо, ако 1 е боядисана област. В горния пример можете да видите създаването на усмивка с усмивка. Например, програмата Arduino ще изглежда така:

#include
#include //Нуждаем се от библиотеката
//Маска на растерна графика smile
байт smile
=
{
B00010
B00001
B11001
B00001
B11001
B00001
B00010
};
LiquidCrystal lcd (765 432); //(RS, E, DB4 DB5 DB6 DB7)

void setup () {
lcd. Започва (16 2); //Задаване на размера на екрана

lcd.createChar (1 усмивка); //Създаване на знак на номер 1

lcd.setCursor (0 0); //Поставяме курсора в началото на ред 1
lcd.print ("1"); //Премахване на усмивка (символ на номер 1) - "1"
}

void loop () {
}

Както можете да видите, създадена е маска на бита същото като на масата. Веднъж създаден, той може да бъде показан като променлива на дисплея. Не забравяйте, че в паметта могат да се съхраняват само 7 символа. По принцип това е достатъчно. Например, ако искате да покажете знак в градуси.

& lt; скрипт async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

& lt; скрипт & gt; (adsbygoogle = window.adsbygoogle || []). push ({});

Проблеми, с които дисплеят може да не работи

Има случаи, когато дисплеят не работи. Например, включва се, но не показва знаци. Или въобще нее включено. Първо вижте дали сте свързали правилно контактите. Ако сте използвали връзката lcd 1202 към Arduino без I2C, е много лесно да се заплете в кабелите, което може да доведе до неправилно стартиране на дисплея. Също така се уверете, че контрастът на дисплея е увеличен, тъй като дори с минимален контраст не се вижда дали LCD 1602 е включен или не. Ако това не помогне, тогава може би проблемът е в запояването на контактите, това е, когато използвате модула I2C. Също така честата причина, поради която дисплеят може да не работи, е че адресът на I2C е зададен неправилно. Факт е, че много производители, и те могат да поставят различен адрес, трябва да бъдат фиксирани тук:


& lt; script type = "text /javascript" & gt;
може да blockSettings = {blockId: "R-A-70350-45", renderTo: "yandex_rtb_R-A-70350-45", async:! 0};
if (document.cookie.indexOf ("abmatch =")> = 0) blockSettings.statId = 70350;
Функция (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (функция () {Ya.Context.AdvManager.render (blockSettings}), e = b.getElementsByTagName ("скрипт") , d = b.createElement ("скрипт"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (това, този.документ," yandexContextAsyncCallbacks ");
LiquidCrystal_I2C lcd (0x27162);

В скоби могат да се видят две стойности, 0x27 и 162 (16 2 е размерът на дисплея, а 0x27 е същият като I2C адреса). Вместо тези стойности, можете да опитате да поставите 0x37 или 0x3F. Е, друга причина е просто дефектен LCD 1602. Като се има предвид, че почти всичко за Arduino е направено в Китай, не можете да сте сигурни 100%, че закупеният артикул не е брак.

Плюсове и минуси на LCD 1602

Помислете за предимствата и недостатъците на дисплея LCD 1602. Плюсове
  • Цена. Този модул може да бъде закупен на много достъпна цена в китайските магазини. Цената е200-300 рубли. Понякога се продава дори с модула I2C.
  • Лесно се свързва. Вероятно никой не свързва LCD 1602 без I2C сега. И с този модул, връзката отнема само 4 контакта, няма "паяк" от проводниците няма да бъде.
  • Програмиране. Благодарение на готовите библиотеки е лесно да се работи с този модул, всички функции са вече регистрирани. И ако трябва да добавите символа, това отнема само няколко минути.
  • Против
  • По време на използването на хиляди радиолюбители не бяха установени големи недостатъци, но има случаи на закупуване на брак, тъй като се използват предимно китайски варианти.
  • В тази статия се разглежда връзката на LCD 1602 с Arduino, както и примери за програми за работа с дисплея. Той наистина е един от най-добрите в своята категория, не само защото е избран от хиляди радиолюбители за своите проекти!

    Свързани публикации