LCD I2C партизанит

Radjah
Offline
Зарегистрирован: 06.08.2014

Подсветку на ШИМ вешать.

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

а как им управлять если i2c стоит? или просто лапу не припаивать к i2c а напрямую на ардуинку припаять проводком?

Radjah
Offline
Зарегистрирован: 06.08.2014

Выпиваешь питание подсветки, городишь управление напругой подсветки через ШИМ, чтобы входы контроллера не попалить нагрузкой такой, или ставишь переменный резистор.

В конце концов возьми тестер и прозвони входы дисплея. Сразу станет понятно что куда идет. Логика и подсветка запитаны отдельно.

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

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

Radjah
Offline
Зарегистрирован: 06.08.2014

Программно её можно включить или выключить пином. А напругу питания надо уже руками регулировать.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

подыму тему, в наличае дисплей с припаяным модулем i2c, скачал последнюю библиотеку кристал, тодключил к микроконтроллеру Arduino mega  к пинам 20 и 21, заработал с разу. 

а теперь вопрос , прочитал что есть еще 2 пина которые работают с i2c это над контактом AREF  в правом верхнем углу, вот только они никак не обозначены  а в библиотеке нужно их указать при инициализации ( LiquidCrystal_I2C lcd(0x27, 20, 21); ). так вот что сюда нужно вписать при подключении к этим безимянным контактам? кто знает подскажите пожалуйсто?

да кстати предидуший вопрос, для себя решил так, включаем подсветку при любом нажатии на кнопки меню, и если нет повторных нажатий в течении 2 минут то отключаем подсветку, пока только идея но соберу все модули в кучку, буду с кодом ковыряться.

MacSim
Offline
Зарегистрирован: 28.11.2012

Baks пишет:

подыму тему, в наличае дисплей с припаяным модулем i2c, скачал последнюю библиотеку кристал, тодключил к микроконтроллеру Arduino mega  к пинам 20 и 21, заработал с разу. 

а теперь вопрос , прочитал что есть еще 2 пина которые работают с i2c это над контактом AREF  в правом верхнем углу, вот только они никак не обозначены  а в библиотеке нужно их указать при инициализации ( LiquidCrystal_I2C lcd(0x27, 20, 21); ). так вот что сюда нужно вписать при подключении к этим безимянным контактам? кто знает подскажите пожалуйсто?

да кстати предидуший вопрос, для себя решил так, включаем подсветку при любом нажатии на кнопки меню, и если нет повторных нажатий в течении 2 минут то отключаем подсветку, пока только идея но соберу все модули в кучку, буду с кодом ковыряться.

 не знаю где правый верхний у нее, но думаю они запараллелены. нагуглите распиновку вашей платы в картинках и все сами увидите.

вообщето там не ноги при инициализации указываются, а размер дисплея. и2с аппаратный юзается. привязан жестко к ногам мк.

что там ковырятся. таймер есть свободный? ловите отпускание клавиши, запускаете таймер, по прерыванию таймера выключаете подсветку и таймер.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

я чето не пойму про какой таймер идет речь, их вроди 3 и они уже заняты программно. или ошибаюсь? (Если да то можно пример с таймером?)  Я думал сделать от Milis ( определяем реальное время , складываем с 2 минутами а потом сравниваем реальное время с полученым ответом, и если реальное больше то отключаем подсветку)

и второе эти безимянные контакты если запаралелены с 20 и 21 пинами , то использовать  уже нельзя будет 20 и 21 если подключусь к безимянным?

Baxter
Offline
Зарегистрирован: 24.01.2016

Только сейчас заметил, что на I2C-чипе установлена микросхема TDA8574T. На всех остальных модулях, что я видел, стоит PCF8574T. Это нормально? Не из-за этого ли у меня не работает LCD 1602 (горит только верхний ряд квадратов и сканер не определяет адрес)??

bwn
Offline
Зарегистрирован: 25.08.2014

Baxter, похоже перепаивать, открываем даташит и видим, что сия микра отношения к I2C не имеет. А дядюшка Ляо кроме иероглифов только цифры с горем пополам понимает.

diesel
Offline
Зарегистрирован: 16.02.2016

у меня проблема такая библиотека  <LiquidCrystal_I2C.h>отоброжается только начальная букав "hello, world!" чтоб прописать весь

текст приходится обозначивать все буквы в чем проблема

#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();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("H");
  lcd.print("E");
  lcd.print("L");
  lcd.print("L");
  lcd.print("O"); 
   lcd.print(",");  
  lcd.print("W");
  lcd.print("O");
  lcd.print("R");
  lcd.print("L");
  lcd.print("D");
  
 
    lcd.print("#");
Radjah
Offline
Зарегистрирован: 06.08.2014

Бейти их лопатой! Они на свет лезут!

bwn
Offline
Зарегистрирован: 25.08.2014

diesel, а форум почитать, в принципе никак? Эту тему здесь раз двадцать обсасывали.

diesel
Offline
Зарегистрирован: 16.02.2016

[quote=bwn]

diesel, а форум почитать, в принципе никак? Эту тему здесь раз двадцать обсасывали.

[/qu

ote]

Спасибо за помощь может на водку укажите где искать

bwn
Offline
Зарегистрирован: 25.08.2014

diesel пишет:

Спасибо за помощь может на водку укажите где искать

На водку я вам не дам, самому надо.))) А так, хотя бы эту тему перечитайте.

diesel
Offline
Зарегистрирован: 16.02.2016

Спасибо)))

Сергей С.В.
Offline
Зарегистрирован: 02.01.2016

Мужики подскажите как сделать так чтоб в верхней части экрана надпись передвигалась, а в нижней стояла наместе. А то с помощью команды lcd.scrollDisplayLeft() у меня смещаются обе надписи.

dhog1
Offline
Зарегистрирован: 01.03.2016

... прочитать, наконец, хоть какую документацию на инструкции HD44780, и понять, что любые хотелки за ваш счет. В данном случае - (достичь результата) манипуляцией символов поштучно, честно сдвигая вывод строки и перезаписывая символы.

Результат может разочаровать.

Или ограничиться одной строкой для 1602 экрана, сдвигая ее вправо-влево на 40-16=24 знакоместа.

Сергей С.В.
Offline
Зарегистрирован: 02.01.2016

dhog1 пишет:

... прочитать, наконец, хоть какую документацию на инструкции HD44780, и понять, что любые хотелки за ваш счет. В данном случае - (достичь результата) манипуляцией символов поштучно, честно сдвигая вывод строки и перезаписывая символы.

Результат может разочаровать.

Или ограничиться одной строкой для 1602 экрана, сдвигая ее вправо-влево на 40-16=24 знакоместа.

 

Спасибо за помощь. Вы очень помогли новичку освоить принципы программиравания Arduino.

dhog1
Offline
Зарегистрирован: 01.03.2016

Сергей С.В.

фиолетово как вы себя позиционируете - новичек или кто. Обиду понимаю, постараюсь исправиться.

В среде (на платформе) "ардуино" вы используете (обычно) некие готовые решения, например библиотеки работы с устройствами. Последние, как правило, используют возможности (оконечных) устройств. Мы говорим о текстовых дисплеях формата 1602 или 2004 (число символов в строке, число строк на видимом экране).

Вы хотите простую вещь - как на дисплее в несколько строк сделать так, чтобы одна строка (верхняя, например) была "бегущей", в то время как другие строки были "заморожены", т.е. оставались неподвижными.

Ответил - это можно сделать программными средствами, манипулируя "вводом" строки, которая предполагалась быть "бегущей". Само устройство (дисплей) такую возможность не поддерживает, что и следует из документации (которую читать, IMHO, стоит), потому что тот, кто управляет отображением (это тот самый HD44780) "видит" отображаемую область не в терминах "позиция" и  "строка", а несколько иначе.

Отсюда и слово "хотелки", в котором нет ничего обидного. Вы хотите, я хочу, они хотят и т.д.  Хотите чтобы было "как хочу" - сделайте сами (программно), или найдите (самостоятельно или по наводке других) готовое решение ("библиотеку"), потому что (то, что видел) обычно готовые решения опираются на (аппаратные) возможности устройств.

В настоящем примере аппаратные возможности такого поведения дисплея (двустрочного в терминах документации, это именно 1602 или 2004) не предусматривают. Но это можно сделать программно. Если оно того стоит.

Постарался подробно ответить, чтобы вы не подумали, чтобы вас "через губу попытались поставить на место". "Принципы программирования Arduino", если существуют, опираются на сделанное людьми этого сообщества ранее. Если вам не ответили быстро и исчерпывающе ...

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Чтобы напись перемещалась - надо перед записью в верхнюю строку включить режим сдвига экрана, а не курсора. А чтобы запись в нижнюю строку была "как обычно", то надо опять же перед записью в неё включить обратный режим. Делов-то.

Только, как вам уже заяснили, размер строки - это 40 симоволов при двустрочном режиме. Делает ли контроллер LCD зокольцовку буфера строки на начальный адрес или нет - я не проверял, попробуйте поэкспериментировать сами.

loop45
Offline
Зарегистрирован: 18.09.2016

Здравствуйте добрые люди. У меня все работает. Только вот мои скетчи сидят на разных ардуинках. Один ардуино отправляет смс о состоянии объекта а другой показывает на ЖК дисплее (1602) на месте для персонала о состоянии этого же аппарата . А как эти два скетча залить в один ардуино? 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Два скетча в один Ардуино можно заливать только по очереди. Одновременно - никак.

loop45
Offline
Зарегистрирован: 18.09.2016

Надо попробовать. Спасибо большое 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Почто так категорично? Склеить из двух скетчей один и залить. Все равно каждый из них занят своим делом.

loop45
Offline
Зарегистрирован: 18.09.2016

Да не получился закинуть два скетча на одного ардуино. Пришлось впихивать на SoftwareLiquid LiquidCritical. Немного замучался правда. Но всё заработало. Теперь остался как убрать из ЖК дисплея первое сообщение и записать второе. У меня первое остается а потом второе там же появляется. Получается каша. А как удалить первое сообщение при появлении второго. И обратно удалить второе когда пришло первое? Все это я делаю с планшета Леново. Комп есть. Но он станционарный, дома находится. А с планшета удобно. Всегда со мной. Приложение от какого-то Антона Смирнова Ардуино Дроид называется. Выдрано из AVRDUT. Но работает исправно. Все ардуины почти прошивает 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Arhat109-2 пишет:

Почто так категорично? Склеить из двух скетчей один и залить.

Тогда это будет один скетч, а не два.

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

из примеров залей сериалдисплей и в мониторе порта гляди на адрес может у тебя 0х3F или ещё чё

bwn
Offline
Зарегистрирован: 25.08.2014

loop45 пишет:

Теперь остался как убрать из ЖК дисплея первое сообщение и записать второе. У меня первое остается а потом второе там же появляется. Получается каша. А как удалить первое сообщение при появлении второго. И обратно удалить второе когда пришло первое?

lcd.clear()

loop45
Offline
Зарегистрирован: 18.09.2016

Спасибо мил человек. Сегодня добавлю и помучаю этого китайца  :) 

А после вот эти   ; точка запятая надо надо ставить? 

ruslan55
Offline
Зарегистрирован: 26.11.2015

Подробный пример подключения LCD 1602 по I2C интерфейсу http://radiolaba.ru/microcotrollers/podklyuchenie-lcd-1602-po-i2c-interf...

loop45
Offline
Зарегистрирован: 18.09.2016

Извините пожалуйста что встреваю. Не хочется плодить лищные темы. Просто хочу спросить. На с чет вот этого; digitalWrite(RELAY, HIGH);

                                                                 delay(2000);

                                                                   digitalWrite(RELAY, LOW);

Без конечно включается и выключается.  Надо чтоб он один раз вкльючился при запуске скетча. Прошу вас, помогите. Я нифига не прогер;) 

loop45
Offline
Зарегистрирован: 18.09.2016

Извините пожалуйста что встреваю. Не хочется плодить лищные темы. Просто хочу спросить. На с чет вот этого; digitalWrite(RELAY, HIGH);

                                                                 delay(2000);

                                                                   digitalWrite(RELAY, LOW);

Без конечно включается и выключается.  Надо чтоб он один раз вкльючился при запуске скетча. Прошу вас, помогите. Я нифига не прогер;) 

bwn
Offline
Зарегистрирован: 25.08.2014

Ну на .уя оффтопить то? Убери delay и тот digitalWrite, который выключает, и будет щасье.

loop45
Offline
Зарегистрирован: 18.09.2016

Но реле должен включить и выключить один раз. Как бы иммитация нажатии кнопки

bwn
Offline
Зарегистрирован: 25.08.2014

Тады в setup перенести. Включит, две секунды подождет, выключит. И забудет до следующей перезагрузки.

loop45
Offline
Зарегистрирован: 18.09.2016

Спасибо, попробую. Но уже завтра. Сегодня никак. У нас сабантуй  ;) 

MacSim
Offline
Зарегистрирован: 28.11.2012

на ворпос о неверном выводе символов отвечу:

в китайских дисплеях почти всегда (за редким исключением, и то если наверное спец заказ зделаете) нет прошитого русского шрифта.  Выводить русский получается записав в свободные ячейки дисплея изображение нужных букв или символов, которые не совпадают с латиницей. Так вот! Этих ячеек хватает только на 8 букв и если вы хотите вывести на экран за раз больше 8 символов, которых нет у самого дисплея, то первый затирается 9-тым. отсюда ноги растут. Решение: 1. писать учитывая что дополнительных символов только 8  и 2. использовать дисплей с прошитым русским, там правда  другая неприятность есть (кодировка)

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

MacSim пишет:

на ворпос о неверном выводе символов отвечу:

в китайских дисплеях почти всегда (за редким исключением, и то если наверное спец заказ зделаете) нет прошитого русского шрифта.  Выводить русский получается записав в свободные ячейки дисплея изображение нужных букв или символов, которые не совпадают с латиницей. Так вот! Этих ячеек хватает только на 8 букв и если вы хотите вывести на экран за раз больше 8 символов, которых нет у самого дисплея, то первый затирается 9-тым. отсюда ноги растут. Решение: 1. писать учитывая что дополнительных символов только 8  и 2. использовать дисплей с прошитым русским, там правда  другая неприятность есть (кодировка)


Вопрос наверное даже не в прошивке, а в нужной (европейской) версии микрсхемы HD44780 имеющей русский знакогенератор.

Пробовал прорабатывать вопрос с покупкой дисплея с кириллицей на Али. Так пока ничего и не получилось. Поэтому, если есть ссылочка, то поделитесь?

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Где-то видел продажу в РФ дисплеев местного производства. Вот они в русской прошивкой, там на сайте даже как-бы этим гордились. Ссылку не дам, не сохранял..

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Arhat109-2 пишет:

Где-то видел продажу в РФ дисплеев местного производства. Вот они в русской прошивкой, там на сайте даже как-бы этим гордились. Ссылку не дам, не сохранял..


 

http://www.chipdip.ru/product/wh1602c-ygh-ct-k/

Только цена на них не радует

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Блин. Ну вы хотитет и рыбку съесть и .. остальное тоже. Так не бывает! Как говорится "выберите одно из трех". :)

Нашел. Вот это - http://www.melt.com.ru/shop/indikatory-zhk/znakosinteziruyuschie-zhk-ind... сайт производителя.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Arhat109-2 пишет:

Блин. Ну вы хотитет и рыбку съесть и .. остальное тоже. Так не бывает! Как говорится "выберите одно из трех". :)

Нашел. Вот это - http://www.melt.com.ru/shop/indikatory-zhk/znakosinteziruyuschie-zhk-ind... сайт производителя.

Ну не то чтобы сильно хочу. Пробовал найти по цене неруссифицированных. Бросил. Сейчас графические дисплеи вполне адекватные по цене. Так что сильно изголяться смысла нет.

Кстати, пытался запустить 122х32 дисплей
https://world.taobao.com/item/14679140187.htm

Что то плохо выхлдит без даташитов. Никто на такой не встречал?

Otto
Offline
Зарегистрирован: 26.06.2016

У меня изначально тоже не запустился дисплей. Помог Google. Нашёл простой скетч для определения I2C адреса, у меня оказался такой: "0x3F", и подобрал библиотеку с которой отображались нормально все буквы: "LiquidCrystal_I2C", и подрегулировал подстрочник на I2C модуле. Так же спасибо всем за подсказки в этой теме.

crazy-coder
Offline
Зарегистрирован: 20.07.2015

если что, то вот библиотека для текстового LCD дисплея, подключаемого по I2C с поддержкой русских букв