Arduino, P10, DMD максимальное количество модулей

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Arduino, P10, DMD максимальное количество модулей

Сообщение Translator » 07 окт 2014, 14:03

Код: Выделить всё
DMD dmd(18,1);

То всё работает нормально и 18 модулей у меня горят. Но стоит поставить больше, перестают работать вообще все. Как можно увеличить количество модулей? В моем случае до 30.

Подключал к Arduino UNO. Использую такую схему.

Изображение
Работаю с помощью такой библиотеки https://github.com/freetronics/DMD

Эксперементальным петём добился корректной работы 22 модулей.

Изменив в DMD.h размер массива marqueeText

Код: Выделить всё
//Marquee values
    char marqueeText[2]; // было  //  char marqueeText[256];

Если добиться работы 24 модулей, то было бы уже хорошо. Но в идеале 30 модулей нужно.
Translator
 
Сообщения: 5
Зарегистрирован: 04 фев 2014, 10:19

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Angel71 » 07 окт 2014, 17:40

в документации и на их форуме по поводу большого количества модулей смотрели? может частоту spi поднять, может блок питания не справляется, может еще каких деталюжек нужно на шлейф докинуть, может памяти не хватает или ещё что в коде поменять нужно. вариантов же слегка не один.
если не секрет, а чего именно эти модули? у них же цены уропейские. самые дешовые китавайские (частенько они на копиях mbi микр, т.е. взаимозаменяемые и дока/код легко найт) 16*32 примерно от 10$. те, что получше немного дороже.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Translator » 08 окт 2014, 06:37

Я подключал последовательно 18 панелей - работают нормально.
Вот схема подключения ардуино UNO
Изображение

В документации не нашёл ничего по поводу большого количества модулей.

Как только при вызове класса
Код: Выделить всё
DMD dmd(24,1);

Использую число больше 18, перестает работать. Подключено в этот момент может быть хоть 24 модуля, хоть 6 - не важно. Если модулей не хватает, то просто отрисовывается на имеющихся. Проблема именно в контроллере. Питания хватает.

В DMD.cpp в конструкторе класса создается массив

Код: Выделить всё
bDMDScreenRAM = (byte *) malloc(DisplaysTotal*DMD_RAM_SIZE_BYTES);

Размером КОЛИЧЕСТВО МОДУЛЕЙ * 64

А потом программа где-то валится, толи выход за пределы массива, толи памяти не хватает. Я понять не могу.

Частота SPI меняется вот так?
Код: Выделить всё
SPI.setClockDivider(SPI_CLOCK_DIV128);
Translator
 
Сообщения: 5
Зарегистрирован: 04 фев 2014, 10:19

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Angel71 » 08 окт 2014, 13:24

тфу блин это ваше работает не работает, там же сдвиговые регистры. как же лень в их коде копаться.
в общем подключаете все нужные модули, настраиваете в коде на 2-3 модуля, выводите что-нибудь в последнем и смотрите. выведенное должно повторятся на куче модулей.
время. частота spi задаётся делителем относительно частоты мк. в данном случае у вас SPI.setClockDivider(SPI_CLOCK_DIV128), т.е. 125кгц. можно прикинуть какая минимальная частота нужно и выставить. можно сразу выставить побольше, глюки вывода будут только при слишком низкой. отрисовка выплёвывание данных происходит в ф-и ScanDMD (вызывает dmd.scanDisplayBySPI). вызывается постоянно в таймере. менять частоту вызова, думайте сами.
память. у 328й меги 2кб озу. матрица 32*16, т.е. 512 бит, т.е. 64 байта. 18 матриц это 1152 байта, 30 матриц уже 1920 байт. +остальная часть программы и прочего память на что-то использует.
:) получается куча вариантов. можно просто взять плату, у которой будет мк с большем ко-вом памяти. можно всякие ухищрения. вогнать в буфер данные, отрисовывать первую часть, вогнать в буфер данные для второй части и выплюнуть. можно внешнюю флеш подкинуть и просто гнать поток данных. можно подключить внешнюю флеш или фрам и использовать как внешний буфер. и т.д. сами подумайте, что вы там отрисовываете и как, знаете только вы.
Последний раз редактировалось Angel71 08 окт 2014, 14:14, всего редактировалось 1 раз.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение elmot » 08 окт 2014, 14:14

Человека уже на других форумах 100 раз послали. Памяти у него не хватает.

Добавлено спустя 1 минуту 40 секунд:
Надо взять мощный контроллер и код туда портировать. Напр у stm32f4-discovery объем памяти во много раз больше и spi шин там штуки 3.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Angel71 » 08 окт 2014, 14:17

ну да, в конце тоже склонялся, что дело скорей всего в памяти.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение avr123.nm.ru » 09 окт 2014, 10:40

Возможно нагрузка большая для выводов АВР. надо посмотреть осцилограммы сигналов, похоже их амплитуда снижается при 18 мод. И использовать мощные буферы на сигнальные линии, они наверняка однонаправленные.

либо каждые 10 модулей ставить в разрыв обычные буферы типа 74hc244

а первое дело это попробовать понизить частоту такта и команд.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Angel71 » 09 окт 2014, 12:15

не тормозим, сначала память. остальное скорей всего в норме.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Translator » 10 окт 2014, 14:24

Спасибо мужики. Я работаю с UNO, если бы подключить Mega, то всё бы наверное получилось.
Но что-то у меня с подключением меги проблема.
Кто-нибудь подключал мегу к таким модулям? Есть рабочая схема?
Translator
 
Сообщения: 5
Зарегистрирован: 04 фев 2014, 10:19

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Angel71 » 10 окт 2014, 16:39

смотрите распиновку, правите пару строк кода и через пару минут оно работает на меге. :pardon: ничего сложного.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Translator » 11 окт 2014, 20:50

С мегой получилось подключить 30 модулей. Всё работает. Спасибо за советы мужики.
А не подскажите, можно ли сделать, чтобы при изменении определенной части строки, остальная часть не менялась?
Просто когда прорисовывается вся строка - это очень долго.
Или может можно как-то ускорить работу?
Частоту SPI поднял, поставил SPI_CLOCK_DIV2
Translator
 
Сообщения: 5
Зарегистрирован: 04 фев 2014, 10:19

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Angel71 » 11 окт 2014, 22:54

можно менять любой пиксель независимо от все других. быстрей "прорисовывайте". :) учебник си, калькулятор
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Translator » 12 окт 2014, 07:14

Можешь пояснить как это сделать?
Translator
 
Сообщения: 5
Зарегистрирован: 04 фев 2014, 10:19

Re: Arduino, P10, DMD максимальное количество модулей

Сообщение Angel71 » 12 окт 2014, 10:52

ответ был выше, учить элементарные базовые вещи (как минимум работу с памятью и битовые операции кто-то пропустил) и используя элементарные расчеты высчитывать, на что хватит тактов мк, памяти, пропускной интерфейса.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18


Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 13