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

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 ม.ค. 2025

ความคิดเห็น •

  • @IvanFedulov
    @IvanFedulov 9 ปีที่แล้ว +6

    Спасибо за уроки, полезные вещи снимаешь! Если честно, удивлен что так мало просмотров у тебя.

    • @Techn0man1ac
      @Techn0man1ac 9 ปีที่แล้ว

      +Ivan Fedulov всему своё время. Москва не сразу строилась ;)

  • @asmodey1605
    @asmodey1605 5 ปีที่แล้ว +1

    Когда мне понадобился МЭЛТ 1602 со SPI интерфейсом, а адаптера у меня не было, я сделал его на PIC16F1829. Попутно согласовав 3 вольтовое питание с 5 вольтовым (для чего потребовалось 12 транзисторов). В зависимости от прошивки PIC может работать с шиной SPI или I2C. Что удобно, это организация буфера в ОЗУ микроконтроллера. Можно не теряя времени по быстрому загнать в него то, что требует отображения, а потом не спеша вывести на дисплей с HD44780, который не очень то шустрый.

  • @spajalnikom
    @spajalnikom 7 ปีที่แล้ว

    подскажи пожалуйста почему дисплей подключенный по i2c и модуль часов реального времени ds1307 параллельно подключенные часы выводятся на дисплей но они стоят.Без дисплея в порт идут.i2c адреса разные.Уже отпаял резисторы с модуля i2c дисплея и от модуля часов и подтянул к + 10Ком все равно стоят.Как их запустить по i2c?

    • @rnadyrshin
      @rnadyrshin  7 ปีที่แล้ว

      Понятия не имею, надо отлаживать. Возможно часы нужно запустить отдельной командой, попадались мне такие. Копайте

    • @spajalnikom
      @spajalnikom 7 ปีที่แล้ว

      Да уже неделю мучаюсь с ними.Спасибо.

  • @alexanderbecker8924
    @alexanderbecker8924 8 ปีที่แล้ว +1

    Руслан, подскажи можно ли используя твою библиотеку hd44780 через pcf8574 задействовать другие возможности дисплея как например моргающий курсор, сдвиг курсора и тд. А ещё как можно опрашивать дисплей где находится в данный момент курсор чтоб в программе реализовать какое-то меню "если... то...".
    А так в принципе твоя библиотека отлично работает на STM32F103C8T6 конфигурированная через CubeMX, даже обмен по I2C реализовал через DMA, дисплей стал быстрее работать, спасибо!

    • @rnadyrshin
      @rnadyrshin  8 ปีที่แล้ว +1

      +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 - понял, прикольно!
      Ваше меню вполне можно сделать на базе этой библиотеки. Надо просто продумать и написать логику формирования и заполнения строк при отрисовке меню. Это процесс творческий)

  • @SuperTaz1986
    @SuperTaz1986 9 ปีที่แล้ว

    Расскажите пожалуйста про MAX7219 откуда берутся помехи, после чего приходится сбрасывать.

    • @rnadyrshin
      @rnadyrshin  9 ปีที่แล้ว

      +Stanislav S поподробнее пожалуйста

    • @Avrora707
      @Avrora707 7 ปีที่แล้ว

      Очень часто, при подаче питания, этот МАХ уходит в глюк, в следствии чего он "зажигает" все сегменты, которые были подключены в тот момент. Это состояние сбрасывается только снятием питания с МАХ, и на программные команды в этом состоянии он уже не реагирует.

  • @Талян-ж8д
    @Талян-ж8д 7 ปีที่แล้ว

    Какой скейч нужен для того чтобы экран 2004 отображал некоторые параметры по usb с программы smartie5.3 Заранее спасибо!

    • @rnadyrshin
      @rnadyrshin  7 ปีที่แล้ว

      не знаю, smartie запускал лет 7-8 назад, подключая дисплей к LPT-порту без всяких скетчей. Но гугл должен знать

  • @esofonov
    @esofonov 8 ปีที่แล้ว

    А может лучше через сдвиговый регистр подключать (74CH595)? Портов можно сэкономить. Или сдвиговый тоже много процессорного времени на обновление экрана занимать будет?

    • @rnadyrshin
      @rnadyrshin  8 ปีที่แล้ว

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

    • @esofonov
      @esofonov 8 ปีที่แล้ว

      Электроника в объективе Я именно про работу с дисплеем (2-4 строки). Много ли занимает процессорного времени сдвиговый регистр 74CH595?

    • @yehorpererva6803
      @yehorpererva6803 7 ปีที่แล้ว

      А еще можно использовать PIC16F88 и общаться как по аппаратному UART.

  • @SuperTaz1986
    @SuperTaz1986 9 ปีที่แล้ว +1

    Почему не программируете через USB?

    • @rnadyrshin
      @rnadyrshin  9 ปีที่แล้ว +1

      +Stanislav S потому что я не использую bootloader, шью программатором

  • @80cahek
    @80cahek 9 ปีที่แล้ว

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

    • @rnadyrshin
      @rnadyrshin  9 ปีที่แล้ว

      +Румата Эсторский Скорее всего ошибка в заполнении индикатора
      Кондёры я не вешал, всё стабильно и так

    • @80cahek
      @80cahek 9 ปีที่แล้ว

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

    • @rnadyrshin
      @rnadyrshin  9 ปีที่แล้ว

      +Румата Эсторский ааа, ну так я не пробовал, честно говоря. У меня индикатор обновлялся хотя бы раз в секунду. Собственно, содержимое ОЗУ контроллера дисплея могло попортиться не только по интерфейсу, тут можно гадать долго. Надо пробовать: менять дисплей, менять БП, добавлять емкости и т.п. Перепроверить, не мог ли МК всё-таки выдавать что-то на интерфейс. Он у тебя что делает несколько часов? спит?

  • @infocentrist
    @infocentrist 9 ปีที่แล้ว +1

    Очень хороший обзор. Но первая попытка вывести на дисплей что то ,лично у меня провалилась. И не представляю как в этой программе например сделать часы, термометр, или вывод с датчиков. Все эти формулы для меня лес, темный и большой. Но l2c нравится тем что управление по 2 проводам.

    • @rnadyrshin
      @rnadyrshin  9 ปีที่แล้ว

      Если есть желание разобраться почему не заработало сразу, пиши в почту. Разберемся

    • @infocentrist
      @infocentrist 9 ปีที่แล้ว

      Хорошо. Как только закажу такой же дисплей.

    • @Techn0man1ac
      @Techn0man1ac 9 ปีที่แล้ว +1

      +infocentrist на ардуино всё проще ;)

  • @ДмитриЕсауленко
    @ДмитриЕсауленко 3 ปีที่แล้ว

    👍

  • @RuslanGeek
    @RuslanGeek 8 ปีที่แล้ว +3

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

  • @Аркоб
    @Аркоб 7 ปีที่แล้ว

    Классно, провтыкал по началу, что ж за интерфейс такой,"идваси"?)))

  • @ilyabredov6567
    @ilyabredov6567 6 ปีที่แล้ว +1

    Уж по инерции хотел было комментить, что, мол, так дорого-то? Ан-нет, недорого!

  • @РыбачОк83
    @РыбачОк83 7 ปีที่แล้ว

    здравствуйте.возникла проблема.мониторчик с платой i2c перестал показывать информацию(атм.давление,температуру.)только всё установил всё показывало. но вытащил usb кабель из ардуинки во время работы и подключил к кроне .после теперь ничего не показывает(никакой информации.только пустые клетки как при покупки((( )можете подсказать что могло случится??

    • @rnadyrshin
      @rnadyrshin  7 ปีที่แล้ว

      Если 9 В попало на дисплей, то скорее всего умер контроллер дисплея

    • @РыбачОк83
      @РыбачОк83 7 ปีที่แล้ว

      а как 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.

    • @РыбачОк83
      @РыбачОк83 7 ปีที่แล้ว

      можете что нибудь посоветовать?

    • @rnadyrshin
      @rnadyrshin  7 ปีที่แล้ว

      Судя по тексту ошибки, проблема программная, конфликтуют библиотеки

    • @rnadyrshin
      @rnadyrshin  7 ปีที่แล้ว

      В Arduino IDE я не разбираюсь

  • @kovach9036
    @kovach9036 7 ปีที่แล้ว

    как понять чтение на дисплей, давно немогу понять?

  • @street_chronicles
    @street_chronicles 8 ปีที่แล้ว

    Почему не hal stm32?

    • @rnadyrshin
      @rnadyrshin  8 ปีที่แล้ว

      Изначально не использовал HAL в проектах, а теперь уже лениво переносить их на HAL

  • @asherxent395
    @asherxent395 8 ปีที่แล้ว

    Переходник на микросхеме PCF8574AT пытался запустить с 1602 экраном, так и не смог определить его адрес I2C. Сканер I2C ничего не нашел. ((( И библиотеки перебирал разные ничего не помогло.

    • @rnadyrshin
      @rnadyrshin  8 ปีที่แล้ว

      Если сканер не нашёл, значит PCF8574 не ответил. Неисправен или неправильно подключен по i2c

    • @asherxent395
      @asherxent395 8 ปีที่แล้ว

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

    • @ДиманБажин
      @ДиманБажин 8 ปีที่แล้ว

      1 земля должна быть общая, 2 в библиотеке нужно поменять значение на "1" смотри видео на 17:50

    • @asherxent395
      @asherxent395 8 ปีที่แล้ว +1

      Купил такой же модуль, определился нормально, Видимо первый оказался бракованный.

    • @rnadyrshin
      @rnadyrshin  8 ปีที่แล้ว

      Вот и здорово :)

  • @ff5x2
    @ff5x2 8 ปีที่แล้ว

    блин... это если еще такой корпус для клавы, значит еще минус 90мс
    ... зато можно использовать один корпус, и для клавы и для дисплея :)

  • @АлександрПокровский-к4ь
    @АлександрПокровский-к4ь 5 ปีที่แล้ว

    Непонятно, но интересно)

  • @ff5x2
    @ff5x2 8 ปีที่แล้ว

    т е её можно использовать в т ч для матрицы клавиатуры...
    это я удачно зашел (с)

  • @kovach9036
    @kovach9036 7 ปีที่แล้ว +1

    мне одному интересно что за микрухт под этими черными хренями?)

    • @ilyabredov6567
      @ilyabredov6567 6 ปีที่แล้ว +1

      Обыкновенные бескорпусные микросхемы. В данном случае - драйверы ЖК. Очень частая практика, с целью снижения себестоимости. Микросхема разрабатывается на этапе проектирования всего устройства, и в итоге снижается количество технологических операций - нет ненужного корпуса, выводов и припоя, используется сварка. Даже в СССР применялись - к примеру, в калькуляторах МК-52