Всем привет! В данной статье о LED матрице 16 на 16 адресных светодиодов мы создадим свой собственный шрифт, взяв за основу один из стандартных шрифтов Windows, и будем выводить на матрицу русскоязычный текст, в том числе в виде бегущей строки.
Открываем программу Lcd image converter. О программе и основах работы с ней я рассказывал в прошлой статье. На стартовой странице нажимаем Новый шрифт.
В списке Семейство представлены все установленные в системе шрифты. Например, выбираем стандартный шрифт Arial. Ниже можно выбрать Стиль шрифта и Размер. Главное, чтобы размер по ширине и высоте не превышал размер нашей матрицы, т.е. 16 пикселей.
Нажав на кнопку Символы, находим в данном списке Cyrillic, с помощью Ctrl выделяем строки с русскими буквами и нажимаем кнопку Добавить выбранные. В верхней правой строке добавятся русские буквы. После этого можно нажимать OK.
Чтобы получить универсальный шрифт, который будет подходить для матриц 8x8 светодиодов, а так же большинства LCD дисплеев, изменим размер шрифта до 9-го. Таким образом, высота большинства символов будет равна 7 и на матрице 16x16 мы сможем разместить текст в 2 строки. В начале, выделим все цифры и нажмем Шрифт -> В изображение. Получаем заготовку со всеми цифрами.
Отмечаем, что каждая цифра имеет высоту 7 пикселей, а ширину 4 пикселя. Уменьшим размер изображения, нажав Изображение -> Изменение размера. Отсечем 2 пикселя сверху и снизу. И подкорректируем немного цифры: 0,2,4,5,6 и 9.
Далее инвертируем изображение, так как фоновый цвет у нас должен быть черным, а цвет шрифта белым. После этого нажимаем Преобразование, затем идем во вкладку Изображение, как и прежде выбираем 24бита, а вот основное сканирование выбираем слева направо.
Получаем код и вставляем его в таблицу Open Office. Работа с данными в виде таблицы с использованием встроенных инструментов Open Office и Excel значительно упрощает обработку больших массивов данных. Удаляем каждую пятую строчку кода. Она не несет полезной информации и служит только для отделения символов друг от друга. Шестнадцатиричное представление чисел заменяем на двоичное. «0x000000», заменяем на «0», а «0xffffff,» заменяем на «1». Удаляем лишние пробелы и получаем запись каждого столбца изображения в двоичной системе исчисления. Далее с помощью функции BIN2HEX() превращаем двоичный код в шестнадцатиричный. Добавляем столбец 0x и с помощью символа объединения &, получаем шестнадцатиричный код каждого числа. Вообще конечно можно было бы оставить и в двоичном представлении, но так компактнее. Превращаем всё в строку и переносим в наш скетч в заранее подготовленный массив для цифр.
Таким образом, каждая цифра у нас занимает всего 4 байта памяти. Если бы мы оставили в 24 битном формате, то каждая цифра занимала бы 128 байт.
С символами мы поступим ровно так же как с цифрами. А вот с буквами чуть сложнее. Размер букв очень сильно варьируется по ширине от 4-х (Б) до 9 пикселей (Ж). Примем ширину символа в 7 пикселей. Перерисуем некоторые буквы, чтобы они умещались в параметры 7х8.
Далее с буквами производим те же манипуляции что и с цифрами.
Полученный код букв, цифр и символов вставляем в заранее подготовленные элементы массива в нашем скетче.
Таким образом, мы создали свой собственный шрифт и разместили его в очень компактном виде во флеш-памяти. Ссылка на сам скетч с готовым шрифтом в конце статьи.
Для вывода статического текста на LED матрицу служит функция showText().
В аргументах функции showText() указываем: последовательность символов, положение левого верхнего угла выводимого текста и его цвет. Можно разместить 2 строки друг под другом. Размер текста позволяет.
Если к этой LED матрице подключить еще одну и увеличить в настройках ширину матрицы до 20, и, следовательно, общее количество светодиодов увеличить до 320, то завершающая часть цифры 4 отрисовывается на второй матрице, а так же рисуется буква Г. Таким образом, можно соединять последовательно несколько матриц. Или сразу взять матрицу большей ширины.
Для вывода текста в виде бегущей строки используем функцию runText(). В ней задаем: текстовую строку для воспроизведения, смещение по вертикали, цвет текста и скорость воспроизведения.
Ссылка на программу Lcd image converter - https://sourceforge.net/projects/lcd-image-converter/
Ссылка на скетч - https://yadi.sk/d/WRJaIJphGDl-hw
Ниже размещено видео по материалам данной статьи.
_________________________________________________________
Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!