Где можно скачать библиотеку для "4-Bit LED Digital Tube Module"?
- Войдите на сайт для отправки комментариев
Чт, 05/02/2015 - 21:36
http://ru.aliexpress.com/item/High-Quality-4-Bits-Digital-Tube-LED-Displ...
дисплей сделан на 2 сдвиговых регистрах TM74HC595
что то как то не хочется самому перебирать биты для сдвигового регистра, мош кто знает где есть библиотека для этой штуки?
https://github.com/reeedstudio/libraries/blob/master/DigitalTube/TM1637.h
код привел для другого модуля (не заметил с первого раза)
http://ru.aliexpress.com/item/Free-shipping-4-digital-display-with-adjus...
да, такой модуль тоже скоро приедет и для него я уже нашёл библиотеку, а вот для этого что в ссылке указал найти не могу.
вот, мош кому интересно будет
http://forum.arduino.cc/index.php?topic=235453.0
Короче пришли мне 2 индикатора из китая, покопался я по форумам, разобрался в принципе работы, нашёл пару работающих кусков кода и написал библиотеку для ардуинки.
"4-Bit LED Digital Tube Module" на двух чипах TM74HC595
Качаем.
https://github.com/kostarev/TM74HC595-4dig-display/archive/master.zip
А можно пожайлуйста по подробней))) как пользоваться новичку? Что куда подключать и какая функция выводит на дисплей?
Разобрался! Спасибо valerik88
Написал по этому модулю небольшую статью
http://www.catincoat.ru/2016/03/arduino-atmega328-4-bit-led-digital.html
Разрешите немного поработать капитаном очевидность, прежде всего для valerk88.
1. Приведенные по ссылке 7-ми сегментные сборки действительно разные. Одни подключаются через пару сдвиговых регистров 74HC595 (где два чипа на обороте платы модуля, маркируются <что-то там>595) и подразумевают _динамическую_ индикацию, т.е. непрерывное обновление со стороны микроконтроллера, чтобы там что-то светилось (выводилось).
2. Другие (сборки 7-ми сегментных индикаторов) подключаются через микросхему TM1637, которая сама может поддерживать динамическую индикацию, т.е. не требует вмешательства микроконтроллера для отображения данных. Это там, где на обороте модуля виден один чип (маркируется TM1637), а на индикаторах (модуля, обычно) присутствует двоеточие.
3. Соответственно софт различается. Там, где присутствует TM1637, обычно используют библиотеку, которую можно найти в поисковике как "TM1637.h". По моему IMHO не самая удачная библиотека, но она работает. Кому было нужно, написали свой софт. В случае двух 74HC595 используют софт для динамической индикации (который проще написать, чем найти, IMHO).
4. В случае приведенной valerik88 "библиотеке" для 7-ми сегментной сборки на сдвиговых регистрах 74HC595 динамической индикации обнаружить не удалось.
4. В случае приведенной valerik88 "библиотеке" для 7-ми сегментной сборки на сдвиговых регистрах 74HC595 динамической индикации обнаружить не удалось.
Вот этот пункт не очень понял. Сможете перефразировать?
Вопрос понял. Перефразирую.
В случае приведенной valerik88 "библиотеке" для 7-ми сегментной сборки на сдвиговых регистрах 74HC595 динамическая индикация отсутствует от слова совсем. Автор не разобрался в вопросе и путает других.
Объясняю, если проще прочитать здесь, а не найти в Инете кучу толковых статей по запросу "динамическая индикация".
Принцип ДИ - гарантированное высвечивание разряда (в поразрядной индикации, есть и посегментная, для большого количества разрядов) втечение определенного времени. Нижней границей инерции человеческого зрения принято считать 50 Гц, допустим у нас 4 разряда. Следовательно, характерная частота обновления разряда 200 Гц (4 х 50) или 5 мс. Один раз в 5 мс нужно зажечь разряд, через 5 мс погасить его и зажечь следующий и т.д. Делать это нужно тупо и регулярно.
Если вы поместите выполняющую такую работу функцию в loop, добиться регулярности будет трудно. Кроме мигания разрядами еще температуру померить хочется или клешню роботу поднять, кнопку в титановом велосипеде прокрутить.
Второе и более досадное. Вот чем занимается ваша функция digit4? Она зачем-то с энтузиазмом параметра replay крутит все разряды индикатора (replay раз) и потом сдыхает. Вместо того, чтобы сдохнуть сразу, предварительно высветив нужный разряд. И не дожидаться пинка где-то в loop'е, а быть регулярно вызываемой, гарантированно раз в 5 мс., например.
Управление ДИ семисегментников на паре сдвиговых регистров отработано до блеска и в прямом смысле сводится к программистскому жаргону - "как два байта переслать". Первый для сегментов, второй для разрядов сборки индикаторов. В пару сдвиговых регистров переслать. По прерыванию таймера. И это все, что надо.
Перефразирование закончил.
Ну, я не такой уж и программист, сделал как смог.
Проблему то я и до вас понимал, что на индикатор нужно непрерывно посылать сигнал, а то потухнет, а как сделать иначе не понял и с учётом вашех комментариев.
Ну не обиделись (или не показали этого), и хорошо. Тут код не критикуют, ворчат на неправильное понимание. Чтобы закрыть тему, коротко.
1. Настраиваете любой таймер на прерывание по переполнению. Характерное время счета - не более 5 мс. Ну это время регенерации разряда индикатора.
2. В теле прерывания таймера по переполнению пишете очень короткий код, те самые два байта переслать. Вы уже делаете это в своем коде. Один байт - уже протранслированный по таблице сегментов код цифры, второй - номер разряда. Обычно объявляют глобальный массив из 8-ми байт (4 разряда х 2 байта) (в примере _data[]), и глобальный указатель на текущую позицию этого массива (_idx). Код в теле прерывания выглядит как-то так:
Теперь все что в буфере _data[] будет отправляться куда надо само по себе.
3. Пишете функцию вроде indicator_write(int nbr), которая принимает то, что нужно вывести, разбирает число на десятичные цифры, транслирует каждую в сегментный код и пишет в буфер _data[], два байта на одну цифру.
4. Как бы это все с динамической индикацией. Тему можно закрыть.
5. Если кто это читает. Приобретая недорогие сборки 7-ми сегментников, которые китайские товарищи называют digital tube, следует выбирать common catode (общий катод) версии. В этом случае драйверы вроде MAX7219 (max 8 разрядов) или TM1637 (max 6 разрядов) позволят обходиться без всякой ДИ в своих кодах, сами все сделают. Что делать счастливым обладателям сборок с общим анодом - не знаю (кроме ДИ). Понятно, что ДИ не очень дружит с измерениями и некоторыми протоколами.
Обновил библиотеку с учётом замечаний. Скачать можно тут https://sites.google.com/site/fajlydlablogakotavpalto/123/TM74HC595-4dig-display.zip?attredirects=0&d=1
Обновил библиотеку с учётом замечаний. Скачать можно тут https://sites.google.com/site/fajlydlablogakotavpalto/123/TM74HC595-4dig-display.zip?attredirects=0&d=1
А как точки зажигать?
Для этого используй массив символов. LED_0F, добавь в него любые свои символы и выводи их аналогично примеру.
Например ты хочешь вывести такой символ:
Смотришь какие сегменты тебе нужно зажечь, и сооветвствующий бит выставляешь в 0, те сегменты, которые не должны гореть, выставляешь в 1.(Тут могу напутать, возможно наоборот, но принцип тот же)
Если вы поместите выполняющую такую работу функцию в loop, добиться регулярности будет трудно. Кроме мигания разрядами еще температуру померить хочется или клешню роботу поднять, кнопку в титановом велосипеде прокрутить.
Вот пример регулятора температуры с выводом на семисигментный индикатор посредством ДИ. В регуляторе задействован детектор перехода сетевого напряжения через 0 (повешен на прерывание), ведется расчет температуры по сопротивлению датчика температуры, ПИ регулирования и воздействия на нагрузку по алгоритму брезенхема. На глаз мерцание не заметно (на видео это эффект от камеры телефона). Если найду код выложу (давно это было). Ни каких прямых записей в порты не применял, всё на стандартных функциях.
Полностью код не нашел, только секция индикации
Не стал чистить, как есть.
Обычно бред не комментирую, но тут сослались на меня в непонятном контексте, а за слова привык отвечать.
Не тот ли это yul-i-an, которого на потеху всему форуму учат "классу переключения пина"? И, судя по времени, пока не научили.
Или, освоив пины, yul-i-an решил поучить (меня в том числе) динамической индикации семисегментников? Он, правда, не стал "чистить", а оставил "как есть".
Ну можно прикупить поп-корна, если yul-i-an захочет феерического продолжения "на нагрузку по алгоритму брезенхема".
Как регулируется яркость индикаторов ? У меня один блок ярче трех других.
Попробуй задать другое значение в таймере прерываний
Поэкспериментируй с разными задержками
При задержке (1000) яркость стала одинаковая. Респект !
А для 3 -х разрядного индикатора можно использовать?
Не знаю что за трех разрядный индикатор, но сомневаюсь что эту библиотеку можно на что-то другое использовать без переделок
Обновил библиотеку. Скачать можно тут https://sites.google.com/site/fajlydlablogakotavpalto/123/TM74HC595-4dig-display.zip?attredirects=0&d=1
Добавил функцию dispFloat(float f) для вывода чисел с точкой и отрицательных чисел с минусом.
за ранее извиняюсь что немного не по теме .
хочу похвастаться моей поделкой на базе такого дисплея.
все исходники прилагаються
https://www.youtube.com/watch?v=APHAS2nvHLw
Не по теме в первую очередь потому, что дисплей не тот, который в этой теме обсуждается, просто очень похожий, но управляется другим драйвером
почитайте вот эту статью - http://www.catincoat.ru/2016/03/arduino-atmega328-4-bit-led-digital.html
ИМХО
почитайте вот эту статью - http://www.catincoat.ru/2016/03/arduino-atmega328-4-bit-led-digital.html
ИМХО
Пришлось зарегистрироваться, чтоб процитировать Dallyla. Та статья, на которую Вы, Dallyla, ссылаетесь, написана пользователем valerik88. Он сам об этом пишет в начале дискусии. Забавно)))
Сударь, библиотека супер! но! с отображение всех выводимых данных растянуто по времени оооочень сильно. на float отдельное спасибо. появилась необходимость отображать точки не пользуя float. как это организовать на данном дисплее?
Копаю аналогичную тему, но для STM32. Нашел вот такую статью
http://narodstream.ru/stm-urok-25-hal-spi-led-dinamicheskaya-indikaciya/
По сути - это дискретно разбросанный тот же модуль с 595-ми сдвиговыми регистрами. Возможно, будет полезно...
Вопрос для тех, кто курил библиотеку TM1637.h
Описания не нашел. Только отрывки кода.
Есть функции как, например, writeByte и coding. Что они должны выполнять?
.init(D4056A) вызывает ошибку, без параметра работает.
.display("1.234") не работает. Работает .display(номер разряда, значение) или .display(массив).
Вообщем может есть у кого наводки на описание всего этого?
Плата Leonardo, если нужно.
А самому прочитать код слабоTM1637.h
TM1637.cpp
ПС: Скоро будут спрашивать , а кто нибудь читал учебник русского языка, вместо того что бы самому прочитать.
Для тех кому нужна библиотека то она тут https://yadi.sk/d/Ci5aiYzsqo7qk
А самому прочитать код слабоTM1637.h
Умничать я и сам могу.
Код прочитал.
Снова задам вопрос: что делают функции writeByte и coding.
Не хотите отвечать? Не надо.
Ответят другие.
Вопрос для тех, кто курил библиотеку TM1637.h
эта ветка форума для сдвигового регистра TM74HC595
вопрос для тех кто курил такую библиотеку для TM1637 нужно задавать в соответствующей ветке форума, и тогда будешь получать адекватные ответы. учись пользоваться поиском по форуму
http://arduino.ru/forum/programmirovanie/problema-novichok-4-digit-led-d...
За наводки спасибо. Данного pdf не находил.
Попробую разобраться.
Как считаете, при использовании RTOS нужна ли динамическая индикация? Или подойдет и первый вариант библиотеки?
Как считаете, при использовании RTOS нужна ли динамическая индикация? Или подойдет и первый вариант библиотеки?
удали дублированное сообщение.
тебе что нужно сделать с динамической индикацией?
@Moderator
Прошу удалить это и предыдущее мое сообщение. Спасибо
Уважаемые форумчане, знающие TM1637. У меня библиотека, как бы, "вешает" скетч...
http://arduino.ru/forum/obshchii/rabotaet-pri-ide-sam-ne-zapuskaetsyaне
В чем может быть причина?
Вот здесь рабочий скетч под модуль 74HC595 https://robojax.com/learn/arduino/?vid=robojax_74HC595_2_digits
Залил скетч и все заработало как надо, удачи всем
Залил скетч и все заработало как надо, удачи всем
Спасибо. Сохраню себе в архив. Еще отлично работает пример https://alexgyver.ru/tm74hc595_display/
пробовал, именно на этих индикаторах по моей ссылке--не работают!!"
Значит есть отличия в схемотехнике. Должны были работать.
Уважаемые участники форума пожалуйста подскажите дисплей четырёхразрядный индикатор Quad Display с 74НС595 это аналогичен дисплею 4-Bit LED Digital Module c 74HC595 и можно заменить индикатор Quad Display на 4-Bit LED Digital Module не внося изменения в скетч ардуино подключил на соответствующие пины.
Дисплея Quad Display с 74НС595 нет, а 4-Bit LED Digital Module c 74HC595.
Купи лучше ТМ1637 и не парь мосх присуцтвующим.