Редактор эффектов для led cube - компьютерная программа (приложение)
- Войдите на сайт для отправки комментариев
Вс, 13/10/2019 - 16:56
Такая тема возникла у меня:
Сделал светодиодный куб, на котором можно рисовать с помощью мыши разную анимацию, сохранять на карту, воспроизводить. В общем без использования ПК совсем.
Собственно плод работы это (картинку смотрим) массив чисел - записываемых в файл после рисования анимации мышью. Теперь захотелось сделать симулятор-эмулятор куба на компьютере, что бы на выходе приложения-программы получать получать подобный массив при этом красиво шлёпая курсором нарисованные светодиодики куба.
Собственно вопрос: как проще это сделать? Каким доступным инструментом воспользоваться? (так что б сразу бах... и получилось - как "мит ап инвентор" для приложений смартфона :)
Вопрос видимо не корректно сформулировал :)
Чтобы приложение выдало массив в известном только пользователю формате, оно должно быть самим этим пользователем и быть написано...
Чтобы приложение выдало массив в известном только пользователю формате, оно должно быть самим этим пользователем и быть написано...
Это точно. Вероятность того, что какая-то сторонняя программа подойдёт к этому конкретному кубу, стремится к нулю.
А так, софт какой-то прилагается к наборам для сборки лед-кубов (Можно поискать в обзорах покупок в китае. Но всё это - чисто посмотреть, каких-нибудь идей набраться), на гитхабе по "led cube" много чего находит (тут хоть исходники, может что-то адаптировать можно). Но лучше писать самому, с блэкджеком и остальным! :)
Да, это всё так. Я спросил есть ли инструмент создания приложения для пк достаточно простой в освоении подобно "мит ап инвентору " для смартфонов? По сути приложение это множество виртуальных кнопок порядка 216 на экране - нажимаем и получаем число в массив.
Я не знаю, что такое "мит ап инвентор для смартфонов" оценить не могу. Но думаю даже в нём совсем без програмирования не получится, чтобы нажал кнопку и число в массиве! "Простой в освоении" тоже понятие субъективное. Например, иногда слышишь от некоторых "тру-программеров", что дельфи - это среда для программирования путём накидывания мышкой кнопок на форму! Как раз что Вы хотите :)
Но 216 кнопок на экране - это фуу, не интересно. Надо что-нибудь трёхмерное, вращающееся и светящееся! :)
Вот картинка рабочего экрана одной из программ для куба. Кнопки-светодиоды. Конечно хотелось бы трёхмерный куб создать, но тут хоть бы за что зацепиться.
А в инвенторе всего два экрана - на одном перетаскиваем из меню кнопки-сенсоры-таймеры, а на другом собираем пазлы-программу для них (главное что можно на русском всё делать).
А формат на выходе какой у этой программы (формат хранения рисунка)? Сомневаюсь, что векторный. Небось по типу bmp? Это намёк, если все же своё писать...
А формат на выходе какой у этой программы (формат хранения рисунка)? Сомневаюсь, что векторный. Небось по типу bmp? Это намёк, если все же своё писать...
Не понял вопроса. На данный момент куб 6*6*6 имеет кроме Ардуино модуль SD карты- на ней файл расширением txt. В нем массив чисел - номеров светодиодов куба которые надо включить в данном кадре эффекта (картинка в первом сообщении). Кадр это строка чисел завершающаяся числом 227, набор кадров-строк это эффект (завершается числом 255). Этот файл редактируется силами самой Ардуино при рисовании новых эффектов на самом кубе мышью. Теперь задача как сделать подобный файл txt на компьютере в приложении самолепном. Ясно, что зная соответствие номеров и светодиодам можно тупо забивать числа в строки, но это не интересно.
И я о том же. Упростим - разобьём куб на 6 квадратов 6х6. Рисуем для них, к примеру, интенсивность яркости (или можно заменить на разноцветность) послойно (проще типа пейнта для восприятия, или как в программе выше). Сохраняем в файл нужного формата. Профит.
Или надо для вас саму программу написать? Лет 10-15 может и написал бы за полчаса, а щас годы не те - уже не помню и лень. Во многих проф студиях программирования это возможно (где есть поддержка быстрой разработки 3д - для красочности взаимодействия с юзером, или 2д или самому накропать). Современные средства (мне кажется - QT подойдёт для красочности) так легко. Но я в QT все никак не соберусь силами разобраться.
Мне желательно подсказать какими средствами программирования легче замысел реализовать. Ведь в студию я вряд ли сходу войду :)
Ну хз, qtcreator как я сам поюзал - типа древенего drenweavera (если познаешь о чем я), то есть там достаточно быстро можно наваять визуал. А дальше ручками-ручками. Да и в принципе я сомневаюсь, что есть программы которые такое сделают по кнопке «сделать заебись!». Эх, с 2003 (вроде) года мечтаю о такой кнопке.
Если сам наваял формирование массивов, то это для тебя ещё полчаса времени займёт.
Скетч для куба с SD картой сам сделал с нуля, вряд ли за полчаса разберусь что есть qtcreator или drenweavera:)
В гугле забанили? Давно бы уже разобрался...
Простенький редактор получился на Hiasm. Но всё равно не удобно по слоям набирать. Нет ли похожих конструкторов русских с возможностью создания 3D интерфейса? Чтобы форма с элементами управления была не плоскостью, а объёмом с возможностью кругового обзора.
Наконец удалось найти топор под лавкой!!! Processing легко и просто создаёт виртуальный-нереальный светодиодный куб. И 3D интерфейс на нём можно делать.
Вот так выглядят стоп-кадры
Сделал синхронизацию реального и виртуального кубов.
красиво. Эта 3д эмуляция в процессинге такая?
А массивы для эффектов в скетче ардуино лучше в прогмем засунуть
Да, виртуальный куб, реализованный в процессинге. Реальный куб в данном случае как индикатор виртуального - синхронно повторяет за ним эффекты, передаваемые на ардуино. А так массивы на флешке, пробовал с прогмем тоже.
Да, виртуальный куб, реализованный в процессинге.
хотелось бы на код процессинга глянуть... не думал что он на такое способен
В 15 сообщении код ранней версии. Я сам о нём неделю как узнал, начал пробовать. Возможностей слишком много, не успеваю вникать :) На данный момент ... чего то код не вставляется ...? и картинки...? сделал приложение с виртуальными кнопками вместо клавиш, добавил ритм эффектов под музыку.
А ещё можно покадрово снимать и делать гиф-картинки.
leks - молодец, добивает тему.
А для чего используется аппинвентор ?
В данном варианте куба он не используется, а вообще для написания приложений под смартфон. Часто смартфон выступает в роли красивенького дистанционного пульта управления ардуино через блютуз модуль, типа такого.
Ну да, на нем кое что можно сделать быстро. Спасибо Дмитрию Осипову за открытие его мне лет 5 назад.
https://www.youtube.com/user/d36073/search?query=app
Ну да, на нем кое что можно сделать быстро. Спасибо Дмитрию Осипову за открытие его мне лет 5 назад.
https://www.youtube.com/user/d36073/search?query=app
https://geckoanton.github.io/quadrum/index.html
Наконец-таки, нашёл симулятор куба! Автор сделал шаг во всём кубостроении. Ему удалось создать симулятор-генератор кода для любых типов кубов, с любым числом пикселей в грани, реализовав "живое" и в "записи" воспроизведение. Я :-) проверил на своём кубе 555 из умных светодиодов. Может кто знает - есть ли другие схемные решения кубов кроме сдвиговых регистров, max 7219 и умных пикселей?
ПС
Хорошо бы автору ещё добавить возможность создания серии эффектов в одном скетче. Из минусов ещё то, что надо писать самому скетч-адаптер под свой кубик, но это "издержки" авторского концепта.
Вот пример синхронного воспроизведения на куб.
Вангую, что далее будет объемный градусник, кошачий глаз в 3D и радар.
:-)
Нет, не будет. Просто ещё не придумали 3D экранчики, а в светодиодных один слой визуально экранирует другой - нужны хотя бы полупрозрачные светодиоды и провода.
Подниму тему, не знаю почему захотелось задумку автора довести до "маломальской" удобоваримости пользователями :-)
Суть проблемы : библиотеки автора рассчитаны на исполнение 1 эффекта вместо "скока хошь"
Пробую это исправить.
Вот так работает. При попытке перенести массивы в PROGMEM уже нет. Понимаю, что проблема в 25,26 строках.
Функции на которые грешу в файле cpp. имеет вид:
Можно это исправить?
А вот так уже нет. Ошибок тоже не выдаёт.
Надо библиотеку править так, чтобы для PROGMEM-массивов она читала их через pgm_read_byte(). Возможно, что придётся её очень сильно дописывать.
Скорее да, потому как в такой редакции придётся для переключений эффектов жать RESET.
Потому что строки 36, 37 тоже весьма своеобразные для использования. Проще говоря, переменная fl должна быть определена однозначно в "сетап".
Скетч-то можно и иначе написать. А вот если в библиотеке что-то в массивах изменяется, то тут все - приплыли. В противном случае - под прогмем перелицевать можно.
Не, как я не пробовал перестановки функций работает только так. Ощущение, что библиотека как пример написана. При том, что сама идея блестящая - создать ПО которое не зависит никак от конкретного железа и в то же время делает это железо законченной конструкцией для пользователя. Правда всё равно нужен каждому пользователю скетч-переходник под свой конкретный вариант куба, но он логически простой в написании.
Вот собственно весь файл - насчитал 5 мест где надо менять считывание элемента массива.
Вообще, надо наверное, попробовать связаться с автором, а то нехорошо получается :-)
Вроде только чтение происходит.
Если быстро кромсать по живому, то стоит добавить в класс флажок ram/progmem, написать функцию чтения из массива байта по индексу, в которой уже по флажку юзать pgm_read_byre или [].
Это стратегия, мне бы тактику преодолеть.
Понимаю что такое (поэлементно) (uint8_t) animationData[3] меняем на (uint8_t) pgm_read_byte(&animationData[3])
А это как? this->animationData = (int8_t*) animationData;
или вот: voxelData = &animationData[i]; это примерно так?: voxelData = &pgm_read_byte(&animationData[i]);
Ссылка на библиотеку есть? Скинь на wrk.sadman@gmail.com
Спасибо большое за добровольно-безвозмездную помощь Вам. Так конечно я не напишу никогда. Всё работает. Автору написал письмо про желаемую модернизацию, жду ответа :-)
inline uint8_t QuadrumCode::getByte(const uint8_t* _array, const size_t _idx) { return storeIsProgmem ? pgm_read_byte(_array + _idx) : *( _array + _idx); }
Эту хреновину с вызовом лупа из класса необходимо переделывать серьёзно. В противном случае пользоваться ей, конечно, крайне затруднительно.
А я ещё подумал: странно, в других библиотеках такого не видел. Пользоваться, для выбора из многих эффектов в скетче, думаю потенциометром и проводком на ресет. Ну, а может автор всё поправит и мне сообщит :-)
И снова СПАСИБО!, за бескорыстный вклад в дело кубостроения!
Базовый пример заработал.
Ещё улучшенный вариант :-)
Для куба 6*6*6 на 6 мах7219 чисто из любопытства.
Не лень же паять было.
Без видео непонятен масштаб, к слову.
Да я уже давно паял их. Сейчас купил бы готовый, но у китайцев только "своими ручками наборы". Видео плохо передаёт реальное восприятие эффекта, надо ловить сумерки.