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)

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

ZormanChict
2021-06-22 07:40
cialis and alcohol side effects topics
cialis online without prescription
<a href="http://vtadalafil.com/#">when does cialis patent expire
</a> - cialis generico no dogana
http://vtadalafil.com/# - cialis shelf life
yohimbe cialis
Zavierves
2021-06-22 00:38
cialis you cannot delete your posts in this forum
does cialis work with alcohol bbs.cgi?page=
<a href="https://walmartcialispharm.com/#">cialis over the counter at walmart
</a> - cialis 5mg works it is currently
https://walmartcialispharm.com - generic cialis over the counter at walmart
help ordering cialis
ZeterTex
2021-06-19 04:48
fortuny stromectol cheap
zino [pdf -  new zealand data sheet stromectol ivermectin 3 mg tablet 2011
<a href="http://stromectol-ivermectin.com/#">stromectol generic
</a> - stromectol otc cvs
http://stromectol-ivermectin.com/# - stromectol for chickens
duszyludzkie ivermectin for puppies
Lolitelic1518
2021-06-16 04:58
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.com, RuCaptcha, AntiGate.com (Anti-Captcha), DeathByCaptcha, etc.

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

XEvil.Net

С уважением, Lolitolic5968
Juztinlib
2021-06-14 18:25
upyorke [pdf -  new zealand data sheet stromectol ivermectin 3 mg tablet 2011
tandety ivermectin-pyrantel - generic to heartgard plus
<a href="http://ivermectinforhuman.com/#">stromectol manufacturer
</a> - what is the dosage for stromectol
http://ivermectinforhuman.com/# - ivermectin covid
rebutgen ivermectin stromectol cancer
ZevinOxics
2021-06-14 02:23
can women take cialis
cialis side effects with alcohol guestbook.php?act=
<a href="http://cialiswa1mart.com/#">cialis over counter walmart
</a> - cialis commercial last post
http://cialiswa1mart.com - generic cialis otc
order cialis online
Zeronrhice
2021-06-12 12:40
buy cialis black
buy cialis slidell
<a href="http://cialiswalmartpharm.com/#">walmart cialis
</a> - online doctor cialis side effects
http://cialiswalmartpharm.com - cialis over counter walmart
viagra versus cialis
Scoethync
2021-06-10 09:58
outlying how much ivermectin paste to give a dog
fleshyfft ivermectin for sheep
<a href="http://stromectol-otc.com/#">stromectol
</a> - ivermectin chickens
http://stromectol-otc.com/# - stromectol dosing
tethered stromectol sans ordonnance en pharmacie
Zertdib
2021-06-09 08:38
stryker stromectol action
secondary ivermectin stromectol scabies
<a href="http://ivermectin4humans.com/#">oral ivermectin
</a> - stromectol ivermectin tablets
http://ivermectin4humans.com/# - ivermectin pour on
cstulecia how much ivermectin to give a 50lb dog
ZobleFreem
2021-06-06 03:46
eduacademic ivermectin drug
istovremeno ivermectin for people
<a href="http://stromectoloverthecounter.com/#">stromectol dosing
</a> - what does ivermectin treat
http://stromectoloverthecounter.com/# - ivermectin stromectol leukemia
spits stromectol ivermectin

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

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