Реализовать эффект для RGB светодиодного табло

3 500 руб. за проект
06 апреля 2022, 12:18 • 2 отклика • 42 просмотра
Для домашней поделки на основе ESP32 и ESP-IDF (не суть важно) из имеющихся функций на языке программирвоания Си надо реализовать эффект внутренней прокрутки текста (влево <-> вправо) из программы Jinx! для LED табло 5х5 пикселей.

Желательно без использования промежуточного буфера.
Большим плюсом будет, если алгоритм получится масштабируемым, вплоть для шрифта на 8х8 пикселей.

Что имеется:
1) Есть шрифт 5х5 точек (ширина 5 бит, самый левый бит MSB), который хранится в виде строк двумерного массива;
2) Работающие функции для вывода символов на светодиодное табло (вывод символа на табло, кривой сдвиг влево \ вправо);
3) Близкий по принципу алгоритм для терминала, запускаемый в онлайн-компиляторе, типа Ideone (для демонстрации того, что надо сделать);

Например, символ нуля может выглядеть так:
static const unsigned char _FONT_TABLE[1][5] =
{
{ 0xF8, 0x18, 0x18, 0x18, 0xF8 },
};

Примерный алгоритм:
1) получили текстовую строку для вывода;
2) нашли первый символ в массиве шрифта и вывели его на табло без сдвига;
3) начинаем сдвигать точки первого и последующих символов влево;
3.1) между символами необходим промежуток в 1 пикселя;
3.2) символ пробела сократить до 2 пикселей;
4) сдвигаем точки символов влево, пока последний символ не будет отрисован полностью;
5) начинаем сдвигать последний выведенный символ и следующие до него вправо с соблюдением п. 3.1 и 3.2 до полного появления первого символа строки;
5.1) перейти к п. 3.

Проблема вот в чём: произвели сдвиг первого символа на 2 столбца влево -> тут же надо вставить промежуток в 1 пиксель -> и подвязать первый столбец второго символа. И так далее.

Могу предоставить удалённый доступ, например, через TeamViewer и веб-камеру над железом.
Файлы
Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Заказчик
Всё выполнено в срок и в надлежащем виде. Были некоторые мелкие проблемы, которые решились по ходу передачи проекта.
~ 2 года назад
R50 1f0e635ab649b2ae967434f99b52cad5
Фрилансер
 
~ 2 года назад