Как установить библиотеку fastled arduino

Библиотека FastLED Ардуино

Arduino FastLED эффекты, описание библиотеки

Библиотека для Arduino FastLED применяется для создания различных эффектов на адресной светодиодной ленте WS2812B. При разработке гирлянды на Ардуино использовалась именно эта библиотека, с помощью которой было сделано множество интересных эффектов. Чтобы разобраться в коде, необходимо отдельно рассмотреть описание библиотеки FastLED.h на русском с примерами программ.

Arduino FastLED описание библиотеки

Скачать библиотеку можно на нашем сайте, на странице — Библиотеки для Ардуино, также ссылку для скачивания Фастлед мы разместили в конце этой записи. В архиве, как и в прочих популярных библиотеках для управления лентой ws2812b Ардуино, имеется несколько примеров скетчей, с помощью которых можно самостоятельно разобраться, как правильно использовать команды библиотеки FastLED.

Ошибка ‘FastLED.h no such file or directory’

Первое, с чем сталкивается каждый начинающий программист и долго не может понять в чем причина — это ошибки компиляции Ардуино при загрузке скетча. Ошибка FastLED.h no such file or directory означает, что на компьютере не установлена библиотека FastLED.h. Проблему достаточно просто устранить, установив FastLED. Это правило действует и при возникновении такой ошибки с другими библиотеками.

Описание команд библиотеки FastLED на русском

Далее пошагово разберем способ работы с библиотекой FastLED. Первым делом необходимо подключить библиотеку в скетче через команду #include . Затем следует задать константы ( #define ) для удобства программирования — количество пикселей и пин для подключения адресной ленты. В примерах можно встретить вариант, что тип адресной ленты и ее цветовой режим тоже задаются с помощью констант.

Кроме основных настроек в процедуре void setup() еще указывается яркость для светодиодов с помощью команды FastLED.setBrightness() — максимальное значение 255. Яркость можно поменять в любом месте программы, в том числе и в процедуре void loop(). В основном цикле будем включать последовательно пиксели разными цветами, которые задаются с помощью RGB палитры (объединим код для платы).

После загрузки прошивки вы можете поменять цвета пикселей на ленте. Как вы уже поняли из примера, цвета можно задавать двумя способами. А далее мы рассмотрим более сложные эффекты с библиотекой фастлед, которые в основе используют цикл for для быстрой отправки информации на ws2812b. Кроме предложенных вариантов, попробуйте загрузить в Ардуино скетчи из примеров для данной библиотеки.

Arduino и адресная светодиодная лента

Адресная светодиодная лента, в отличие от обычной RGB, позволяет управлять цветом и яркостью каждого своего светодиода. Благодаря этому на ней можно отображать различные интересные эффекты, как статические, так и динамические. Сама по себе лента ничего не может, поэтому генерацией эффектов занимается микроконтроллер (или плата на его основе, например Arduino). Более подробно про виды адресных лент можно прочитать в моей статье.

В наборе GyverKIT есть 1 метр адресной светодиодной ленты WS2812b. При желании ленту можно докупить в том же магазине, где продаётся набор – Giant4.

Подключение

  • GND ленты соединяется с GND микроконтроллера, так как все сигналы ходят относительно “земли”
  • У любого отрезка ленты есть вход, а есть выход: у входа средний пин называется DI, а у выхода – DO. К Arduino подключается именно вход ленты, то есть пин DI
  • При работе с Wemos в программе нужно указывать номер GPIO, а не цифру с платы. См. распиновку

В рассмотренных выше схемах Arduino питается от USB. Для работы от адаптера можно подключить питание с него на пин 5V платы:

При наличии на ленте штекера можно подключать управление и питание следующим образом:

Примечание:

  • Ленту можно питать напрямую от Arduino (при подключении к USB), если ток потребления не будет превышать 500 мА. В библиотеке FastLED можно настроить программное ограничение тока: FastLED.setMaxPowerInVoltsAndMilliamps(5, 500); – 5V 500mA
  • Ленту можно подключать без резистора, если исключена возможность наличия сигнала на ленту без подключенного питания, т.е. когда лента питается от одного источника с микроконтроллером

При работе с Wemos есть особенность: у него логический уровень 3.3V, чего не всегда хватает для передачи сигнала на ленту. При возникновении “артефактов” в эффектах можно подключить питание по следующей схеме: питать Wemos через диод (есть в наборе GyverKIT):

Библиотеки

Самой функциональной и известной библиотекой является FastLED, можно установить через диспетчер библиотек по названию FastLED. В библиотеке ОЧЕНЬ много возможностей, см. официальную вики-документацию, а также полный список модулей, классов и функций.

Как работать с FastLED

Коротко рассмотрим как работать с библиотекой FastLED и самые основные инструменты.

Логика работы с адресной лентой сводится к следующему: лента представляется в виде одномерного массива, каждый элемент – светодиод, точнее его цвет. Цвет светодиода кодируется тремя байтами, то есть 256 значений на каждый канал: красный, зелёный, синий. В программе можно производить различные манипуляции с этим массивом, то есть задавать цвета светодиодам при помощи различных инструментов библиотеки. Как только построение “кадра” закончено – массив можно отправить на ленту и светодиоды включатся соответственно заданным цветам.

Для начала обозначим константами длину ленты и пин, к которому она подключена, просто чтобы проще было редактировать программу в дальнейшем:

Создаём массив цветов, он имеет тип данных CRGB . Размер – сколько светодиодов в ленте, то есть наша константа. Пусть массив будет глобальным, чтобы доступ к нему был у всей программы:

В блоке setup нам нужно передать в библиотеку информацию о подключенной ленте, а также подключить созданный выше массив. Чтобы программа знала, откуда брать информацию о цветах. По порядку указывается тип ленты, пин, порядок цветов. В круглых скобках – имя нашего массива, а также его размер – длину ленты:

Отлично! Всё настроено и готово к работе.

Общие функции

Помимо задания цветов в массиве, существуют следующие управляющие функции:

  • FastLED.show() – выводит массив на ленту, т.е. обновляет её текущими цветами
  • FastLED.clear() – очищает ленту, буквально обнуляет все цвета в массиве, задаёт “чёрный” цвет. Для применения нужно вызвать show()
  • FastLED.setBrightness(0-255) – устанавливает яркость всей ленты. Не меняет значения в массиве светодиодов, просто “приглушает” итоговую отображаемую яркость
  • FastLED.setMaxPowerInVoltsAndMilliamps(вольты, миллиамперы) – включает автоматическое ограничение яркости по настроенному току и напряжению. Полезно для длинных лент и/или слабых блоков питания
  • FastLED.showColor(CRGB цвет) – залить всю ленту указанным цветом

Тип данных CRGB

Библиотека организована так, что переменной типа CRGB можно задать значение несколькими способами. Рассмотрим задание цвета первому светодиоду в нашей ленте, то есть элемент массива под номером ноль: leds[0]

Подробнее про цветовые модели RGB и HSV можно почитать вот здесь.

Примеры

Итак, с базовыми понятиями разобрались, переходим к практике. Для начала зальём всю ленту статичной радугой. Для этого покрасим светодиоды в цикле, задав цвет от 0 до 255 от первого до последнего светодиода в ленте. Конструкция i * 255 / LED_NUM позволяет получить значения от 0 до 255 при изменении i от 0 до LED_NUM:

Можно сделать подвижную радугу, это будет уже полноценная анимация. Для этого ленту нужно постоянно обновлять новыми цветами, например 30 раз в секунду. Чтобы плавно менять цвет – добавим к нему счётчик, который будет меняться от 0 до 255 и так по кругу.

Можно сделать один бегающий светодиод: каждый раз очищать ленту и красить светодиод под номером, который задаётся счётчиком. Изменение счётчика закольцевать от 0 до количества светодиодов:

И таких эффектов можно придумать очень много! Займёмся этим уже в блоке проектов

Ардуино ws2812 Светодиодная матрица 16 16 Бегущая строка

В этом видео мы продолжим знакомство с матрицей 16 на 16 собранной на светодиодах WS 2812.
Скоро наступит Новый год и все сейчас думают о гирляндах. У меня уже есть несколько видео про гирлянды. Посмотреть можно здесь.
А сегодня мы будем изучать матрицу. Хотя что такое матрица из светодиодов – это та же гирлянда, только компактная.
Все скетчи, что мы рассмотрим можно запускать и на гирлянде, надо только установить нужное количество светодиодов и их расположение по горизонтали и вертикали. Всего их 256 и мы можем управлять каждым из них по отдельности.
Размеры такой матрицы 16 на 16 сантиметров, а соединив их последовательно можно собирать из них длинные ленты на которых можно делать бегущие строки или большие экраны и показывать на них рекламу.

Я уже показывал как вывести на такой матрице свои рисунки и как сделать часы и выводить время.
Сегодня рассмотрим 3 скетча.

  • Первый – это просто красиво меняющиеся линии.
  • Второй – плавно сменяющиеся и расплывающиеся пятна.
  • Третий – это бегущая строка из текста.

Из матрицы выходит 8 проводов.
6 из них это питание, а два — это вход DIN и выход DOUT.
Светодиоды потребляют большой ток.
В режиме белого цвета он доходит до 60 миллиампер, и поэтому напряжение подаётся в разных точках, чтобы не было просадок и большой ток не пережёг токопроводящие контакты.

Для питания матрицы нельзя использовать контакты +5 вольт с Ардуино.
Нужен отдельный блок питания.

Вход DIN подключим к выводу 6 Ардуино, а Выход DOUT никуда подключать не будем, так как у нас всего одна матрица.
Если у вас их несколько, то вы должны подключить его к DIN другой матрицы.

Для работы нам понадобятся несколько библиотек.

Узоры и переливы мы будем выводить с помощью библиотеки FastLED.h

А текст с использованием 3-х библиотек от компании Adafruit

  • Adafruit NeoPixel
  • Adafruit NeoMatrix
  • Adafruit-GFX
  • FastLED

После установки этих библиотек вы можете запустить примеры из этих библиотек.
Единственное что вам надо в них поменять это пин Ардуино к которому у вас подключена матрица.
По умолчанию там стоит шестой поэтому мы сразу его и подключим.
И количество светодиодов, в нашем случае 256.

Принцип работы матрицы я объяснял в предыдущем видео, так что можете посмотреть там.

Посмотрим схему подключения. Здесь ничего сложного. Минимум деталей. Главное, чтобы источник питания был достаточно мощный.

Теперь переходим к практике.
Для начала установим скетч Spots. Ссылка на скетчи будет как всегда в описании. Нам нужно установить библиотеку FASTLED.
Подробно как работает скетч я рассказывать не буду. Главное надо знать, что нам надо установить.

  1. Задать пин к которому подключена матрица. Это пин номер 6.
  2. Яркость
  3. Тип ленты
  4. И порядок цветов. В основном это GRB
  5. Затем количество светодиодов по горизонтали и вертикали.
  6. Здесь можно задать скорость и масштаб изменений. Если интересно, то попробуйте сами поизменять разные значения.

Теперь загрузим скетч Line
Так как здесь использована та же библиотека FASTLED, то и начальные значения здесь такие же как я только что описывал.

Ну и у нас ещё остался скетч с бегущей строкой.

Здесь нам понадобятся библиотеки Adafruit_NeoPixel и Adafruit_NeoMatrix.
Для вывода шрифта используется библиотеку Adafruit-GFX. И в ней для вывода русских букв нужно заменить файл glcdfont.c. Про русификацию можно посмотреть в видео.

У нас указан пин 6 для работы с матрицей.

В этой строке указаны настройки работы с матрицей.

Здесь я указал, что текст будет менять свой цвет. Сначала он будет Красный, потом Зелёный, Синий. Теперь будет смешан зелёный и синий. Ну и последний будет белый. Это когда будут полностью гореть все 3 светодиода. Это самый затратный режим работы.

  • Указываем яркость свечения текста.
  • Яркость фона.
  • Расположение текста. Выше-ниже.
  • Сам текст.
  • Задаём ширину матрицы для вывода текста. Чем больше букв тем больше должно быть это число.
  • Количество цветов текста. Про это я говорил чуть выше. У меня установлено, что цвет текста изменится 5 раз.
  • Скорость движения текста. Чем число ниже, тем быстрее он будет двигаться.

Пишите было ли вам интересна эта тема и надо ли ещё продолжать снимать видео про матрицы. Пишите, что ещё хотели бы посмотреть.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *