Неудобство с библиоткеой LCD по I2C
- Войдите на сайт для отправки комментариев
Перешел с 4+++ проводного LCD1620 на LCD1620 с I2C. Неудобно то, что не могу найти в библиотеке функцию lcd.print и приходится выводить печатные символы и строки в виде их кодов на lcd.write
Библиотека работает, но :
Клонов библиотек много и мне попалась версия без lcd.print ?
Как изменить управляющие выводы A4 и A5 на другие, тк эти заняты под другие нужды?
Что такое адрес 0x27 в программе?
Почему при выводе на LCD одиночного символа, сначала заполняется первая строка, потом в отображении наступает непонятная пауза (пишет куда-то в буфер мимо экране?), а примерно после 40-го символа опять продолжает писать на экран в строку 2. Почему не пишет во вторую строку символ #17?
Где взять полное толковое описание библиотеки LiquidCrustal_I2C или хорошей аналогичной?
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { lcd.init(); lcd.backlight(); lcd.clear(); } void loop() { byte ascii_code=55; lcd.write('+'); delay(1000); }
П-дить после нескольких выпитых бутылок пива или портвейна легко, а написать по делу ?
а написать по делу ?
Он по делу написал. Если бы Вы взяли на себя труд прочиать руководство (хоть прямо на этом же сайте, чего далеко ходить), то мне не пришлось бы Вам сейчас объяснять, что A4 и A5 забиты под I2C аппаратно прямо в микросхеме контроллера, а 0x27 - уникальный адрес устройства на шине. Всё это описано в миллионе мест, достаточно набрать I2C в гугле или просто посмотреть прямо здесь.
Так что по делу он написал, не обижайтесь.
Как изменить управляющие выводы A4 и A5 на другие, тк эти заняты под другие нужды?
Никак, интерфейс I2C аппаратно на них выведен.
Что такое адрес 0x27 в программе?
Адрес I2C-устройства.
искал на форуме руководство на библиотеку LiquidCrystal_I2C. Тем много, а руководство не нашел.
А частная проблема ?
Зачем ты такой злой?
лучше дай ссылку на толковое описание библиотеки
Он не злой )) http://www.gdemozg.ru/images/demot/PATAMUSHTA_DYATEL___.jpg
Вот даташит про адресс и да его можно менять при помощи паяльника и перемычек. http://www.ti.com/lit/ds/symlink/pcf8574.pdf
дайте пожалуйста ссылку на описание библиотеки LiquidCrystal_I2C. Насчет адреса I2C интересуюсь, чтобы не иметь проблем и не понимаю зачем подкалывать.
http://elchupanibrei.livejournal.com/27443.html
Но где там описание классов и функций?
Мучаюсь с lcd.write и не могу найти аналог lcd.print, которую раньше использовал в LiquidCrystal.h
Это первоисточник мне так быстро не переварить, чтобы понять причину. Почему так выводит (не выводит ) на дисплей?
так print и пользуйся. обе библиотеки есть наследники класса print
#20
Поставил LiquidCrystal_I2C_V112 с ней lcd. print работает, а с версией Arduino-LiquidCrystal-I2C-library-master не компилировалась. Можете посоветовать проверенную версию LCD I2C, которую используете сами ?
и зачем в программе #20 две строки с разными адресами устройств на I2C 0x26 и 0x27, я видел на дисплеях 16х4 две залитых компаундом микросхемы контроллера, это тот самый случай , когда на I2C подлкючены 2 "независимых" устройства?
Еще второстепенная проблема, визуально кажется символы на текущем LCD перерисовываются медленнее чем раньше на другой матрице, как это решить ? http://arduino.ru/forum/apparatnye-voprosy/tip-matritsy-lcd1602-i-bystrodeistvie-ekrana
Сам я использую штатную. Скетч>Подключить библиотеку>Управлять Библиотекой > и там выбираю поиском. И да компилятор Тупой. Надо выкинуть предыдущие. I2C медленее прямого. Но это все херня. Скорее всего у вас программа тупо составлена.Когда быстро рисовала , то норм, а вот медлеенее полезли косяки. Адреса меняются не в компаунде микросхемы, а на дополнительной платке напаяной сверху. Если вы напрямую без I2C подключили, то адреса разумеется нет. Я вам очевидные вещи говорю. Что вы должны знать уже из этой темы и ссылок выложеных тут же.
qwone, спасибо за ответы, жаль что вызвал Вашу обиду ником Дятел :-) .
Из непонятного осталось:
1. почему первая строка LCD от тестовой программы заполняется симвролами полностью, а на второй появляются символы начиная с 40-го цикла loop? Тестовая программа:
2. и зачем в программе по ссылке http://arduino.ru/forum/programmirovanie/etyudy-dlya-nachinayushchikh-po... используют два адреса I2C 0x26 0x27. Если убрать любой из них, то возникает ошибка компиляции.
В моей тестовой программе используется только один адрес 0x27. Программа с двумя адресами:
Вот здесь мой скетч #1128
Вот там одновременно тоже подключены две Lcd. Да они у меня есть в реальности. И у них разные адреса подключеные к I2C. И в каждую могу отправить свое сообщение.
Вчера ардуину купил. И тоже решил по i2c lcd зацепить. В скачанной библиотеке оказалась весьма любопытная адресация. Весь адрес нужно сдвигать на 1 бит вправо. То-есть если имеем I2C адаптер на редкой PCF8574, то нужно писать 0х27 вместо 0х3Е.
А если на частой PCF8574А, то нужно писать 0х3F вместо 0х7Е.
Дятел, потому что строка на LCD дисплее состоит из 40 символов, а видимых - 16 из них, это сделано, чтобы ее можно было прокручивать, типа бегущей строки. Поэтому, адрес 1-й строки - 0, адрес второй - 40. Длина обеих - 40 байт.
Из непонятного осталось:
1. почему первая строка LCD от тестовой программы заполняется симвролами полностью, а на второй появляются символы начиная с 40-го цикла loop?
Родной контроллер ммеет размер 2 на 40
И он стоит на всех подобных индикаторах.
https://hubstub.ru/display/71-inicializaciya-lcd-displeya-1602a-s-upravlyayuschim-kontrollerom-ks0066u.html
2. и зачем в программе по ссылке http://arduino.ru/forum/programmirovanie/etyudy-dlya-nachinayushchikh-potokovyi-vyvod-v-serial#comment-194635 используют два адреса I2C 0x26 0x27. Если убрать любой из них, то возникает ошибка компиляции.
В моей тестовой программе используется только один адрес 0x27. Программа с двумя адресами:
Два адрес - два индикатора. Им так надо было.
Вы убрали инициализацию одного из них, а потом к нему обращаетесь
Кстати этот адрес не у индикатора, а у И2Ц регистра к которому подключены пины ЛЦД.
Кстати этот адрес обычно можно менять перемычками на плате, три последних бита адреса.
[/quote]