Всеки радиолюбител, след някои простички DIY работа, стига до целта да построи нещо грандиозно с помощта на сензори и бутони. В крайна сметка е много по-интересно да се показват данни на дисплея, отколкото на монитора на порта. Но тогава възниква въпросът: кой дисплей да изберете? И като цяло, как да го свържете, какво е необходимо за свързване? Отговорите на тези въпроси ще бъдат обсъдени в тази статия.
LCD 1602
Сред многото опции между дисплеите, бих искал да откроя LCD1602 дисплея, базиран на контролера HD4478. Има този дисплей в два цвята: бели букви на син фон, черни букви на жълт фон. Свързването на LCD 1602 към Arduino също няма да създаде проблеми, тъй като има вградена библиотека и не е необходимо да изтегляте нищо допълнително. Дисплеите се различават не само по цена, но и по размер. Често радиолюбителите използват 16x 2, тоест 2 реда от 16 знака. Но има и 20 x 4, където има 4 реда от 20 знака. Размерите и цветът не играят никаква роля при свързването на lcd 1602 дисплея към Arduno, те са свързани по същия начин. Ъгълът на гледане е 35 градуса, времето за реакция на дисплея е 250 ms. Може да работи при температури от -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(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("Здравей, свят!"); // Показване на текст 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.
Какво е 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, съдържанието на изтегления архив трябва да бъде качено в главната папка Libraries. Пример за код, използващ I2C:
include include LiquidCrystal_I2C lcd(0x27, 16, 2); // Настройване на дисплея void setup() { lcd.init(); lcd.backlight();// Включете подсветката на дисплея lcd.print("FB.ru"); lcd.setCursor(8, 1); lcd.print("LCD 1602"); } void loop() { // Задаване на курсора на втори ред и нулев символ. lcd.setCursor(0, 1); // Отпечатване на броя секунди от стартирането на arduino 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 // Включете необходимата библиотека // Символ на усмивка битмаска байт 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, усмивка); // Създаване на символ номер 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 пина, няма да има "мрежи" от проводници.
- Програмиране. Благодарение на готови библиотеки, работата с този модул е лесна, всички функции вече са регистрирани. И ако трябва да добавите своя герой, отнема само няколко минути.
Против
По време на употреба от хиляди радиолюбители не са установени големи минуси, има само случаи на купуване на брак, тъй като се използват основно китайски опции за показване
Тази статия обсъди как да свържете LCD 1602 дисплея към Arduino, а също така представи примерни програми за работа с този дисплей. Той наистина е един от най-добрите в своята категория, не само хиляди радиолюбители го избират за своите проекти!