LCD I2C arduino не могу подключить
- Войдите на сайт для отправки комментариев
Втр, 22/03/2016 - 15:31
Добрый день. Пришел набор из Китая, пытаюсь подключить экран, и ничего не получается, пробовал различные библиотеки, различные адреса ничего не помогает, хотел таким сканером // -------------------------------------- // i2c_scanner // // Version 1 // This program (or code that looks like it) // can be found in many places. // For example on the Arduino.cc forum. // The original author is not know. // Version 2, Juni 2012, Using Arduino 1.0.1 // Adapted to be as simple as possible by Arduino.cc user Krodal // Version 3, Feb 26 2013 // V3 by louarnold // Version 4, March 3, 2013, Using Arduino 1.0.3 // by Arduino.cc user Krodal. // Changes by louarnold removed. // Scanning addresses changed from 0...127 to 1...119, // according to the i2c scanner by Nick Gammon // [url]http://www.gammon.com.au/forum/?id=10896[/url] // Version 5, March 28, 2013 // As version 4, but address scans now to 127. // A sensor seems to use address 120. // Version 6, November 27, 2015. // Added waiting for the Leonardo serial communication. // // // This sketch tests the standard 7-bit addresses // Devices with higher bit address might not be seen properly. // #include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); // Leonardo: wait for serial monitor Serial.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // wait 5 seconds for next scan }
попробовать опредилить адрес заливаю его а мне только показывает Scanning... и дальше ничего. Что подскажете сделать?
а почему дисплей подключен сразу к 3,3 В и к 5 В?
там просто плохо видно он подключен к 5 и к земле
Все вы правильно делаете. Ищите контакт со стороны UNO, попробуйте разъемы SCL и SDA на UNO рядом с кварцем.
Можете рассмотреть чип на переходнике. Маркировка PCF8574T даст I2C адрес по умолчанию 0x27, PCF8574AT - адрес 0x3F.
Я это все уже пробовал к сожалению ничего не помогло, а маркировка ida8574p n2k0h5
сканер I2C какой адрес выдает?
в том и дело что сканер ничего не выдает пишет что началось сканирование и все ничего более не происходит
Код сканера корректно обрабатывает ситуации, когда вообще никакое устройство не подключено к I2C. Был неправ, дело не в контакте. Что-то у вас с программной средой.
Маркировкой чипа адаптера сильно озадачили. Но дело все равно не в этом.
и что посоветуете сделать? уже куча всего перепробовал
прописать ноги Ардуины как входы, дальше сделать пустой бесконеный цикл и посмотреть тестером наряжение на ногах, т.е. проверка на наличие подтягивающих резисторов к +5В
Ну подсказал же уже. Железо тут вообще ни при чем, этот код работает на пустой плате. Далек от среды ардуино, но специально запустил приведенный вами код на такой же плате, что и на фотографии. Библиотека Wire работает хорошо и не зависает, мне не удалось найти в ее коде возможные причины зависания при неподключенном устройстве.
Если правильно вас понял, вы видите в окне терминала слово Scanning... и на этом все заканчивается. Но чудес не бывает (только если очень редко). Из цикла for вы не выходите, зависнуть там можно только при входе в Wire (ну или в twi.h, которая под ней), никто из них не зависает (у меня, специально мучил).
Какой вывод? Разбирайтесь со средой, с ее установками или что там. Вообще что-нибудь, не требующее перефирии, запускается?
И вам спасибо. Благодаря вам посмотрел библиотеки, twi.h забавно написана, хорошо.
ну я пробовал различные элементы подключать все делает норм а вот с экраном проблемы
Возможно проблему надо сначала поискать в конвертере I2C или соединениях. Попробуйте отпаять плату и подключить экран напрямую, будет ли выводить.
У меня тоже экран не сразу завелся, кстати. Решилось заменой библиотеки LiquidCrystal_I2C.
Попробуй поменять между собой провода на 4 и 5 ноги между собой. Китайцы иногда путают их на I2c преобразователях.
Hi Taras!
Проверь контакты и подтягивающие резисторы на TWI-шине.
Либо какой-то баг с переменными среды - Arduino IDE
У меня этот же код выдает
===
Scanning...
I2C device found at address 0x27 !
done
====
Только что попробовал залить в аналогичную конструкцию.
Плата Arduino Pri Mini
Плата PCF8574 - LCD куплена отдельно и прицеплена на разъеме к 1602L REV.A
BTW, на этом модуле LCD подсветка (контакты 15 и 16) перенесены на другую сторону разъема
2 All:
Завелось все сразу с библиотекой <LiquidCrystal_I2C.h>
Вот только в версии 1.хх библиотеки конструкция
float var;
...
var = GetValue();
lcd.print("value=");
lcd.print(val);
...
работает некорректно - печатает перед десятичной точкой только старшее десятичное значение val...
Решилось сменой версии библиотеки на 2.х, так что детально разбираться не полез :-)
Yours sincerely, Dmitry aka wcat
...и перевернуть ноги sda scl на TWI
;-)
Yours sincerely, Dmitry aka wcat
...и перевернуть ноги sda scl на TWI
;-)
Yours sincerely, Dmitry aka wcat
Не, где нить в одном месте ;)
я пробовал уже очень много библиотек, а отпаять сейчас нет возможности, а можно подключить не видпаюючы плату?
Hi Taras!
Нафига отпаивать?
Вариантов - масса!
У тебя не откликается сам интерфейс TWI (точнеее - висящий на нем чип pcf8574).Для порядка прозвони тестером соединения камня на плате UNO c интерфейсом - 28 нога ATMega с 14 ногой pcf8574 и 27 нога ATMega с 15 pcf8574.
На платке с PCF8574 проверь - есть ли перемычка на pull-up резисторы и есть ли они вообще :-)
Все отключи и измерь тестером сопротивление между ногами 16-15 и 16-14 pcf8574 - должно быть в районе 4.7к.
Потом подключи к плате UNO и проверь не изменилось ли сопротивление :-)
Задача - добиться указанного мной выше отклика твоей микропрограммы
===
Scanning...
I2C device found at address 0x27 !
done
===
(все действия - глядя на опубликованные тобой фотки)
при подключении платы. А дальше уже подключай остальные библиотеки :-)
Yours sincerely, Dmitry aka wcat
а в чем прикол что сканер ничего не видит и просто пишет Scanning... и все
Hi Taras!
Прикол в том, что "Радиотехника - наука о контактах" :-)
да но когда отключаю контакт SDA или SCL пишет No I2C devices found
Hi Taras!
Тестером звонил?
И еще... Я обратил внимание, что у тебя не классическая плата UNO...
На классике стоит ATMega в DIP-е...
BTW,
Scanning...
она пишет только один раз, или лепит строку за строкой?
Yours sincerely, Dmitry aka wcat
тестера нету)
только один раз)
да и ищо на етой плате вместо микросхеми ATmega16U2 стоит ch340g
Hi Taras!
Без тестера совсем грустно...
Таки-светодиод с резистором в 1к и две батарейки на 1.5 в (АА, ААА) последовательно :-)
О сопротивлении судишь по яркости свечения светодиода - попробуй на КЗ и через резистор 4.7к на платке PCF8574.
Больше 3 вольт подавать на ножки стремно...
"Только один раз" - значит, ждет в подпрограмме готовности TWI шины и умирает в ней...
Yours sincerely, Dmitry aka wcat
Hi Taras!At
Только не путай член с трамвайной ручкой - ch340g адаптер USB-UART, а ATMega на твоей плате в серединке стоит! :-D
Такой паучок в 32 MLF корпусе :-)
Yours sincerely, Dmitry aka wcat
Тарас, это не имеет значения, какая атмега, должно работать, в сериал же выводит информацию, значит драйвера на ch340 встали.
Кстати, можно просто к выводам подпаять провода напрямую, не отпаивая I2C, попробуйте. Схем подключения полно. Исключите сперва версию с неработоспособностью LCD, а затем копайте в сторону I2C
Кстати, модуль сами паяли или купили с пайкой?
---
Да, забыл совсем. Я когда свой паял, обнаружил недостаток - язычки крепления кожуха экрана могут закорачивать I2C. Я прокладку клеил из изоленты между платами.
пробовал подключить по этой схеме, в результате начали мелькать квадратикы на экране
Не забывайте, что после подключения обычным способом (без i2c) надо и библиотеку другую использовать - LiquidCrystal, можно из комплекта ардуино.
Кстати, вот о чем я говорил про плату i2c. Изоляцию прокладывал перед пайкой и поднимал модуль на пару мм.
Hi Taras!
Если модуль PCF остался припаянным - может быть конфликт по шине. По доке от Philips на выходах pcf8574 при включеннии все уровни высокие, т.е. если выход OD - отключен. Но она КМОПистая, и может быть звон по входам...
Посади SDA и SCL об землю...
Хотя - ША! Если pcf звенит по входам SDA/SCL - значит на шине TWI нет подтягивающих резисторов...
Иными словами, если ты посадишь входы об землю, и квадратики перестанут бегать - ищи на платке с pcf8574 подтягивающие к питанию резисторы... Их либо нет, либо они отключены... У меня на схеме к этой платке пунктиром нарисована перемычка, включающая эти резисторы :-)
Yours sincerely, Dmitry aka wcat
На первой фото яркость-контрасность не настроена. Всмысле яркость цифр и яркость подсветки. Надо покрутить больше-меньше.
И когда "квадратики мелькают", - это тоже что-то выводится, но из-за ненастроенной яркости ничего не видно
пробовал крутить ничего не меняется кроме яркости
Я это все уже пробовал к сожалению ничего не помогло, а маркировка ida8574p n2k0h5
Недавно тема была, что на подобный адаптер запаяли 8574, но совсем не преобразователь I2C. Может и здесь эта же собака порылась? Правда по "ida8574p" гугла ничего говорить не хочет.
Попробуйте просмотреть-прозвонить линии SDA-SCL, проверить резисторы, если все нормально и коротышей нет (проц. зависает при коротком на I2C), ищите подобный модуль или микросхему и пробуйте с ними.
P/S Потратьте 300руб на чинатестер, без него совсем никак((((