Светодиодная матрица ардуино, матрица 16x16

Светодиодная матрица ардуино, матрица 16х16

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

Вот так выглядит сама матрица 16х16.

матрица 16х16 ws2812b

Поговорим что же такое светодиоды WS 2812b, или их ещё называют «Умные светодиоды», или НЕО пикселы.
В составе каждого НЕО пиксела есть свой собственный встроенный контроллер 5050, и он позволяет управлять отдельно каждым светодиодом в матрице.

neo pixel

Размеры такой матрицы 16 на 16 сантиметров, а соединив их последовательно можно собирать из них длинные ленты на которых можно делать бегущие строки или большие экраны и показывать на них рекламу.

 

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

В режиме белого цвета он доходит до 60 миллиампер. Получается он из смешения 3-х цветов. Красного-Зелёного-Голубого. Каждый из них в среднем потребляет по 20мА. в среднем каждые 10 светодиодов потребляют 0,5 Ампера.

Подключение матрицы к Ардуино.

подключение матрицы ws2812b к Ардуино

Для питания матрицы нельзя использовать контакты +5 вольт с Ардуино. Нужен отдельный блок питания. Для матрицы 16 на 16 подойдёт адаптер, например от зарядки телефона, но он должен быть напряжением 5 вольт и иметь силу тока от 2-х ампер. Лучше больше двух ампер если у вас будет много белого цвета и статичные узоры.
Если вы будете использовать яркость меньше 50 процентов, то двух ампер вам хватит. В этом видео я установил яркость всего на 10 процентов и этого вполне достаточно.

Первые два провода — это питание начала ленты, затем середина, а оставшиеся два конец ленты.
На проводах начала и конца есть разъёмы для удобного подключения к другим матрицам.

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

Вот некоторые примеры что можно сделать на такой матрице.

примеры на матрице

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

Adafruit NeoPixel.h - для управления лентами,
Adafruit NeoMatrix.h - для управления матрицами и
Adafruit-GFX-Library.h - для различных эффектов.

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

Например вот так. 
Матрица подключена к 6 пину Ардуино.
По горизонтали 16 светодиодов
По вертикали 16 светодиодов.
Яркость 50%

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>

#define PIN        6
#define MW         16
#define MH         16
#define BRIGHTNESS 50

Скачать все примеры и библиотеки можно в описании к видео на моём канале "Ардуино для начинающих". Там же вы можете задать вопрос или написать комментарий.

Принцип работы ленты WS 2812b - матрицы 16х16.
На вход первого контроллера(НЕО пиксела) передается поток данных.
В каждом пакете которого содержится 3 байта со значением цвета для каждого из 3 светодиодов в пикселе. 
Контроллер первого пиксела забирает первые 3 байта(24 бита), и устанавливает цвет в соответствии с содержимым, а остальной поток пропускает к следующим пикселам, и так до момента пока не возникнет пауза в 50 мкс,  Это конец потока данных.

В WS 2812b имеется 3 светодиода (красный, синий и зеленый) и ШИМ-драйвер управляющий их яркостью. 
ШИМ-драйвер 8-ми битный, поэтому для каждого из трёх цветов возможны 256 градаций яркости.
Получается, что для того чтобы установить яркость для каждого из 3-х светодиодов нужно передать пикселю 8 умножить на 3. Получается 24 бит или 3 байта информации. 
Протокол передачи информации светодиоду с фиксированной скоростью.

Каждый из пикселей WS2812B имеет 2 вывода питания (VDD, VSS), вход (DIN) и выход (DOUT).
нео пиксел ws2812b

Пиксели соединяются в цепочку следующим образом
подключение нео пикселов ws2812b


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