8 (800) 350-30-16

Подключение дисплея с I2C интерфейсов

Дата: / Категория: Дисплеи / Автор: DOC_tr

В последнее время часто стали приходить вопросы о нерабочих / проблемах с подключением / каких-то косяках (нужное подчеркнуть) с I2C LCD1602 дисплеем.

Ну я и решил в этом разобраться - почему у людей это вызывает такую проблему. Давайте посмотрим.

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

Подключение достаточно простое - в любом случае 4 провода вставить намного легче чем подключать все 16, и происходит по следующей схеме.

Рассмотрим пример - подключать все будем с помощью данной библиотеки и следующего скетча

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("ROBOM.ru");
lcd.setCursor(8, 1);
lcd.print("LCD 1602");
}
void loop()
{
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
delay(1000);
}

Так как экран даже не инициализировался (при включении должен мигнуть) то тут дело либо в экране, либо в скетче. Проверив все дисплеи и отбросив мысль о том, что вся партия бракованная, я начал изучать скетч и код библиотеки.

Так как в данной библиотеке единственное что указывает на связь дисплея и Arduino это адрес - 0x27, будем искать правильный адрес. Для этого в библиотеке Wire есть метод beginTransmission. Как написано в официальной документации - начинает передачу на устройство I2C с указанного адреса.

И с помощью данного метода мы сможем достаточно просто реализовать сканер требуемого адреса. Ниже приведен скетч.

#include <Wire.h>

void setup(){
Wire.begin();
Serial.begin(9600);
Serial.println("\nI2C Сканер");
}

void loop(){
byte error, address;
bool nDevices;
Serial.println("Сканируем...");
nDevices = false;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0)
{
Serial.print("I2C адpес 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices = true;
break;
}
else if (error==4)
{
Serial.print("Неизвестная ошибка. Адрес 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (!nDevices)
Serial.println("I2C не найден\n");
else
Serial.println("успешно\n");
delay(5000);
}

В процессе сканирования мы увидим следующую картину

И как видим - адрес нашего устройства далеко не 0x27, хотя все русскоязычные мануалы твердят о том что он установлен по умолчанию, и использовать нужно только его.

Внесем небольшие изменения в наш скетч (Измененный кусок выделен)

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("ROBOM.ru");
lcd.setCursor(8, 1);
lcd.print("LCD 1602");
}
void loop()
{
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
delay(1000);
}

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

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

Ну на этом наверное все. Если у вас возникают проблемы с ним, то сканер и отвертка вам в помощь ;)

UPD. Информация от нашего читателя

Во первых - видимо у всех дисплеев разный адрес, потому что у некоторых работает с адресом 0x27. В любом случае перед использованием лучше узнать с помощью сканера требуемый адрес.

Во вторых - если у вас дисплей никак не хочет включаться, то найдите в библиотеке из данной статьи следующие строчки (17 - 20)

inline size_t LiquidCrystal_I2C::write(uint8_t value) {
send(value, Rs);
return 0;
}

И замените здесь

return 0;

на

return 1;

Теги: #LCD1602, #I2C

Ваша оценка:

Рейтинг: 8.7 (Оценок: 9)

Комментарии (559):

RogerEmura
59 минут назад
<a href=https://btcforearnings.blogspot.com/2021/12/Cryptocurrency%20mining.html>https://btcforearnings.blogspot.com/2021/12/Cryptocurrency%20mining.html</a>
Allissa
21 час назад
<a href="https://secretka.com.ua/">Ctrhtnbrb</a>
http://autoua.net/redirect?url=https://secretka.com.ua/
StephenwaK
2022-01-20 09:51
Hello there everyone, boys and girls! I compliment everyone on the upcoming along with coming holidays!
[url=https://www.sexytitspic.com/black-tits/]black tits pictures[/url]
[url=https://www.sexytitspic.com/tits-and-ass/]sexy ass big tits[/url]
https://www.sexytitspic.com/ - young big teen tits
[url=http://courtneyolsen.com/2014/04/29/launch-of-the-website-and-a-promo/?contact-form-id=117&contact-form-sent=33255&_wpnonce=41ef72a3e8]busty playboy centerfold[/url]
ForexDiX
2022-01-20 03:30
Forex Märkte. https://de.system-forex.com
Haroldfal
2022-01-19 19:00
My favs. Vanessa blake and sierra
sehr geil. ich liebe spritzende fotzen
pornbaby.cyou/pretty/black-men-fucking-teen-asians

Lucky basted fuck8ng a hot bbw
Drench her ass good
Andrejer
2022-01-19 02:28
<a href=https://плакетка.рф>панно</a> }
loveawake.ru
2022-01-18 20:06
Welcome to the world of adult Dating loveawake.ru
Richardspurn
2022-01-18 18:25
зрелые 50 порно бесплатные  https://ollporn.club/ новое красивое русское порно  

русское домашнее порно со  https://ollporn.club/categories/%D0%9A%D1%83%D0%BD%D0%B8%D0%BB%D0%B8%D0%BD%D0%B3%D1%83%D1%81/

[url=http://iswsc.org/iswscSAP/questionlist.php]голые девушки без сисек[/url]
[url=https://maniatek.com/think-about-the-fruit-fly-for-pest-control/#comment-49084]скачать голую грудь девушки[/url]
[url=http://yuit.la.coocan.jp/wak/cgi-bin/bbs/yybbs.cgi]кр&#109[/url]
[url=https://www.t-bannan.jp/pages/13/step=confirm/b_id=71/r_id=1/fid=a6210bb8f62dafb24af75abe60409ae3]секс 2011[/url]
[url=https://www.precisagro.com/salud-del-suelo?page=1058#comment-52941]смотреть порно ролики зрелые[/url]
[url=https://blogavocat.fr/space/apelbaum/content/essai_#comment-434907]красивые порно фильмы с переводом[/url]
[url=http://nestr.co/product/bathroom-lighting/#comment-543]самое красивое групповое порно[/url]
[url=http://nishimura-skn.com/publics/index/3/step=confirm/b_id=16/r_id=1/fid=d815431a34c4a1ca0a50bb38b294fffb]русское домашнее порно малолеток[/url]
[url=https://www.indianhillscamp.com/picnic-reservation-request-form/?ferr=9&fkey=16363241&fId=41736]порно зрелый отец[/url]
[url=http://kria.webpin.com/?gb=1#top]порно молодых студентов[/url]
605877_
Nikiasvef
2022-01-18 11:30
[url=https://female-rus.ru/watch.php?vid=787ef7175]Как выбрать обои - видео советы[/url]
Janenibcfeaf
2022-01-18 09:31
XEvil - лучший инструмент для решения капчи с неограниченным количеством решений, без ограничений по количеству потоков и высочайшей точностью!
XEvil 5.0 поддерживает более 12 000 типов изображений-captcha, включая reCAPTCHA, Google captcha, Yandex captcha, Microsoft captcha, Steam captcha, SolveMedia, reCAPTCHA-2 и (ДА!!!) Рекапча-3 тоже.

1.) Гибко: вы можете настроить логику для нестандартных капчей
2.) Легко: просто запустите XEvil, нажмите кнопку 1 - и он автоматически примет капчи из вашего приложения или скрипта
3.) Быстро: 0,01 секунды для простых капчей, около 20..40 секунд для рекапчи-2 и около 5...8 секунд для рекапчи-3

Вы можете использовать XEvil с любым программным обеспечением SEO/SMM, любым анализатором проверки паролей, любым аналитическим приложением или любым пользовательским скриптом:  
XEvil поддерживает большинство известных сервисов антикапчи API: 2Captcha, RuCaptcha.Com, AntiGate.com (Anti-Captcha), DeathByCaptcha, etc.

Интересно? Просто найдите на YouTube "XEvil" для получения дополнительной информации
Вы читаете это - значит, это работает! ;)))

P.S. Новый XEvil 6.0 сломает hCaptcha, FunCaptcha и reCAPTCHA Enterprize

Комментарий:

Copyright © RobOM.ru 2022 г. Все права защищены