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)

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

Zilvak
2021-04-09 06:30
compare levitra viagra viagra
viagra levitra or viagra
<a href="https://viagwithoutdct.com/#">viagra without doctor
</a> - viagra dosage forum newbie
https://viagwithoutdct.com/# - viagra without a doctor prescription
viagra 10mg or 20mg joined
HeatherCob
2021-04-09 00:51
Обход любой CAPTCHA: XEvil 5.0 лучший в своём деле.

Взлом бесплатно и быстро captchas Google, Яндекса, Facebook, ВКонтакте, Bing, MailRu, SolveMedia, Steam,
а также свыше 12000 других видов капчи,
с высокой скоростью - 100 изображений в секунду, и точностью - 80%..100%.
В XEvil 5.0 реализовано подключение любых SEO/SMM программ - XRumer, GSA, ZennoPoster, VKBot, A-Parser,
и многих других. Доступна абсолютно бесплатная демо-версия. Заинтересованы? ищите в Ютубе "XEvil"



XEvil Net
Zonmes
2021-04-01 12:09
sildenafil vs sildenafil which is better addlink.php
sildenafil from canada online termination
<a href="https://sildenafilr.com/#">generic viagra sildenafil
</a> - sildenafil improvements
https://sildenafilr.com/# - what is sildenafil citrate 100mg pills
sildenafil 20mg canada who is online
Awnken
2021-03-31 15:04
what dosage fildena order generic fildena online
sulaj  molester
<a href="https://fildenapharm.com/#">fildena extra power 150
</a> - oyarzun  incumbency
https://fildenapharm.com/# - online apotheke fildena fildena fildena
poussee fildena generics gender
HalidCoobe
2021-03-30 04:01
acquisto viagra generico italia
buy viagra online registered users
<a href="https://viasldnfl.com/#">viagra for sale cheap
</a> - cialis real
https://viasldnfl.com/# - viagra for sale cheap
cialis from canada no prescription search
HeatherCob
2021-03-28 00:47
XEvil 5.0 решает любую капчу, включая Google ReCaptcha ;)

Обход бесплатно и быстро капчи Google, Яндекса, Фэйсбука, VK, Microsoft, Mail, SolveMedia, Hydra,
а также свыше 12000 других видов капч,
с высокой скоростью - 100 изображений в секунду, и точностью - 80%..100%.
В XEvil 5.0 реализовано подключение любых SEO/SMM программ - XRumer, GSA, ZennoPoster, VKBot, A-Parser,
и многих других. Доступна абсолютно бесплатная демо-версия. Заинтересованы -  см. в YouTube "XEvil"



XEvil Net
upssTaunk
2021-03-28 00:42
thanksfor answer
Azidbal
2021-03-27 07:48
evasionu 40mg of cialis
kuldigas  melanocetus
<a href="https://qtadalafil.com/#">generic tadalafil 20 mg
</a> - diskusija  trading
https://qtadalafil.com/# - cialas
plaaslike
EzgarSic
2021-03-27 06:17
levitra vs levitra vs levitra weight loss rbook.cgi?page=
discounted levitra tablets
<a href="https://pharmacy20mg.com/#">levitra for sale and viagra
</a> - can ed be reversed
https://pharmacy20mg.com/# - how do americans buy levitra cheaply
levitra levitra or levitra which is best
EzerAvabs
2021-03-24 07:14
disharmony zithromax and liver
diver  veltitas
<a href="https://zithromaxdc.com/#">zithromax 500mg
</a> - veriena  hitler
https://zithromaxdc.com/# - zithromax z-pak without prescription
haplos

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

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