избитая тема LCD + arduino
- Войдите на сайт для отправки комментариев
Пт, 30/01/2015 - 21:21
ничего не пойму, почему не работает. и библиотеки грузил разные и пропайку делал и проводами подключал. arduino-1.0.5 не компилирует примеры, а arduino-1.0.6 компилирует и загружает. экран моргает и всё. порт 0х27 проверил сканером. перегуглил всё что смог. контраст крутил. резисторы ставил. МК даже менял надругую.
Sll, причин для того , что б не работать гораздо больше, чем что бы работать ) Попробуйте разделить. Проверьте отдельно дисплей, подключив его по стандартной схеме без переходника, проверьте отдельно переходник, посылая в него 0x00 и 0xff с паузой в секунду и контролируя тестером изменения на каждом бите.
Существуют две версии плат преобразователей i2c для lcd, в них выходные ноги чипа-преобразователя по-разному к lcd подключены. Соответственно - две версии библиотек. При попытке запустить такой lcd с неродной библиотекой - наблюдается как раз в лучшем мигание подсветки и всё.
Обе библиотеки в ссылке, я ловил их на arduino.cc.
https://www.dropbox.com/s/nyt5bt5p030chhv/lcdlib.zip?dl=0
dimax, не совсем понимаю о чём речь т.к. не очень силён в битах... почитаю в инете. Но как ТРИ переходника и ТРИ дисплея одновременно не работают? (тестер это мультиметр? там напряжение мерить?). Сейчас займусь дисплеем на прямую, это понятней и не распаяный еще есть)
vlad219i, библиотеки разные вроде качал: LiquidCrystal, LiquidCrystal_I2C, LiquidCrystal_I2C1602V1, LiquidCrystal_I2C2004V1, LiquidCrystal_v1.1.7.1, LiquidCrystal_V1.2.1, SPI_IIC_LCD_For_Ardiuno1.0. может уже загрузчик неверный?
обновил пост, добавил ссылку на либы. попробуйте...
vlad219i ОК, попробую сейчас
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);
};
#include <Wire.h> забыл вставить в начале.
Дисплей отдельно работает.
Не соображу как перходник проверить. помогите
Ессли сравнить две библиотеки то легко найти очевидные различия в порядке подкключения выводов регистра:
В одной это
#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
Схема такая, так плату развели....
trembo, что из этого следует? соеденить по другому да?
и как Вы видите содержимое библиотеки?
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
щ
Ок, щас гляну.
переходник такой
Ещё вот что: данные D0, D1, D2, D3 обычно не подключают "экономия" проводов и проще разводка.
И 5 пин индикатора (R/W) на землю если не собираетесь писАть в индикатор свои символы.
Адрес на шине ещё проверьте сканером.... Это перемычки А0 А1 А2 плюс базовый адрес чипа
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);
Sll, переходник проверить проще простого. Находите адрес I2C сканером (вроде выше уже упоминалось, что нашли, но для полноты картины я упомянул). Подключаете на любой выход светодиод с резистором, или тестер, -что душе угодно. Запускаете такой скетч, откоректировав в нём свой адрес чипа. Если светодиод моргает, значит можно проверить остальные 7 выводов.
"остальные 7 выводов.." там же их 16! хотя минус слева и справа по 2 это 16-2-2=12
PCF8574T перемычки не запаяны значит 0х27 и сканер то же самое говорит
судя по схеме 12выводов минус 4 средних? тогда =8!!! Умнею на глазах.
Sll, выводов -всмысле выходов. А их там 8. (P0-P7)
Р3 как проверить? остальные мигают я по выводам переходника ориентировался 1,2 пропустил
3 не мигает
4,5,6 мигают
7,8,9,10 пропустил
11,12,13,14 мигают
15,16 пропустил
значит и переходник работает! Выходит дело в библиотеке.
может версия 1.0.6 не годится загрузчика? почему в выпадающем списке куча библиотек одинаковых? как их удалить может дело в этом? и они путают друг друга
#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()
{
}
Может в скетче дело?
error: 'POSITIVE' was not declared in this scope
что делать ума не хватает.
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
пробую
Та библиотека, что ругается на 'POSITIVE' она попроще будет, она не позволяет гибко менять пины.
Кстати вы помните о том, что после копирования библиотек надо рестартовать ИДЕ ?
скачал библиотеку LiquidCrystal_V1.2.1 по ссылке. (она у меня есть уже)
"Вроде тут ваш пример последний." - не понял где?
да я после смены библиотеки перезапускаю IDE.
Здесь последний http://arduino-info.wikispaces.com/LCD-Blue-I2C
trembo , Я дико извинюсь, но не могли бы Вы заглянуть ко мне через TeamViewer? мой иде 876 684 188
На минуточку, если перемычки НЕ запаяны, адрес = 27, если ВСЕ запаяны, то = 20. Судя по картинке, с этим переходником должна работать библиотека v1 из моего архива.
не запаяны
я сразу скачал и проверил... ноль. может руки у меня корявые.
vlad219i, я пример беру тоже из вашей библиотеки. не работает. моргет один раз экран и всё
всё перепроверил. там на фото ещё датчик температуры. он же не может мешать? если "привет мир" загружать
Мне для всех имеющихся переходников хватало этих двух библиотек... Во - а SCL и SDA местами не перепутаны, случаем?
такое ощущение что IDE 1.0.6 и 1.0.5 не правильно работают.
SDA в А4
SCL в А5
резисторы что ли подключить опять куда нибудь?
пойду спать может что приснится)))