избитая тема LCD + arduino

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

ничего не пойму, почему не работает. и библиотеки грузил разные и пропайку делал и проводами подключал. arduino-1.0.5 не компилирует примеры, а arduino-1.0.6 компилирует и загружает. экран моргает и всё. порт 0х27 проверил сканером. перегуглил всё что смог. контраст крутил. резисторы ставил. МК даже менял надругую.

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Sll, причин для того , что б не работать гораздо больше, чем что бы работать ) Попробуйте разделить. Проверьте отдельно дисплей, подключив его по стандартной схеме без переходника, проверьте отдельно переходник, посылая в него 0x00 и 0xff с паузой в секунду и контролируя тестером изменения на каждом бите.

vlad219i
Offline
Зарегистрирован: 05.03.2014

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

Обе библиотеки в ссылке, я ловил их на arduino.cc.

https://www.dropbox.com/s/nyt5bt5p030chhv/lcdlib.zip?dl=0

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

dimax, не совсем понимаю о чём речь т.к. не очень силён в битах... почитаю в инете. Но как ТРИ переходника и ТРИ дисплея одновременно не работают? (тестер это мультиметр? там напряжение мерить?). Сейчас займусь дисплеем на прямую, это понятней и не распаяный еще есть)

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

vlad219i, библиотеки разные вроде качал: LiquidCrystal, LiquidCrystal_I2C, LiquidCrystal_I2C1602V1, LiquidCrystal_I2C2004V1, LiquidCrystal_v1.1.7.1, LiquidCrystal_V1.2.1, SPI_IIC_LCD_For_Ardiuno1.0.  может уже загрузчик неверный?

vlad219i
Offline
Зарегистрирован: 05.03.2014

обновил пост, добавил ссылку на либы. попробуйте...

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

vlad219i     ОК, попробую сейчас

 

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

dimax     соеденил дисплей на прямую и обнаружил что скетч даже просто при проверке не компилирует.   И вообще в загрузчике что то столько имён библиотек много стало , хотя Я в либе оставил одну.  Вот скетч:

    #include <LiquidCrystal.h>

//Создаем объект для работы с дисплеем.
//При создании указываем номера портов
//в порядке RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);

void setup() {
  //Выставлем число столбцов и строк
  lcd.begin(16, 2);
  //Выводим текст
  lcd.print("hello, world!");
}

void loop() {
  //Выставляем курсор во 2-ю строку,
  //1й столбец (счет идет с 0, поэтому
  //строка номер 1, стобец номер 0)
  lcd.setCursor(0, 1);
  //Выводим число секунд со старта
  lcd.print(millis()/1000);
};
 

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

#include <Wire.h> забыл вставить в начале.

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

Дисплей отдельно работает.

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

Не соображу как перходник проверить. помогите

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Ессли сравнить две библиотеки то легко найти очевидные различия в порядке подкключения выводов регистра:

В одной это 

#define En B00010000  // Enable bit
#define Rw B00100000  // Read/Write bit
#define Rs B01000000  // Register select bit

В другой

#define En B00000100  // Enable bit
#define Rw B00000010  // Read/Write bit
#define Rs B00000001  // Register select bit
 

Схема такая, так плату развели....

 

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

trembo, что из этого следует? соеденить по другому да?

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

и как Вы видите содержимое библиотеки?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

LiquidCrystal_I2C.h   и   LiquidCrystal_I2Cv1.h

Покопайтесь по картинкам  https://www.google.ru/search?q=i2c+lcd+arduino+schematic&newwindow=1&biw=1680&bih=902&source=lnms&tbm=isch&sa=X&ei=2ObLVKfOI8PdywP79YG4CA&ved=0CAYQ_AUoAQ#newwindow=1&tbm=isch&q=i2c+lcd+arduino+schematic+PCF8574+&imgdii=_

На схеме http://jt5.ru/examples/oled-i2c/

Р4, Р5, Р6   E, R/W, RS   -    похоже будет работать с библиотекой   LiquidCrystal_I2C.h    где

#define En B00010000  // Enable bit
#define Rw B00100000  // Read/Write bit
#define Rs B01000000  // Register select bit

Ещё почитайте http://arduino.ru/forum/programmirovanie/lcd-i2c-partizanit

 

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

щ

Ок, щас гляну.

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

переходник такой

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Ещё вот что: данные  D0, D1, D2, D3  обычно не подключают  "экономия" проводов и проще разводка.

И 5 пин индикатора (R/W) на землю если не собираетесь писАть в индикатор свои символы.

Адрес на шине ещё проверьте сканером....  Это перемычки А0 А1 А2 плюс базовый адрес чипа

PCF8574  0x20
PCF8574A 0x38

http://we.easyelectronics.ru/lcd_gfx/shema-perehodnika-i2c-dlya-lcd-hd44780.html#cut

Базовый адрес зависит от последней буковки в маркировке чипа, например для PCF8574T это 0х20, а для PCF8574P это 0х40.

Ещё:   http://arduino-info.wikispaces.com/LCD-Blue-I2C

Всё можно менять прямо при инициализации библиотеки :

// Set the pins on the I2C chip used for LCD connections:

//                                addr, en,rw,rs,d4,d5,d6,d7,bl,blpol

LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Sll, переходник проверить проще простого. Находите адрес I2C сканером (вроде выше уже упоминалось, что нашли, но для полноты картины я упомянул). Подключаете на любой выход светодиод с резистором, или тестер, -что душе угодно. Запускаете такой скетч, откоректировав в нём свой адрес чипа. Если светодиод моргает, значит можно проверить остальные 7 выводов.

#include "Wire.h"
byte n=0;
void setup() {
Wire.begin();

}
void loop() {

n=~n;   
Wire.beginTransmission(0x20);
Wire.write(n);
Wire.endTransmission();
delay(1000);

}

 

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

"остальные 7 выводов.." там же их 16!  хотя минус слева и справа по 2 это 16-2-2=12

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

PCF8574T перемычки не запаяны значит 0х27 и сканер то же самое говорит

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

судя по схеме 12выводов минус 4 средних? тогда =8!!! Умнею на глазах.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Sll, выводов -всмысле выходов. А их там 8.  (P0-P7)

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

Р3 как проверить? остальные мигают я по выводам переходника ориентировался 1,2 пропустил

3 не мигает

4,5,6 мигают

7,8,9,10 пропустил

11,12,13,14 мигают

15,16 пропустил

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

значит и переходник работает! Выходит дело в библиотеке.

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

может версия 1.0.6 не годится загрузчика? почему в выпадающем списке куча библиотек одинаковых? как их удалить может дело в этом? и они путают друг друга

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2); 

void setup()
{
  lcd.init();                      // initialize the lcd
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}

void loop()
{
}

Может в скетче дело?

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

 error: 'POSITIVE' was not declared in this scope

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

что делать ума не хватает.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

http://arduino-info.wikispaces.com/LCD-Blue-I2C 

Библиотека наверху вот она: https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads

Вроде тут   ваш пример последний. Только адрес поменяйте   на 27

LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address

И     lcd.begin(20,4); // initialize the lcd for 20 chars 4 lines and turn on backlight

на 16,2

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

пробую

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Та библиотека, что ругается на 'POSITIVE' она попроще будет, она не позволяет гибко менять пины.

Кстати вы помните о том, что после копирования библиотек надо рестартовать ИДЕ ?

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

скачал библиотеку LiquidCrystal_V1.2.1 по ссылке. (она у меня есть уже)

"Вроде тут ваш пример последний." - не понял где?

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

да я после смены библиотеки перезапускаю IDE.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011
Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

trembo     , Я дико извинюсь, но не могли бы Вы заглянуть ко мне через TeamViewer? мой иде 876 684 188

vlad219i
Offline
Зарегистрирован: 05.03.2014

На минуточку, если перемычки НЕ запаяны, адрес = 27, если ВСЕ запаяны, то = 20. Судя по картинке, с этим переходником должна работать библиотека v1 из моего архива.

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

не запаяны

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

я сразу скачал и проверил... ноль. может руки у меня корявые.

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

vlad219i, я пример беру тоже из вашей библиотеки. не работает. моргет один раз экран и всё

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

всё перепроверил. там на фото ещё датчик температуры. он же не может мешать? если "привет мир" загружать

vlad219i
Offline
Зарегистрирован: 05.03.2014

Мне для всех имеющихся переходников хватало этих двух библиотек... Во - а SCL и SDA местами не перепутаны, случаем?

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

такое ощущение что IDE 1.0.6 и 1.0.5 не правильно работают.

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

SDA в А4

SCL в А5

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

резисторы что ли подключить опять куда нибудь?

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

Sll
Sll аватар
Offline
Зарегистрирован: 08.01.2015

пойду спать может что приснится)))