Обсуждаем цифровые устройства...
Ответить

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Ср янв 18, 2017 12:58:42

Ребята помогите разобраться с кодом для куба 5х5, не могу понять как зажечь только один светодиод. Подключены через сдвиговые регистр 74hc595, катоды собраны вместе и образуют ряды, которые подключены через транзисторы, подключены через выход spim

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Вт янв 31, 2017 20:32:33

FastCat писал(а):Вот и я закончил свой RGB LED Cube 12x12x12.

Здравствуйте. Хотел бы посоветоваться. Хочу сделать LED Cube 8х8х8 монохром дочке в качестве ночника.
Самый главный вопрос к обсуждению - в каком формате хранить эффекты? Лично я считаю, что куб, особенно используемый в качестве ночника, должен быть автономным, то есть управляться не от компьютера - для простоты использования. Если же для включения куба всякий раз надо ноутбук тащить, то это будет использовано пару раз, а потом убрано на полку - точно также, как с моющим пылесосом. Если пылесосить от силы 15 минут, а потом полчаса требуется мыть и сушить пылесос, то как только новизна проходит, пылесос убирается в шкаф, а для "быстрой уборки" покупается простой пылесос, которым и пользуются, моющийся же пылится в шкафу.

Так вот, чтобы куб не стал аналогом пылесоса, он должен быть автономным. Отсюда вопрос - в каком виде хранить эффекты? Если подходить "тупо и в лоб", то 512 монохромных светодиодов образуют массив 64 байта, соответственно, 10 фаз анимации займут 640 байт. Расточительно, однако. Поэтому, думается мне, что загрузку именно данных надо минимизировать, вместо этого по максимуму использовать функции. например, написать функцию попиксельного сдвига содержимого грани куба - как для единичной грани, так и закольцевать сдвиг всех граней куба. Тогда, допустим, для вывода картинки, скользящей по граням куба, не потребуется для каждой фазы анимации перезагружать массив данных, нужно будет лишь вывести картинку на грань однократно, а потом в цикле вызывать функцию кольцевого сдвига картинки на один пиксел в нужную сторону.

Как это реализовали Вы?

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Вт янв 31, 2017 22:22:30

Я то-же начал собирать 8х8х8 но планирую что-бы он ещё и как эквалайзер работал.Ну по поводу хранения,таблицей как в бегущей строке я так думаю. До этого я собрал шарик в автономе и как ночной торшер работал с регулировкой яркостью. https://www.youtube.com/watch?v=H2OjhS8mn58

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Ср фев 01, 2017 09:50:48

Ответ для Alkul - куб и так является автономным устройством. все эффекты у него прошиты в память МК и к компу он подключается для смены (обновления) этой самой прошивки. Так что держать его постоянно подключенным к компу смысла никакого нет, абсолютно.

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Ср фев 01, 2017 16:53:29

PicNik писал(а):Ну по поводу хранения,таблицей как в бегущей строке я так думаю

Бегущая строка - несколько иной девайс, там текст выводится. Текст в формате ASCII занимает совсем немного места, набор выводимых символов (букв) ограничен алфавитом. Так что бегущей строке достаточно иметь в памяти коды для знакогенератора. Для символов 8х8 это составит 8*33*2 = 528 байт на буквы строчные и прописные. Увеличив память знакогенератора до килобайта, добавим спецсимволы и псевдографику. Короче, все, что сверх 1 КБ, можно отдать под выводимый текст в формате ASCII, а текст в таком виде, как я уже сказал, занимает очень мало места.
С кубом же совсем по-другому обстоит. Там нет статически постоянных картинок.

Oberon64 писал(а):Ответ для Alkul - куб и так является автономным устройством. все эффекты у него прошиты в память МК и к компу он подключается для смены прошивки.

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

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Ср фев 01, 2017 17:39:59

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

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Ср фев 01, 2017 19:19:18

Oberon64 писал(а):А я знаю и готов поспорить, т.к. эту конструкцию собирал в двух экземплярах

Под обсуждаемой конструкцией понимается куб 5х5х5? Если да, то такую конструкцию я не рассматривал, ввиду бедности реализуемых эффектов при таком количестве светодиодов. Текст на грани, к примеру, уже нормально не выведешь. Да и жаль, что три вывода каждого регистра пропадают впустую, хотя для куба 8х8х8 требуется всего лишь 3 регистра добавить.
Лично мое мнение - куб должен иметь количество светодиодов, кратное четырем - 8х8х8, 12х12х12, 16х16х16 и т.д. Исключительно для оптимального использования регистров.
Кстати, почти во всех конструкциях из интернета народ использует регистры с последовательным интерфейсом загрузки данных. Применительно опять же к кубу мне это кажется неоптимальным решением - экономить дорожки на печатной плате глупо, а скорость загрузки данных в "параллельный" регистр в 8 раз выше. Посмотрел в приведенной конструкции куба 5х5х5 - вижу, автор схемы со мной согласен и тоже применил "параллельные" регистры.

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Чт фев 02, 2017 11:36:35

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

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Чт фев 02, 2017 19:14:09

Alkul писал(а):С кубом же совсем по-другому обстоит. Там нет статически постоянных картинок.


Может я чего не понял,но в строке нет статики она-бегущая.

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Чт фев 02, 2017 20:04:56

PicNik писал(а):но в строке нет статики она-бегущая.

Допустим, у Вас есть электронное табло, состоящее из 10 матричных светодиодных индикаторов. Одновременно Вы отображаете 10 символов. Допустим, у Вас есть текст, состоящий из 100 символов, который в режиме бегущей строки выводится на табло.
В данном случае статика - это 100 символов, хранящиеся в памяти в формате ASCII. Вывод информации в виде выбора из 100-байтовой строки текущих выводимых 10 символов и вывод на табло - тривиальная задача, которую я даже не обсуждаю.
Под статикой я имел в виду то, что массив выводимых данных (100 символов) статичен. Он может быть изменен, но все равно для задачи текущего вывода массив, из которого выбираются данные для вывода - статичен.
Для куба 8х8х8 , если хранить в памяти все фазы анимации, потребуется значительный объем памяти, эффектов же много.
Поэтому я считаю, что информация у куба должна не статично храниться в памяти, а вычисляться на основании небольшой исходной информации.
Поэтому и советуюсь, интересно, как эту проблему решили те, кто уже собрал себе куб.

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Чт фев 02, 2017 21:15:10

На сколько я понял вы хотите 10 килограммами поднять 100кг. Можно,но нужен рычаг по другому нужен интеллект который и будит той исходной информацией,только он тоже требует место в памяти и не малой. Вот наверно как-то так.

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Сб фев 25, 2017 22:21:02

На RGB никто не собирал кубик 5х5х5 или 4х4х4??? Не могу найти проэктов!!! :( :(

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Вс фев 26, 2017 10:00:55

PicNik писал(а):На сколько я понял вы хотите 10 килограммами поднять 100кг. Можно,но нужен рычаг по другому нужен интеллект

Интеллект безусловно нужен - тот, который в голове у разработчика.
вот сейчас у меня написаны подпрограммы для кольцевого сдвига картинок, находящихся на гранях куба (прикладываю картинку, чтоб показать, как осуществляется сдвиг). Двигаются только картинки на гранях, состояние светодиодов внутри куба при сдвиге не меняется.
Подпрограммы в сумме занимают чуть менее 900 байт. Сколько фаз анимации потребуется для реализации эффекта путем непосредственного вывода картинок? 7 фаз, если картинка на всех гранях одинаковая и 28 фаз, если картинки разные. Сколько памяти это займет? Грубо - порядка 220 байт. Причем это при условии, что запрограммирован изощренный сдвиг, не затрагивающий внутреннюю часть куба. Если же запрограммировано "по-простому", обновлением всей информации, тогда 28 фаз займут 64*28=1792 байта - это уже почти вдвое больше моих подпрограмм. Так это на один эффект! А если есть несколько эффектов со сдвигом?
Подпрограммы же можно использовать с любым набором данных. Более того, мои подпрограммы так написаны, что позволяют вызывать отдельные модули, делающие сдвиг не всей грани, а одного слоя. Соответственно, легко реализуется эффект, когда слои движутся с разной скоростью и в разных направлениях. Все это в итоге должно помочь сэкономить много памяти, отдав её под собственно эффекты, которые, на мой взгляд, должны быть представлены в виде ограниченного занесения данных и (в основном) в виде вызовов подпрограмм, реализующих эффекты.

us7ipw писал(а):На RGB никто не собирал кубик 5х5х5 или 4х4х4??? Не могу найти проэктов

А какая разница с точки зрения схемотехники? Поставьте регистров втрое больше, вот вам и RGB. Главный вопрос опять же в том, как хранить эффекты.
Вложения
Rotate.JPG
(21.23 KiB) Скачиваний: 348

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Пт май 17, 2019 20:20:27

Ну что, делюсь результатами.
Вот файл, описывающий разработанную мной систему команд:
https://yadi.sk/i/CxZKc5U9fNNysQ

А вот то, что получилось:
https://www.youtube.com/watch?v=cTlecC4V89w
В основе - контроллер ATmega324
Весь блок подпрограмм эффектов, с динамической индикацией и реализацией "ночника" (заполнения псевдослучайными числами) занимает порядка 7300 байт. Показанные на видео эффекты описаны в отдельном блоке данных, размещенном в памяти программ, длина блока данных - 6300 байт. Текущий выполняемый эффект копируется в ОЗУ и выполняется оттуда.
То есть, места в памяти еще полно. Кроме этого, на плате установлена и 1-мегабитная микросхема EEPROM. не уместившиеся в память программ эффекты можно там хранить. Какая разница, где коды эффекта лежат, если для выполнения все равно в ОЗУ скопировать надо? А в ОЗУ что из памяти программ копировать, что из внешнего EEPROM - никакой разницы. Сейчас пока хранение в EEPROM еще не реализовано, потому что необходимости нет.
Проблема с эффектами в том, что рисовать их вручную приходится, имея перед собой бланк-распечатку "видеопамяти" куба и для визуализации отмечать там включенные светодиоды закраской соответствующего бита в байте, а это муторно очень и долго. Если б была программа на компьютере, где можно было б "рисовать" эффекты, а программа бы потом переводила это в коды разработанной мной системы команд с выдачей дампа - дело другое. Но я "под компьютер" в последний раз программировал еще в универе... 20 лет назад... да и времени на это нет.

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Вс июн 02, 2019 18:29:33

Вот так выглядит центральная плата куба сверху
Изображение
снизу
Изображение
и платы куба в сборе
Изображение
Блок питания AC 220-DC 5 с алиэкспресс

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Вс июн 09, 2019 18:33:33

Собирал, как то я куб да так и не собрал. Два года пролежал в ящике. А тут вот решил освоить С++ и кубик сгодился. Написалась прошивочка, нарисовалась схема. Кубик получился очень дешевым Attiny13 и 4шт 74HC595 125 светодиодов и рассыпухи немножко. Все еще пока на макете, эффектов не много, да и код можно более интересный написать тем более осталось 2 I/O и RESET. Можно кнопочку приладить в общем есть чем поиграться. Кому интересно схемку и проект в AtmelStudio6 могу выложить. Собственно схема и видео
Вложения
ATtiny13 HC595.png
(129.27 KiB) Скачиваний: 437

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Вс июн 09, 2019 18:46:30

эффектов не много, да и код можно более интересный написать

Как реализовали эффекты? Как делаете вывод на светодиоды?

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Вс июн 09, 2019 19:21:56

Реализация простая массив 32 битный. 25 диодов + 5 этажей итого 30 бит. Урезанный программный SPI т.е только на передачу.

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Пн июн 10, 2019 06:05:37

Реализация простая массив 32 битный.

Это одна фаза анимации? То есть, для того, чтобы реализовать эффект "бегущего этажа", вам нужно 5 раз вывести 32 бита? Мне просто поподробнее интересно.

В моем кубе я реализовал это так - для хранения информации о 512 светодиодах требуется 64 байта.
У меня организовано два буфера в памяти - условно "буфер индикации" и "буфер редактирования". Прерывание таймер-счетчика вызывается каждые 125 мкс, по нему организован автоматический вывод на светодиоды из буфера индикации. Время высвечивания одного слоя (этажа) - 1 мс, весь куб обновляется за 8 мс, но тут тонкость - сделана еще и возможность изменения яркости. Интервал высвечивания слоя (1 мс) разбит на 8 подинтервалов по 125 мс. Доступно 8 градаций яркости, соответственно, если задана половинная яркость, то слой высвечивается не 1 мс, а 0,5 мс, остальное время, оставшееся до окончания 1 мс слой погашен. Для каждого слоя можно задать свою яркость, значения яркости для каждого слоя хранятся в переменных и обрабатываются автоматически обработчиком прерывания по переполнению таймера.

В буфере редактирования рисуются непосредственно эффекты. Время каждой фазы эффекта может задаваться в интервале от 25 мс до 2 с. Содержимое из буфера редактирования по окончании текущей фазы эффекта перебрасывается в буфер индикации.

Re: Хочу собрать 3D LED cube 5х5х5. может кто его уже собира

Вт июн 11, 2019 13:00:16

Именно так. Массив располагается во FLASH оттуда и считывается. В программе нет никаких таймеров и прочего. Данные массива считываются макросом PROGMEM pgm_read_dword_near() и передаются в функцию SPI в которой имеется задержка между эффектами.
Далее думаю в массиве хранить только числовые значения этажей и диодов например 3-й диод это 0х11, а в какой нибудь функции уже прописывать те диоды которые и в каком порядке засветить дабы не раздувать массив, он и так имеет 60 значений. Вся писанина занимает около 42% FLASH памяти и 7% RAM. Далее думаю поставить кнопочку ну в общем код я буду еще долго мусолить как я писал выше это только начало осваивания увлекательного мира программирования на С++.
Ответить