Реализовать эффект для RGB светодиодного табло
3 500 руб. за проект
Для домашней поделки на основе 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 и веб-камеру над железом.
Желательно без использования промежуточного буфера.
Большим плюсом будет, если алгоритм получится масштабируемым, вплоть для шрифта на 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 и веб-камеру над железом.
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.