Адресная лента WS2812b, Бегущая строка, Управление шрифтами.

Адресная лента WS2812b, Бегущая строка, Управление шрифтами.

Вы узнаете как на матрице из адресная лента ws2812b сделать бегущую строку и выводить текст разными шрифтами. Светодиодная лента ws2812b из которой собрана матрица 32х8 этоправильное решение для недорогой и очень красивой бегущей строки и других красивых эффектов.

Недавно мне в комментариях написали, что хотели бы видеть на канале, пример как сделать бегущую строку на светодиодной ленте. А мне как раз пришла посылка с матрицей 32х8. Так что я с удовольствием исполняю просьбу подписчика.
По мимо этого в этом видео будет рассказано как можно менять шрифт для вывода на ленту используя встроенные шрифты в библиотеку Adafruit GFX, а так же создавать свои шрифты и загружать их в свой проект.
Правда это не работает с русскими шрифтами, но научиться всё равно надо, так как вы сможете сами нарисовать свои буквы или скачать библиотеки с готовыми шрифтами. Я их тоже находил в интернете, но все они работают если ширина ленты от 12 пикселей, а вот на 8 мне найти не удалось. А может быть плохо искал.
Если будут пожелания, то я сделаю 2 часть конкретно про шрифты, но мне кажется что и одного шрифта вполне достаточно.
Быстро рассмотрим скетч и перейдём к примерам. Для работы надо установить библиотеки. Так как я показываю на примере светодиодной матрицы, то мне и надо скачать библиотеку для матрицы. 
Набираем матрих и нам выбираем библиотеку NeoMatrix. В подсказках вам будет сказано, что для работы вам надо установить ещё библиотеку GFX и НеоПиксель. Вторая нам необязательна, но все равно установим. Она будет нужна для работы со светодиодной лентой. 
Нажимаем установить и ждём когда установится. Но не всё так просто. Если всё так и оставить, то у вас не будет отображаться русский шрифт, а только англоязычный. Для вывода нашего могучего надо заменить файл glcdfont.c или проще установить библиотеки из моего архива.
Теперь скетч. 
Это подключение двух библиотек которые необходимы для работы.
Чтобы не рыскать по коду я создал переменную текст и сохранил в ней текст для вывода. Количество букв может быть и больше. Какое максимальное значение я не проверял. Если будут энтузиасты, то напишите в комментариях сколько букв вам удалось вывести.
Светодиодную Матрицу я подключил к выходу 9 Ардуино. Не забываем, что подключать надо через токоограничивающий резистор примерно 300 - 500 Ом. Впрочем как и любой светодиод.
Здесь основные настройки матрицы. 
Сначала указываем ширину и высоту матрицы. У меня это 32 x 8.
Дальше указываем где первый светодиод, то есть откуда начинать отсчёт.
Затем указываем что матрица сделана столбцами и подключена зигзагом. В предыдущих видео я рассказывал что это  такое.
Указываем расположение цветов на ленте. GRB. Это именно так. Сначала идёт Зелёный, затем Красный, и последний Синий, а не как мы привыкли RGB.
Ну и наконец скорость передачи данных 800 кГц.
Теперь создаём массив цветов которым будет выводиться цвет. Он может быть любым и цвета могут быть любыми. Дальше в видео я всё это буду объяснять более подробно. Здесь я вывел красный, зелёный и синий, для простоты кода.

Setup программы очень простой.

  • Подключаем матрицу.
  • Указываем, что текст будет выводиться в одну строчку, без переноса на другую.
  • Яркость я указал 10 из 100 процентов. Так как при записи большее значение будет засвечивать камеру.
  • И указал, что первым цветом будет первое значение из массива цветов, то есть красный.
  • Присваиваем переменной икс значение ширины матрицы, то есть 32 и создаём переменную для счётчика.
  • Заливку матрицы устанавливаем в ноль. Курсор устанавливаем в нулевую позицию.
  • Чтобы русский текст выводился правильно, а не зюками, пропускаем его через функцию руссификатор, и начинаем выводить по одному символу справа на лево, уменьшая счётчик. После того как весь текст будет показан, меняем значение массива цветов на следующий и снова выводим текст, но уже другим цветом.
  • Функция SHOW  отвечает за работу скетча. Если её закомментировать, то у вас ничего в матрицу выводиться не буде. Это можно использовать для вывода текста по времени. Например если время 8 часов то вывести текст Открыто или Добро пожаловать, а если 21 час, то закрыто или приходите завтра.
  • Delay отвечает за скорость прокрутки текста.

Функция руссификатор переводит буквы в киррилицу.
Начнём с подключения ленты. Схему подключения я покажу дальше, а пока объясню код.
У вас может быть разное подключение, то есть начало ленты может быть в разных местах. У меня сейчас начало справа снизу, поэтому я и указываю так в скетч. Если у вас с другой стороны то вам надо поменять эти строчки. Сейчас я переверну ленту и у меня начало будет слева сверху. И как видите текст выводится к верх ногами.  Изменим код, и как видите теперь всё показывается правильно.
Это мы экспериментировали со статичным текстом. Теперь давайте его оживим.

Всё оживление – это вот этот цикл который выводит посимвольно наш текст и передвигает его на одну позицию влево. Зная размер матрицы, а мы её знаем это сделать не сложно.
Теперь изменим текст на более длинный. Ещё вам надо увеличить это значения, если этого не сделать, то не все символы могут быть показаны или если текст маленький а значение большое, то между повторами будет большой интервал и на матрице между просмотрами будет пустой экран.

В скетче который будет для скачивания я создал переменную для хранения текста  и вынес её наверх кода для лучшего и более простого изменения.
Теперь поиграемся со шрифтами. Напоминаю, что мы можем это делать только с текстами на латинице.
Вот список доступных шрифтов который находится в папке FONTS, который стал доступен после установки библиотеки Adafruit GFX. Он находится в папке с библиотекой, в папке FONTS.
Как можно видеть, все шрифты сделаны для вывода на 9, 12, 18 и 24 пикселя. Так что если вы делаете для матрицы 16 на 32 или больше, то спокойно можете использовать любой из этих шрифтов.

Давайте попробуем подключить первый шрифт из списка. Изменим текст на английский и уменьшим значение вывода.
Для начала надо подключить нужный шрифт. Это делается командой include в которой прописывается путь и название шрифта. У нас это папка FONTS  и шрифт TOM THUMBS.
Дальше мы должны подключить этот шрифт указав на него ссылкой.
Прошиваем и смотрим. Иногда вы можете ничего не увидеть на экране. Это потому, что ваш текст будет находиться за пределами вашей матрицы. Что бы это исправить надо установить курсор в другую позицию.

Ну вот. Теперь мы видим, что шрифт изменился. Выглядит конечно он не очень хорошо, ну это и понятно, ведь эти шрифты сделаны не для светодиодов а для OLED или TFT дисплеев. Там они смотрятся просто отлично.

Давайте посмотрим как обстоят дела с другим шрифтом. Всё так же берём его из папки FONTS. Подключаем его и смотрим.
Этот выглядит ещё хуже, но нам важен сам процесс. Нам надо научиться менять шрифты, и на какие будем разбираться позже. Возможно вы сами сделаете свой шрифт и подключите его.
Для закрепления темы подключим ещё один шрифт, может повезёт и мы найдём шрифт посимпатичнее. Как подключать я уже рассказывать не буду, просто сделаем и посмотрим.
Вот этот вроде ничего себе так. На нём и остановимся. Теперь я надеюсь, что вопросов как подключать шрифты из библиотеки быть не должно. Но есть ещё шрифты созданные другими пользователями. Есть программы для создания шрифтов. Если будут желающие, то я сниму продолжение этого видео.
Например есть вот такая программа для создания кода из уже имеющихся шрифтов. Как выглядит шрифт можно посмотреть на экранчике. Повторюсь что здесь так же будет не доступен русский шрифт, но если вам подходит латиница. Например вы хотите написать WELCOME то это как раз для вас. В этой программе нет ничего сложного. После создания вы копируете код и сохраняете его с расширение h.  И подключаете как мы это уже делали. Если что не понятно спрашивайте в комментариях. Постараюсь ответить на все вопросы. Правда сами понимаете, вас много, а я один. Так, что не обижайтесь если ответ  затянится по времени или его не будет. Я делаю всё возможное.

Вот так выглядит шрифт из программы.
Ну и последним в этом видео рассмотрим как изменять цвета светодиодов а матрице. Чтобы не запоминать  значения к разным цветовым палитрам можно использовать онлайн программы. Это одна из них. Здесь можно выбрать нужный цвет, скопировать значения и вставить в свой код. И ваш текст окрасится в нужный вам оттенок.

Ну вот я по возможности полно рассказал как можно вывести на матрицу бегущую строку по русски и на английском языке. Разобрали скетч вывода  текста, анимированного и статичного. Как использовать встроенные в библиотеку шрифты. Мы немного коснулись программы для вывода других шрифтов, которые не входят в библиотеку. И многое другое. Теперь вы всё это можете сделать сами. Надеюсь что этот урок был полезен для вас. А впереди вас ждёт ещё много интересных и полезных видео. Так, что с вас лайк и если вы ещё не подписаны, то подписка. И до скорой встречи.