Семисегментный LED индикатор, 4 цифры: быстрое подключение

Когда в проекте появляется небольшая периферия, не хочется сильно погружаться в логику ее работы. Хорошо было бы сделать так: подключил и все работает. В данном случае, речь о 7-сегментном индикаторе из четырех цифр, который нужно было использовать в некоем приборчике с контроллером STM32F103C8T6 на борту.


Быстро конечно не получилось, определенное погружение было. Индикатор выбирал с минимумом интерфейсных цепей, после чего на AliExpress заказал вот такой. Дисплей работает по последовательному интерфейсу по двум цепям: данные DIO и синхронизация CLK. Ну и соответственно ему нужно 5V.

Чтобы не вникать в особенности протокола обмена (как и что на нем зажигается), поискал и готовые исходники программы (драйвера, назовем ее так) для работы с TM1637. Именно этот чип стоит на платке индикатора и делает всю работу.

Дальше сама процедура.

Подключаем DIO и CLK индикатора к любым GPIO выводам STM32: да-да, именно так, никакой UART здесь не нужен. Всю временную последовательность обеспечивают функции драйвера. Подаем на индикатор питание 5V. На этом аппаратное сопряжение завершено.

Теперь, в драйвере ищем строчки
#define CLK_PORT GPIOA
#define DIO_PORT GPIOA
#define CLK_PIN GPIO_PIN_2
#define DIO_PIN GPIO_PIN_3

и прописываем там свои обозначения выводов GPIO, к которым вы подключили индикатор.

В настройках проекта STM32 (я пользуюсь STM32CubeMX) нужно подправить параметры для портов GPIO: пометить порты как выходные, установить подтяжку Pull Up и скорость обмена High. Кроме этого, поскольку инициализация HAL у меня и так идет в основной программе, я сократил функцию инициализации драйвера, которая теперь выглядит так:
void tm1637Init(void)
{
    tm1637SetBrightness(8);
}

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

Зажечь цифирки на дисплее достигается вызовом функции
tm1637DisplayDecimal(int v, int displaySeparator)

где v это само собственное число которое будет отображено, displaySeparator — включать или нет двоеточие в середине дисплея.

Если чисел вам мало и нужно индицировать кракозябры, добавляете их в шаблон segmentMap.

Вот и все. Теперь как мне кажется все точно выглядит достаточно просто.
Добавить в избранное 0
+
avatar
  • AndyBig
  • 07 декабря 2018, 12:26
+15
Краткий пересказ обзора (хотя куда уж короче этого обзора): мне нужно было использовать в проекте 7-сегментный индикатор, я купил вот такой и использовал :))))
+
avatar
  • drfox
  • 07 декабря 2018, 12:59
-5
+
avatar
  • Alf
  • 07 декабря 2018, 13:05
+1
Понимаю, слишком сложно по сравнению с герметиком и проводами для автомобиля )
Даже любой из перечисленный Вами обзоров, минимум в 3 раза длинее и в 5 раз информативнее Вашего.
Sorry men…
+
avatar
  • AndyBig
  • 07 декабря 2018, 15:01
+1
Вот именно, что тут предмет обзора сложнее герметиков и проводов вместе взятых, однако его описание состоит всего из пары предложений :) Как DIY тоже на обзор не тянет, потому что тоже ноль информации — что делалось, как делалось, как работает и т.д. :)
+
avatar
+4
И зачем это здесь?
+
avatar
  • B0POH
  • 07 декабря 2018, 12:44
+2
Кратче некуда. Хоть бы видео работы представил на всеобщее обсуждение.
+
avatar
  • drfox
  • 07 декабря 2018, 12:53
-2
Видео? Хммм… это вообще-то раздел DIY )
+
avatar
  • bevice
  • 09 декабря 2018, 12:01
0
А где тут диайвай? Модули промышленные, библиотека чужая, код и тот куб нагенерил.
+
avatar
  • drfox
  • 09 декабря 2018, 16:09
0
Можно говорить — «разработка», будет проще и без акцента )

Антенну Герц придумал, транзисторы покупные, кабели тоже, Линух заимствованный, программы все опенсорс, обработка из научных журналов, RF тракт — схемы передрал, ну и пусть что они типовые, так что локатор не ваш, товарищ )

Уровень посетителей конечно впечатляет, хотя чего не сделаешь в погоне за кармой )
+
avatar
  • bevice
  • 10 декабря 2018, 08:34
0
Я к тому, что даже когда косорукие ардуинщики на ютубах что-то показывают, они показывают прежде всего свою работу: чего хотят собрать, чего куда припаяли, как закодили, ну и что в конце-концов получилось. А у вас ссылка на кривую библиотеку и китайский модуль
Вы вроде бы в DIY пишете, а ничего не показываете
+
avatar
  • Alf
  • 07 декабря 2018, 13:02
+1
Эмммммм.
Обычный LED, еще и в связке с STM32, без фоток, нормального описания и т.д.
Для кого и зачем !?

P.S. Краткость не всегда сестра таланта
+
avatar
  • batal
  • 07 декабря 2018, 13:04
+1
Я честно говоря не очень понял куда смотрят модераторы с пропуском подобных, эм, статей.

Влепил статье минус.
+
avatar
  • Dimon_
  • 07 декабря 2018, 13:13
+14
Попробую написать так, чтобы комментарий оказался информативнее самой статьи.

Поехали:

Предмет обзора:


С обратной стороны, покрупнее:


Для тех, кто будет делать свои самоделки.
Библиотека с экзамплами: github.com/avishorp/TM1637

Предмет обзора на видео выглядит так:


Для дальнейшего самостоятельного погружения в тему, можно посоветовать раз, два и т.д.
+
avatar
  • drfox
  • 07 декабря 2018, 15:04
-3
Статья написана для инженера. Крупные картинки к изложенной информации ничего не добавляют )

Возможно, после покупки индикатора на AliExpress я подробно описал бы, как извлекал его из коробки, как снимал пленочку, только статья не об этом. Она для тех, кому нужно быстро подключить дисплей к контроллеру и не тратить время на поиск информации в сети.

Указанная вами ссылка — для Arduino. Есть понимание разницы между Arduino и STM32?
+
avatar
  • Dimon_
  • 07 декабря 2018, 16:08
0
Есть понимание разницы между Arduino и STM32?
Ну, разумеется, ни малейшего :-)
Мои комментарии и обзоры совершенно определённо об этом свидетельствуют. Вы же глянули, прежде чем задать этот вопрос? :-)
По обзорам, кстати, можете оценить моё понимание термина «наполненность статьи», это я про фото упаковки, трек посылки, распаковки и обёрточную бумагу…

PS. Зачем мне публиковать ссылку на библиотеку STM32, если вы её уже дали? Я привёл ссылку на то, что, скорее всего, спросят читатели, зашедшие под кат…
+
avatar
  • rbskates
  • 07 декабря 2018, 13:41
0
Рабочее напряжение TM1637 — 5 Вольт. Максимально допустимое напряжение для SMT32 — 3.6 Вольт. Почему ничего не сгорело?
+++
Нашёл, почти все ноги у STM32 толерантны к 5 вольтам.
+
avatar
  • drfox
  • 07 декабря 2018, 15:10
0
STM32 можно питать от +5В, он имеет встроенный стабилизатор на +3.3В. В данном случае так и сделано.

Serial interface — 3.3В, с STM32 сопрягается нормально.
+
avatar
+2
STM32 можно питать от +5В
8о серьезно? а спецификации умалчивают)) секретная фича для пентагона
VDD = 2.0 to 3.6 V
+
avatar
  • rbskates
  • 07 декабря 2018, 15:41
0
Он имеет в виду плату.
+
avatar
  • AndyBig
  • 07 декабря 2018, 16:01
+1
Он написал «STM32», а не «плата» :)
+
avatar
  • drfox
  • 07 декабря 2018, 17:10
-1
Ну конечно плату )

Кстати нет спецификации на STM32, это обобщенное название семейства чипов
+
avatar
  • CuMr
  • 07 декабря 2018, 17:35
0
А атмел можно питать и от 12В, Ога.
+
avatar
  • AndyBig
  • 07 декабря 2018, 16:00
0
STM32 можно питать от +5В, он имеет встроенный стабилизатор на +3.3В
С чего Вы это решили?
+
avatar
  • B0POH
  • 07 декабря 2018, 13:43
+1
Ну вот видео на котором показана работа индикатора.
+
avatar
+3
Да размещенный обзор «Dimon_» более информативен.
+
avatar
  • abyrwalg
  • 07 декабря 2018, 15:08
0
но и его можно сократить до 2-й фотки;)

а вот автор топика ну прям очень вовремя упоминает о возможности использовать свои символы;)

Att: не будет топика — не будет коммента, так что голосуйте сердцем разумно;))