I2C-адаптер для дисплеев на HD44780

  Рет қаралды 30,628

Electronics in focus

Electronics in focus

8 жыл бұрын

Группа ВК: electronics_in_camera
Инстаграм: / electronics_in_focus
Исходник проекта для AVR (IAR): bitbucket.org/nadyrshin_ryu/h...
Исходник проекта для STM32 (IAR): bitbucket.org/nadyrshin_ryu/h...
Текстовый дисплей 4x20 на hd44780 и I2C-адаптер: ali.ski/R3yQe

Пікірлер: 61
@IvanFedulov
@IvanFedulov 8 жыл бұрын
Спасибо за уроки, полезные вещи снимаешь! Если честно, удивлен что так мало просмотров у тебя.
@Techn0man1ac
@Techn0man1ac 8 жыл бұрын
+Ivan Fedulov всему своё время. Москва не сразу строилась ;)
@asmodey1605
@asmodey1605 5 жыл бұрын
Когда мне понадобился МЭЛТ 1602 со SPI интерфейсом, а адаптера у меня не было, я сделал его на PIC16F1829. Попутно согласовав 3 вольтовое питание с 5 вольтовым (для чего потребовалось 12 транзисторов). В зависимости от прошивки PIC может работать с шиной SPI или I2C. Что удобно, это организация буфера в ОЗУ микроконтроллера. Можно не теряя времени по быстрому загнать в него то, что требует отображения, а потом не спеша вывести на дисплей с HD44780, который не очень то шустрый.
@user-iu3gu7tl3j
@user-iu3gu7tl3j 3 жыл бұрын
👍
@user-hd8oy9xp8m
@user-hd8oy9xp8m 5 жыл бұрын
Непонятно, но интересно)
@RuslanGeek
@RuslanGeek 7 жыл бұрын
Подробный пример подключения LCD 1602 по I2C интерфесу radiolaba.ru/microcotrollers/podklyuchenie-lcd-1602-po-i2c-interfeysu.html
@alexanderbecker8924
@alexanderbecker8924 8 жыл бұрын
Руслан, подскажи можно ли используя твою библиотеку hd44780 через pcf8574 задействовать другие возможности дисплея как например моргающий курсор, сдвиг курсора и тд. А ещё как можно опрашивать дисплей где находится в данный момент курсор чтоб в программе реализовать какое-то меню "если... то...". А так в принципе твоя библиотека отлично работает на STM32F103C8T6 конфигурированная через CubeMX, даже обмен по I2C реализовал через DMA, дисплей стал быстрее работать, спасибо!
@rnadyrshin
@rnadyrshin 8 жыл бұрын
+Alexander Becker Спасибо за отзыв! Функцию чтения положения курсора я, к сожалению, не реализовывал. Отображение курсора и запись кастомных символов - тоже. Их можно доделать в принципе, это не сложно. И я, вероятно, доделаю их когда появится время. Но для меню чтение курсора и не нужно. Вы же сами устанавливаете курсор дисплея из программы микроконтроллера, соответственно всегда знаете, где он находится, на сколько позиций смещается. Либо можете установить его в новую позицию в соответствии с алгоритмом отрисовки меню. Ну либо я не до конца понял Вашу задумку. По поводу DMA не совсем понял. У меня он не использовался. По началу я даже думал, что его нет смысла использовать вообще, т.к. обмен с pcf8574 идёт всегда по 1 байту. А сейчас задумался, что можно было бы готовить заранее массив на выдачу в pcf8574 и засылать его с помощью DMA. Правда это не ускорило бы работу с дисплеем, но позволило бы разгрузить ядро микроконтрллера. Или Вы уже переделали обмен на DMA? Если да, то интересно было бы взглянуть.
@alexanderbecker8924
@alexanderbecker8924 8 жыл бұрын
+Электроника в объективе -По поводу DMA: я использую находящийся на отладочной плате часовой кварц и вывожу актуальное время на дисплей. Так вот раньше секунды явно отставали от реального времени, теперь я переделал лишь одну строку как показано ниже и секунды затикали правильно. Не знаю может я что-нибудь не понимаю но факт на лицо. uint8_t pcf8574_write(I2C_TypeDef* I2Cx, uint8_t slave_addr, uint8_t value) { int8_t err; err=HAL_I2C_Master_Transmit_DMA(&hi2c1, HD44780_pcf8574_addr, (uint8_t*)&value, 1); if (err) { return err; } return I2C_ERR_Ok; } -Теперь к курсору: я хочу реализовать один проект где в меню можно было бы с помощью энкодера прыгать от строки к строке и в зависимости от положения курсора либо показывать актуальную температуру, задавать нужную температуру, включать вентилятор или задавать автоматический режим всё это на двух строчках 16х2. Я думаю это возможно нужно только подумать как адаптировать библиотеку. Ещё раз большое спасибо за поддержку и интересные обзоры.
@rnadyrshin
@rnadyrshin 8 жыл бұрын
+Alexander Becker По поводу DMA - понял, прикольно! Ваше меню вполне можно сделать на базе этой библиотеки. Надо просто продумать и написать логику формирования и заполнения строк при отрисовке меню. Это процесс творческий)
@ff5x2
@ff5x2 7 жыл бұрын
блин... это если еще такой корпус для клавы, значит еще минус 90мс ... зато можно использовать один корпус, и для клавы и для дисплея :)
@user-dz1fl1ry2v
@user-dz1fl1ry2v 7 жыл бұрын
Классно, провтыкал по началу, что ж за интерфейс такой,"идваси"?)))
@ancubic1549
@ancubic1549 5 жыл бұрын
ай ту си
@kovach9036
@kovach9036 6 жыл бұрын
как понять чтение на дисплей, давно немогу понять?
@ilyabredov6567
@ilyabredov6567 6 жыл бұрын
Уж по инерции хотел было комментить, что, мол, так дорого-то? Ан-нет, недорого!
@user-ik1vz1hf5v
@user-ik1vz1hf5v 7 жыл бұрын
Какой скейч нужен для того чтобы экран 2004 отображал некоторые параметры по usb с программы smartie5.3 Заранее спасибо!
@rnadyrshin
@rnadyrshin 7 жыл бұрын
не знаю, smartie запускал лет 7-8 назад, подключая дисплей к LPT-порту без всяких скетчей. Но гугл должен знать
@ff5x2
@ff5x2 7 жыл бұрын
т е её можно использовать в т ч для матрицы клавиатуры... это я удачно зашел (с)
@infocentrist
@infocentrist 8 жыл бұрын
Очень хороший обзор. Но первая попытка вывести на дисплей что то ,лично у меня провалилась. И не представляю как в этой программе например сделать часы, термометр, или вывод с датчиков. Все эти формулы для меня лес, темный и большой. Но l2c нравится тем что управление по 2 проводам.
@rnadyrshin
@rnadyrshin 8 жыл бұрын
Если есть желание разобраться почему не заработало сразу, пиши в почту. Разберемся
@infocentrist
@infocentrist 8 жыл бұрын
Хорошо. Как только закажу такой же дисплей.
@Techn0man1ac
@Techn0man1ac 8 жыл бұрын
+infocentrist на ардуино всё проще ;)
@SuperTaz1986
@SuperTaz1986 8 жыл бұрын
Расскажите пожалуйста про MAX7219 откуда берутся помехи, после чего приходится сбрасывать.
@rnadyrshin
@rnadyrshin 8 жыл бұрын
+Stanislav S поподробнее пожалуйста
@Avrora707
@Avrora707 6 жыл бұрын
Очень часто, при подаче питания, этот МАХ уходит в глюк, в следствии чего он "зажигает" все сегменты, которые были подключены в тот момент. Это состояние сбрасывается только снятием питания с МАХ, и на программные команды в этом состоянии он уже не реагирует.
@esofonov
@esofonov 7 жыл бұрын
А может лучше через сдвиговый регистр подключать (74CH595)? Портов можно сэкономить. Или сдвиговый тоже много процессорного времени на обновление экрана занимать будет?
@rnadyrshin
@rnadyrshin 7 жыл бұрын
Вполне можно, если нужны только выходы без возможности работать как входы
@esofonov
@esofonov 7 жыл бұрын
Электроника в объективе Я именно про работу с дисплеем (2-4 строки). Много ли занимает процессорного времени сдвиговый регистр 74CH595?
@yehorpererva6803
@yehorpererva6803 7 жыл бұрын
А еще можно использовать PIC16F88 и общаться как по аппаратному UART.
@spajalnikom
@spajalnikom 7 жыл бұрын
подскажи пожалуйста почему дисплей подключенный по i2c и модуль часов реального времени ds1307 параллельно подключенные часы выводятся на дисплей но они стоят.Без дисплея в порт идут.i2c адреса разные.Уже отпаял резисторы с модуля i2c дисплея и от модуля часов и подтянул к + 10Ком все равно стоят.Как их запустить по i2c?
@rnadyrshin
@rnadyrshin 7 жыл бұрын
Понятия не имею, надо отлаживать. Возможно часы нужно запустить отдельной командой, попадались мне такие. Копайте
@spajalnikom
@spajalnikom 7 жыл бұрын
Да уже неделю мучаюсь с ними.Спасибо.
@80cahek
@80cahek 8 жыл бұрын
кстати, интересно, почему бывает так, что на дисплее искажаются символы, пока не перерисуешь изображение полностью. может там кондеры вешать нужно дополнительно?
@rnadyrshin
@rnadyrshin 8 жыл бұрын
+Румата Эсторский Скорее всего ошибка в заполнении индикатора Кондёры я не вешал, всё стабильно и так
@80cahek
@80cahek 8 жыл бұрын
Электроника в объективе ну вот заполняю индикатор, далее к индикатору обращений нет вообще, через час-два при каком-нить импульсе или ещё хз от чего может исказиться инфа, а может неделю показывать без проблем. если перерисовать экран - то снова все нормально.
@rnadyrshin
@rnadyrshin 8 жыл бұрын
+Румата Эсторский ааа, ну так я не пробовал, честно говоря. У меня индикатор обновлялся хотя бы раз в секунду. Собственно, содержимое ОЗУ контроллера дисплея могло попортиться не только по интерфейсу, тут можно гадать долго. Надо пробовать: менять дисплей, менять БП, добавлять емкости и т.п. Перепроверить, не мог ли МК всё-таки выдавать что-то на интерфейс. Он у тебя что делает несколько часов? спит?
@SuperTaz1986
@SuperTaz1986 8 жыл бұрын
Почему не программируете через USB?
@rnadyrshin
@rnadyrshin 8 жыл бұрын
+Stanislav S потому что я не использую bootloader, шью программатором
@user-og3up2de2e
@user-og3up2de2e 6 жыл бұрын
здравствуйте.возникла проблема.мониторчик с платой i2c перестал показывать информацию(атм.давление,температуру.)только всё установил всё показывало. но вытащил usb кабель из ардуинки во время работы и подключил к кроне .после теперь ничего не показывает(никакой информации.только пустые клетки как при покупки((( )можете подсказать что могло случится??
@rnadyrshin
@rnadyrshin 6 жыл бұрын
Если 9 В попало на дисплей, то скорее всего умер контроллер дисплея
@user-og3up2de2e
@user-og3up2de2e 6 жыл бұрын
а как 9в могло попасть на дисплей? у меня уже так было. я загрузил скетч повторно и дисплей снова стал показывать.потом снова вытащил шнур usb и опять всё пропало а скетч заного не загружается. выдаёт вот такую ошибку:Arduino: 1.8.5 (Windows 8.1), Плата:"Arduino/Genuino Uno" C:\Users\Вадим\Documents\Arduino\libraries\jm_LiquidCrystal_I2C\I2CIO.cpp:29:26: fatal error: jm_Scheduler.h: No such file or directory #include ^ compilation terminated. Несколько библиотек найдено для "LiquidCrystal_I2C.h" Используется: C:\Users\Вадим\Documents\Arduino\libraries\jm_LiquidCrystal_I2C Не используется: C:\Users\Вадим\Desktop\arduino-1.8.5\libraries\Arduino-LiquidCrystal-I2C-library-master exit status 1 Ошибка компиляции для платы Arduino/Genuino Uno.
@user-og3up2de2e
@user-og3up2de2e 6 жыл бұрын
можете что нибудь посоветовать?
@rnadyrshin
@rnadyrshin 6 жыл бұрын
Судя по тексту ошибки, проблема программная, конфликтуют библиотеки
@rnadyrshin
@rnadyrshin 6 жыл бұрын
В Arduino IDE я не разбираюсь
@street_chronicles
@street_chronicles 7 жыл бұрын
Почему не hal stm32?
@rnadyrshin
@rnadyrshin 7 жыл бұрын
Изначально не использовал HAL в проектах, а теперь уже лениво переносить их на HAL
@asherxent395
@asherxent395 7 жыл бұрын
Переходник на микросхеме PCF8574AT пытался запустить с 1602 экраном, так и не смог определить его адрес I2C. Сканер I2C ничего не нашел. ((( И библиотеки перебирал разные ничего не помогло.
@rnadyrshin
@rnadyrshin 7 жыл бұрын
Если сканер не нашёл, значит PCF8574 не ответил. Неисправен или неправильно подключен по i2c
@asherxent395
@asherxent395 7 жыл бұрын
видимо неисправен, т.к. модуль часов определяется сканером нормально.
@user-yy7dl2mm3n
@user-yy7dl2mm3n 7 жыл бұрын
1 земля должна быть общая, 2 в библиотеке нужно поменять значение на "1" смотри видео на 17:50
@asherxent395
@asherxent395 7 жыл бұрын
Купил такой же модуль, определился нормально, Видимо первый оказался бракованный.
@rnadyrshin
@rnadyrshin 7 жыл бұрын
Вот и здорово :)
@kovach9036
@kovach9036 6 жыл бұрын
мне одному интересно что за микрухт под этими черными хренями?)
@ilyabredov6567
@ilyabredov6567 6 жыл бұрын
Обыкновенные бескорпусные микросхемы. В данном случае - драйверы ЖК. Очень частая практика, с целью снижения себестоимости. Микросхема разрабатывается на этапе проектирования всего устройства, и в итоге снижается количество технологических операций - нет ненужного корпуса, выводов и припоя, используется сварка. Даже в СССР применялись - к примеру, в калькуляторах МК-52
OLED-дисплей на контроллере SSD1306
26:30
Электроника в объективе
Рет қаралды 106 М.
ИК-термометр (пирометр) MLX90614
25:46
Электроника в объективе
Рет қаралды 77 М.
Жайдарман | Туған күн 2024 | Алматы
2:22:55
Jaidarman OFFICIAL / JCI
Рет қаралды 1,8 МЛН
HOW DID HE WIN? 😱
00:33
Topper Guild
Рет қаралды 45 МЛН
I Can't Believe We Did This...
00:38
Stokes Twins
Рет қаралды 107 МЛН
Arduino and I2C display 1602
5:55
Home Made
Рет қаралды 38 М.
Hitachi HD44780 text display
46:16
Электроника в объективе
Рет қаралды 21 М.
LCD1602 - это очень просто!
22:19
Гневисть
Рет қаралды 140 М.
Дисплей HD44780 + I2C \ Arduino урок!
5:11
VirF Live Productions
Рет қаралды 37 М.
LCD via I2C in STM32 || CUBEIDE || PCF8574
12:22
ControllersTech
Рет қаралды 77 М.
Arduino and the port extender PCF8574
7:31
Home Made
Рет қаралды 24 М.
Как умирает EEPROM память?
23:15
Электроника в объективе
Рет қаралды 114 М.
Модуль АЦП на ADS1115
19:04
Паяльник TV
Рет қаралды 29 М.
После ввода кода - протирайте панель
0:18
Up Your Brains
Рет қаралды 1,3 МЛН
Красиво, но телефон жаль
0:32
Бесполезные Новости
Рет қаралды 914 М.
Samsung Galaxy Unpacked July 2024: Official Replay
1:8:53
Samsung
Рет қаралды 23 МЛН
تجربة أغرب توصيلة شحن ضد القطع تماما
0:56
صدام العزي
Рет қаралды 53 МЛН
iPhone 15 Pro в реальной жизни
24:07
HUDAKOV
Рет қаралды 334 М.