Проекты
В этом разделе помещаются проекты сделанные мной в домашних условиях - в основном в качестве тренировки чему-то новому.
Профессиональные проекты смотрите в моем резюме внизу главной страницы.
PcmDump (Приложение для андроид)
Разрабатывая приложения для андроид, в которых используется нативный С код, разработчики сталкиваются с необходимостью верификации скомпиллированных*.so библиотек. Обычно я использую простоой исполняемый файл, который читает входной "in.pcm" файл, вызывает библиотеку для его обработки и записывает результат в выходной файл "out.pcm" (в случае аудиообработки). Но что делать, если у вас под рукой нет телефона, работающего под рутом?
Этот проект использует идею запуска библиотеки в "песочнице" андроидовского приложения. Запись и чтение выходных и выходных файлов осуществляется в специальный директорий "PcmDump_files", созданный приложением в корне sdcard. Их легко загрузить и считать оттуда командой "adb".
Разумеется вы можете использоваеть эту идею и в случае верификации библиотек для обработки изображений, видео и тд.
Жмите сюда для перехода на страницу проекта
SlidePyramid (Скользящая пирамида, версия для
андроид)
ver. 1.00 (2015.12.12)
Поигравшись со SlideCube и
найдя способ его решения для произвольного размера (головоломка
оказалась проще, по сравнению с кубиком Рубика), я задался вопросом - а
как обстоят дела на телах другой формы?
Ради интереса решил сделать такую же головоломку для пирамидальной формы. В результате получилась SlidePyramid. Способ управления такой же как и в SlideCube - сначала касаетесь выбранного треугольника, затем того места, куда Вы хотите его передвинуть. Также можно вращать всю пирамиду, анализируя текущую ситуацию в целом.
Вот здесь первый секрет всех и поджидает. Интуитивно кажется (особенно после опыта с пирамидой Рубика), что скольжение треугольников будет проходить по тому же принципу - параллельно граням. А вот и нет! При завороте полоски треугольников на другую грань обнаруживается, что заворот происходит в несколько другом направлении.
При написании игры не поленился - склеил пирамидку из бумаги (благо на компьютере можно нарисовать развертку, потом распечатать ее на принтере - 5-минутное дело), взял бумажную полоску, попытался обернуть вокруг пирамиды и обнаружил, что оборачивается она параллельно одному из ребер! Вот это открытие! Абсолютно непохоже на пирамиду Рубика! Стало интересно побыстрее завершить, чтоб самому попробовать, какой же алгоритм сборки применим в этом случае? Начав играть, обнаружил, что поначалу в голове не укладывается способ передвижения треугольников, отличный от привычного. Что заинтересовало еще больше!
На данный момент я нашел алгоритм сборки для пирамиды с ребром 2. Так что пока общий алгоритм неизвестен.
Цель игры такая же - собрать квадратики одного цвета на каждой грани. Начать игру можно выбрав пункт меню "Новая игра". Вы можете изменить сложность при помощи пункта меню "Размер куба". Скорость меняется в пункте меню "Настройки".
Я добавил в пункт "Настройки" стиль скольжения. "Классический" стиль плавно заворачивает треугольники на другую грань. "Трансформер" поворачивает целый треугольник на другую грань, что делает движение более впечатляющим (напоминает "Трансформеров") :-).
Скачать SlidePyramid можно
здесь.
Для тех, кто не хочет
думать - подсказки по сборке нет (потому как сам еще не знаю общего алгоритма).
Скачать SlideCube можно
здесь.
Для тех, кто не хочет
думать - подсказка по сборке здесь.
Этот проект был написан в качестве упражнения в
программировании ПЛИС.
К тому же простой, дешевый и компактный генератор был кстати на моей
тогдашней работе.
Генератор собран на ПЛИС EPM3064ALC44 фирмы Altera и выдает черно-белый
полный телевизионный сигнал (ПТС).
Все его временные параметры
(длительности строк, полукадров, синхро- и гасящих импульсов)
соответствуют стандарту,
действующему на территории бывшего Советского Союза. (Если точно помню,
стандарт системы B,G).
В набор генерируемых сигналов входят: градации яркости, сетка,
шахматное поле.
Режимы переключаются кнопкой "Mode". Изображение может инвертироваться
при помощи кнопки "Inv".
В архиве Вы найдете схему телевизионного генератора и программу на
верилоге.
Имейте в виду, что данная схема является эскизом. На ней не указаны
блокирующие емкости по питанию.
Нумерация выводов ПЛИС может не совпадать с той, какая получится у Вас
после компилляции проекта.
Вам также придется подобрать резисторы для суммирования сигналов B, G,
R и Sync.
К сожалению, я не помню их точных номиналов, а макета под рукой нет.
Тактовый генератор можете выбрать любой на 16МГц. Стабилизатор для ПЛИС
- тоже любой на 3.3В.
Документация к проекту (Схема, код на Верилоге, временные параметры)
|
|
|
|
|
|
|
|
Генератор цветного сигнала по системе PAL
Этот проект является логическим продолжением предыдущего.
Здесь я предпринял попытку сделать
генератор полного цветного телевизионного сигнала (ПЦТС) в таком же
корпусе ПЛИС. Для этого пришлось отдельно собрать
еще и генератор на 8.86МГц удвоенной частоты цветовой поднесущей.
К сожалению, здесь не все соответствует стандарту PAL
из-за ограниченности ресурсов. Нет привязки фазы цветовой поднесущей к
началу строки (из-за этого на проффессиональных
мониторах заметно, как изображение "бежит" по вертикали). Цветовой
сигнал дискретизирован всего на 16 уровней.
Идея формирования
цветового сигнала почерпнута из журнала Радио [1].
Опять же схема является только эскизом.
Вам придется подобрать резисторы для суммирования сигналов B, G, R и
Sync, а также резисторы ЦАП для получения цветового сигнала и
отрегулировать его размах.
К сожалению, я не помню их точных номиналов, а макета под рукой нет.
Тактовый генератор можете выбрать любой на 16МГц. Стабилизатор для ПЛИС
- тоже любой на 3.3В.
Файл "tvcolorbars.v" содержит исходный проект. В файле
"tvcolorbars_colorfields.v" я сделал попытку добавить
к цветным полосам режимы цветовых полей. Переключение между режимами
происходит по кнопке "Mode".
Документация к проекту (Схема, код на Верилоге)
|
|
Литература
[1]. Яблонский О. Кодер ПАЛ. Радио, 1992, N8, с.37-39
Links to Similar Projects: