DMD_STM32 - версия библиотеки DMD для СТМ32Дуино

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

DMD_GFX_Font fontBig((uint8_t*)&FranklinGothicMediumCond32pt7b, 38);

Практически на две матрицы в высоту.

На стандартном STM все работает отлично.

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

DMD_GFX_Font fontBig((uint8_t*)&FranklinGothicMediumCond32pt7b, 38);

Практически на две матрицы в высоту.

На стандартном STM все работает отлично.

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

Скорее всего какой-то из мультиплексоров (А и В) - не включается или не выключается. Попробуйте выбрать другие пины для

#define DMD_PIN_A PB11 
#define DMD_PIN_B PB12
 
поменяйте сначала один пин, посмотрите. что изменится. Если ничего - тогда поменяйте и второй, напишите о результате.
Есть еще иысль - может не хватает уровня сигнала, можно попробовать пустить А и В через конвертер
Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Поменять пины пока не пробовал.
Через конвертер 3,3 - 5В ничего не изменилось.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Подниму тему
Размер 5х4 панелей

b707
Offline
Зарегистрирован: 26.05.2017

шикарно. Код из этой библиотеки?

FoxJone
Offline
Зарегистрирован: 19.04.2019

b707 пишет:

шикарно. Код из этой библиотеки?

Вот я сейчас делаю связку из 3-х табло на своих (наших) стм-контроллерах, вот тогда скину фотки)

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Да. На ESP крутится веб сервер для управления и кидает на STM по UART всю инфу.
 

Шикарная библиотека!

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Маленькое видео https://youtu.be/gnga9-Wpqzs

FoxJone
Offline
Зарегистрирован: 19.04.2019

Ну раз уж мы тут хвалимся поделками на стм под библиотеку Дмитрия, то просто оставлю это здесь...

b707
Offline
Зарегистрирован: 26.05.2017

Спасибо, мужики!

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

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

FoxJone
Offline
Зарегистрирован: 19.04.2019

Antsanv пишет:

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

Один. Чип STM32F103C8T6. Там же не полностью все поле светодиодное. Черный композит с модульными вставками. Красные, белые и зеленые модули стоят в нужных местах. Еще релюшка на сирену (когда время матча  доходит до нуля - сирена ревет + можно вручную ее запустить). Все это управляется с ноута, ПО тоже я писал. Пока писал - заказали еще 3 разных табло (футбол, воллейбол и баскетбол), поэтому на ходу поменял концепцию и сделал конструктор для табло любых размеров и под разные игры. То есть сейчас могу взять табло любого размера, прописать в файле настроек координаты всех полей, размеры шрифтов, коды управляющих клавиш, тип игры, наличие/отсутствие сирен, количество табло (до 5 штук, у каждого свой ID) и не меняя ни верхнее ПО, ни прошивку контроллера сразу сделать спортивное табло под нужную игру.

FoxJone
Offline
Зарегистрирован: 19.04.2019

Сейчас тренируюсь на вот таком (монохромный модуль с шагом 6 мм - очень удобно для моделирования), а клиенту уйдет табло 160*96 см (вон бумажки отмечают 96 пикселей).

а файл настроек выглядит так (я там с заделом на будущее сразу под полноцвет настройки прописал):

01[connection]
02Tablo=2
03ipScreen1=-1062731298
04ipScreen2=-1062731299
05ipAddon=-1062731300
06Sirena=1
07[system]
08Owner=Спартак
09Quest=Динамо
10Time=14
11AddTime=7
12SoundTime=10
13[basket]
14Ngame=4
15Text1=СЧЕТ        ВРЕМЯ        СЧЕТ
16Tex12=ФОЛЫ       ТАЙМ       ФОЛЫ
17 
18Text1Size=12
19Text1Red=255
20Text1Green=0
21Text1Blue=0
22Text1X=0
23Text1Y=20
24Text1CX=160
25Text1CY=12
26Text1Align=1
27 
28Text2Size=12
29Text2Red=255
30Text2Green=0
31Text2Blue=0
32Text2X=0
33Text2Y=60
34Text2CX=160
35Text2CY=12
36Text2Align=1
37 
38TimeSize=24
39TimeRed=255
40TimeGreen=0
41TimeBlue=0
42TimeX=48
43TimeY=32
44TimeCX=64
45TimeCY=24
46TimeAlign=1
47 
48OwnerSize=16
49OwnerRed=255
50OwnerGreen=0
51OwnerBlue=0
52OwnerX=0
53OwnerY=0
54OwnerCX=80
55OwnerCY=16
56OwnerAlign=0 и так далее по всем полям

 

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Большая работа проделана!
Напишите мне 7600204@gmail.com Есть что обсудить.

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

Сейчас тренируюсь на вот таком (монохромный модуль с шагом 6 мм - очень удобно для моделирования), а клиенту уйдет табло 160*96 см (вон бумажки отмечают 96 пикселей).

а общий размер этого панно - 160х160 пикселей  (5х10) модулей? Не слабо...

Если есть еще интересные фото - выкладывайте :) - я их потом на гитхаб библиотеки выложу :)

FoxJone
Offline
Зарегистрирован: 19.04.2019

b707 пишет:

а общий размер этого панно - 160х160 пикселей  (5х10) модулей? Не слабо...

На заре моего знакомства со светодиодными экранами (лет 10-12 назад) попадались модули с шагом 3,75, полностью совместимые по скану со стандартным Р10. Я их не видел вживую уже лет 7, а вот сейчас бы с удовольствием купил и сделал бы макетку не 160*160, а 256*256... Когда пишешь ПО под экран - очень полезно вот так посмотреть на результат, а в цех на пробы не набегаешься.

Этих вот монохромных р6 тоже нигде уже не найти, не выпускает уже давно. Этой макетке лет 6-8 вроде.

FoxJone
Offline
Зарегистрирован: 19.04.2019

В продолжение темы о спортивных табло на СТМ. Наконец то сдал :)

36 модулей, 1 контроллер STM, управление по кабелю (RS485)/ В комплекте 2 табло атаки (32*32 см), сирена, беспроводной пульт.

FoxJone
Offline
Зарегистрирован: 19.04.2019

И еще 2 табло сегодня сдал. На этом завязываю со спортом в этом году)

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Вот такая проблема появилась на больших экранах https://youtu.be/YoR4thisjNg

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

Что имеем:
- появляется не сразу, при тестах все отлично работает
- появляется на табло где больше одного ряда модулей. 64*16 работает уже несколько месяцев. Выявлено на 64*32 и на двух 160*64.

Есть какие-нибудь мысли? Что-то с утечкой памяти?

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Вот такая проблема появилась

Что имеем:
- появляется не сразу, при тестах все отлично работает

"не сразу" - это насколько долго?

Цитата:
- появляется на табло где больше одного ряда модулей. 64*16 работает уже несколько месяцев. Выявлено на 64*32 и на двух 160*64.

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

Вот если бы 128х16 работало, а 64х32 нет... можно было бы говорить что виноваты ряды

Цитата:
Есть какие-нибудь мысли?

пока нет... Насколько я понимаю, это надо собрать табло и оставить его работать часами, а то и днями

 

 

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Примерно через неделю появились такие эффекты на 3 табло.

Про многорядность пока только предположение. Факт только что 64*16 (2*1) работает нормально с июня месяца.

Понятно что надо тестировать, чем и займусь на 128*16 и 64*16, но может Вас наведет на какую-то мысль где копать в библиотеке.

(да, большие табло работали больше суток на тестировании, а потом....)

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Примерно через неделю появились такие эффекты на 3 табло.

неделю... ой еееее :)

Но, на самом деле, если знаешь. что это происходит - искать уже легче. Я посмотрю, может что и найду.

FoxJone
Offline
Зарегистрирован: 19.04.2019

А вот вопрос: на всех трех табло одна и та же программа была или разные?

Потому что неплохо бы еще и программу глянуть...

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

Потому что неплохо бы еще и программу глянуть...

согласен.

Antsanv. у Вас же есть моя почта? Напишите мне, пожалуйста

FoxJone
Offline
Зарегистрирован: 19.04.2019

Как вариант, программы может и разные, а ядро одно.

К примеру я во все свои поделки пихаю вот такой кусок (не обижусь, если покритикуете, а может и поправите):

01void showled(int x, int y, int dx, int dy, int font, int align, String message) {
02  if (font == 8) dmd.selectFont(&Font8_F);
03  if (font == 12) dmd.selectFont(&Font12_F);
04  if (font == 16) dmd.selectFont(&Font16_F);
05  if (font == 24) dmd.selectFont(&Font24_F);
06  if (font == 32) dmd.selectFont(&Font32_F);
07  int Len = dmd.stringWidth(message.c_str(), message.length());
08  if (align == 0) dmd.drawString(  x,  y, message.c_str(), message.length(), GRAPHICS_NORMAL );
09  if (align == 1) {
10    x = (x + dx / 2) - (Len / 2);
11    if (0 > x) x = 0;
12    dmd.drawString( x, y, message.c_str(), message.length(), GRAPHICS_NORMAL );
13  }
14  if (align == 2) {
15    x = x + dx - Len;
16    if (0 > x) x = 0;
17    dmd.drawString(x, y, message.c_str(), message.length(), GRAPHICS_NORMAL );
18  }
19}

 

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

К примеру я во все свои поделки пихаю вот такой кусок (не обижусь, если покритикуете, а может и поправите):

Выравнивание текста попра- полеву и по центру :) беглым взглядом вроде косяков не вижу...

 

FoxJone
Offline
Зарегистрирован: 19.04.2019

Ну с точки зрения правоверного Сишника, убить бы за Стринг... Но я привык к стрингам, мне с ними удобно)

Ну и вообще эта оболочка под ДравСтринг намного упрощает мне жизнь с точки зрения вывода текста на экран. Задал координаты, длину, ширину, размер шрифта, выравнивание и собственно сам текст - и все нарисовалось)

PS Вот кстати, фонты мои не запускал? Фонты очень мне нравятся! Мне их один дезигнер рисовал, они четко для светодиодов!

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

PS Вот кстати, фонты мои не запускал? Фонты очень мне нравятся! Мне их один дезигнер рисовал, они четко для светодиодов!

нет пока

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Уведомления зачем-то в спам ушли, проглядел :(

Софт во всех табло для STM одинаковый. Я сегодня на гитхаб выложу код и пришлю ссылку на емайл.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Да, с пятницы работает 64*32, пока все ок. Единственно один раз при запуске хаотично светились диоды и ничего больше не происходило. Но это видимо шлейф был, переткнул разъемы и запустилось.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Вроде открыл Вам доступ к https://github.com/Lightwell-bg/uartParsing

и https://github.com/Lightwell-bg/STM32_ScreenGPS_v3

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

Шрифты на почту кинул, может пригодятся.

Если каких-то библиотек не будет хватать, пишите.

lean_74
Offline
Зарегистрирован: 22.12.2015

Antsanv пишет:

Вот такая проблема появилась на больших экранах https://youtu.be/YoR4thisjNg

Это фонят длинные шлейфы, 16-ти проводные, если они более метра и хреновое заземление, плюс преобразователь 3.3 в 5 вольт от СТМ-ки обязателен. И будет Вам счастье. Мы это прошли год назад. 

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Тестирую уже дней десять. Кажется проблема в шлейфах и преобразователе. Метра там нет, но...  Вы, кстати, какой используете? В смысле на каком чипе?
 

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Оказалось дело в самой таблетке. Две других на том же клоне STM работают без пропуска строк.

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Оказалось дело в самой таблетке. Две других на том же клоне STM работают без пропуска строк.

Отличная новость.

 

ЗЫ Разработка библиотеки не заброшена, просто слегка заторможена :)

FoxJone
Offline
Зарегистрирован: 19.04.2019

b707 пишет:
Разработка библиотеки не заброшена, просто слегка заторможена :)

Читал сегодня забавный топик про 128-битное число и понял, чего не хватает в библиотеке!

Не хватает метода вывода картинки из байтового массива! То есть я в курсе, что в библиотеке все делается через дравпиксель и можно сделать самому... Но было бы круто иметь готовый метод drawimage, где на входе координаты и байтовый массив.

jdigreze
Offline
Зарегистрирован: 14.01.2018

Доброго здравия автору библиотеки и всем присутствующим!

В общем, удалось запустить библиотеку на ESP32.

Код пока крайне сырой, но уже показывает.

Пока используется только HSPI по прерываниям ставится в очередь и дальше средствами FreeRTOS по каналу DMA 2 шлется на матрицы.

Теоретически можно сделать экранчик 8х6 матриц, но на 18МГц, что физически конечно из-за длинных линий дает сбой.

Но в целом я доволен.

b707
Offline
Зарегистрирован: 26.05.2017

jdigreze пишет:

Теоретически можно сделать экранчик 8х6 матриц, но на 18МГц, что физически конечно из-за длинных линий дает сбой.

что за матрицы - RGB или монохром, размер?

jdigreze
Offline
Зарегистрирован: 14.01.2018

Монохром P10, 32x16

b707
Offline
Зарегистрирован: 26.05.2017

jdigreze пишет:

Монохром P10, 32x16

на СТМ экран 8Х6 таких модулей без проблем заводится на 9 МГц

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

jdigreze
Offline
Зарегистрирован: 14.01.2018

У меня на 9МГц из-за длинных проводов (горизонтальным зигзагом подключено) уже на втором ряду артефакты полезли.

Я знаю, что можно сделать вертикальный зигзаг, тогда длина уменьшится и может "взлетит", но сроки жали и переворачивать собранный экран 6х4 было нереально. Перевел на 4,5МГц и все заработало как надо.

Еще есть предположение, что надо duty sck ставить на 50%.

Сейчас переключился на совсем другой проект, тоже на esp32, но без матриц. Посему эксперименты пока отложил. Хотя мысль о задействовании VSPI параллельно c HSPI мне кажется довольно перспективной.

b707
Offline
Зарегистрирован: 26.05.2017

jdigreze пишет:

мысль о задействовании VSPI параллельно c HSPI мне кажется довольно перспективной.

при параллельном выводе на стм я вовсе отказался от SPI, делаю просто выводом в порт

FoxJone
Offline
Зарегистрирован: 19.04.2019

b707 пишет:
при параллельном выводе на стм я вовсе отказался от SPI, делаю просто выводом в порт

Дмитрий, а я где то пропустил этот момент про параллельный вывод?

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

Дмитрий, а я где то пропустил этот момент про параллельный вывод?

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

Делим панно на несколько цепочек матриц (например по горизонтали), все управляющие пины (OE CLK LAT) параллелим, а пины DATA каждой цепочки заводим на свой пин. И потом выводим разом на все ряды матриц.

SPI при таком раскладе применять нельзя. но за счет одновременного вывода даже без SPI получается быстро. На квадратных матрицах  этот метод дает прирост скорости.

На тестовых макетах я это уже опробовал - работает.

FoxJone
Offline
Зарегистрирован: 19.04.2019

b707 пишет:

FoxJone пишет:

Дмитрий, а я где то пропустил этот момент про параллельный вывод?

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

Ага, нашел в переписке. Надо будет попробовать.

Но я так понимаю, что там модифицированная библиотека нужна? Если да, можете прислать? Если нет, то пример инициализации пинов?

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

Но я так понимаю, что там модифицированная библиотека нужна? Если да, можете прислать? Если нет, то пример инициализации пинов?

да, нужна другая библиотека. Вы посмотрите там же в переписке - я вам ее не высылал?

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

как разберусь - напишу.

FoxJone
Offline
Зарегистрирован: 19.04.2019

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

Но по тому, что я вычитал в переписке, я уже вижу как будет выглядеть новый контроллер. У него будет 1 HUB12, параллельно ему еще один IDC-16 и дополнительно будет шилд на 6 портов, который сверху одевается на контроллер... Ну что то типа такого!

Без шилда контроллер работает как обычный на один канал. С шилдом - на 6 каналов.

b707
Offline
Зарегистрирован: 26.05.2017

быстро вы рисуете :)

Я найду код и вышлю. но это наверно уже между праздниками.

У меня сейчас маленький заказик нарисовался на эту тему - человек попросил оживить ему матрицу RGB 80х40 20сканов - такой вроде ни в одной готовой библиотеке нету. Я полез вспоминать, как прошлым летом подключал Ваши матрицы 64х32 - и ни один код не работает...

 

FoxJone
Offline
Зарегистрирован: 19.04.2019

b707 пишет:

Человек попросил оживить ему матрицу RGB 80х40 20сканов

P4 для помещения, 320*160, скан 1/20.... Если оживите - я тоже такую хочу (модулей этих у меня полно).

b707 пишет:
быстро вы рисуете :)

Да это не рисовал, просто разъемов накидал на плату без дорог...

Но в принципе за час разведу - там ничего нету кроме разъемов и дорог. Главное сначала еще контроллер приготовить под этот шилд - а я как раз месяц назад очередную партию выпустил, так что контроллеры есть пока, не горит...

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

P4 для помещения, 320*160, скан 1/20.... Если оживите - я тоже такую хочу (модулей этих у меня полно).

да, именно такая