Что такое led control

Обновлено: 15.05.2024

Библиотека для драйверов дисплея MAX7219 и MAX7221 Led. Библиотека поддерживает несколько последовательных драйверов и поддерживает дисплеи Led-Matrix, а также 7-сегментные дисплеи.

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

Описание библиотеки

Эта библиотека – разумеется, не первая попытка написать код для Arduino и MAX7221, однако все прежние начинания были сосредоточены на управлении светодиодами, сгруппированными в некое подобие прямоугольной матрицы. Я, впрочем, обычно использую эти чипы для управления 7-сегментными дисплеями, поэтому мне понадобилась функция, которая позволяла бы показывать на этих дисплеях числа (десятичные и шестнадцатеричные) и ограниченный набор буквенно-цифровых символов.

Кроме того, я хотел написать код, который мог быть полезен более широкой аудитории, поэтому в библиотеке есть функции, позволяющие включать/выключать как отдельные светодиоды, так и группы светодиодов. На тот случай, если вы при работе с MAX72xx использовали библиотеки, которые используют библиотеку Sprite, то должен добавить, что библиотека LedControl не поддерживает спрайты, потому что они требуют слишком много памяти Arduino. Если добавить в скетч библиотеку LedControl, то на ATmega168 это будет «стоить» вам 1690 байт. Впрочем, если не только подключить библиотеку, но и использовать ее функции, то это число, разумеется, увеличится.

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

Другие отличия между старым кодом и новым кодом, использующим ControlLed, обсуждаются в API-документации.

Управление семисегментными дисплеями


Здесь мы рассмотрим две стандартные функции для отрисовки символов и цифр на 7-ми сегментных дисплеях, а также рассмотрим нестандартное применение функции setRow() в качестве визуализации для пользовательских символов. Итак, по БЕЛАЗам.

Управление отрисовкой цифр

В основном, 7-ми сегментные дисплеи применяются для отображения каких - либо цифровых данных. Первая рассматриваемая нами функция будет заниматься именно отображением числовых символов. Функция setDigit() применяется именно при использовании 7-ми сегментных дисплеев, и прототип её вызова выглядит так:

LC.setDigit(int address, int digit, byte value, boolean dp);

В целом, один драйвер MAX72xx может управлять максимум восемью разрядами на дисплее. Пример программного кода, для отображения цифры 6 в пятом разряде 7-ми сегментного дисплея:

А также полезная статья на эту тему:

Управление отрисовкой символов, а также нестандартное применение функции setRow().

Отображением символов управляет функция setChar() , но к сожалению она может отобразить лишь определенный набор символов. таких как:

  • 0 1 2 3 4 5 6 7 8 9цифра отображается как символ
  • A aсимвол отобразится в верхнем регистре
  • B bсимвол отобразится в нижнем регистре
  • С ссимвол отобразится в нижнем регистре
  • D dсимвол отобразится в нижнем регистре
  • E eсимвол отобразится в верхнем регистре
  • F fсимвол отобразится в верхнем регистре
  • H hсимвол отобразится в нижнем регистре
  • L lсимвол отобразится в верхнем регистре
  • P pсимвол отобразится в верхнем регистре
  • -знак "минус"
  • . ,отображение точки
  • _символ подчеркивания
  • <Пробел>установить символ пробела

Прототип вызова функции setChar() выглядит так:

LC.setChar(int addr, int digit, char value, boolean dp);

  • LC - объект класса LedControl
  • int addr - адрес модуля на базе драйвера MAX72xx
  • int digit - порядковый номер разряда на 7-ми сегментном дисплее
  • char value - символ из ограниченного набора, который нужно отобразить
  • boolean dp - управление отображением точки

Итак мы видим, что скорее всего, тот набор символов что даётся по умолчанию к этой функции, будет недостаточно полным, ведь на самом деле можно придумать еще. Вот здесь и начинается нестандартное применение функции setRow() , а применять мы её будет в связке с генератором символов для 7-ми сегментных дисплеев. Для примера нужно перейти по ссылке, на странице видна интерактивная форма с сегментами, кликая по которым можно отрисовать нужный символ. В окне результата справа, появится двоичный(бинарный) код отрисованного символа, его можно скопировать в буфер обмена. Кстати, можно также воспользоваться кликабельными примерами символов, которые находятся в форме ниже. Далее, нужно лишь вызвать функцию setRow() передав ей в качестве параметра byte value содержимое буфера обмена. И всё же неплохо уточнить прототип вызова функции setRow() именно для отрисовки символов для 7-ми сегментных дисплеев:

LC.setRow(int address, int digit, byte value);

  • LC - объект класса LedControl
  • int adress - адрес устройства на базе драйвера MAX72xx
  • int digit - в данном случае этот параметр указывает на порядковый номер разряда 7-ми сегментного дисплея
  • byte value - значение которое будет скопировано из буфера обмена вышеуказанным способом, то есть после формирования генератором символов.

Ну что же, в завершение можно дать ссылку на еще одну статью, а именно по теме нестандартного использования функции setRow() , и вообще началу работы с 7-ми сегментными дисплеями на базе драйвера MAX72xx :

Библиотеку LedControl.h можно скачать здесь.

Если вам понравилась эта статья - комментируйте, оставляйте свои пожелания и критику, задавайте вопросы и предлагайте свои темы.

Пример использования

Требуется для инициализации библиотеки:

Должна состоять из четырех аргументов – номера пинов, к которым подключен дисплей (первые 3 аргумента) и количество подключенных чипов.

Отображение на дисплее всех чисел от 0 до 15:

Использует функции setChar() для символов a и d и setRow() для создания макета пропущенных символов.

Зачем нужен контроллер

led controller

контроллер для светодиодной ленты

Одноцветной светодиодной ленте контроллер не требуется, она просто подключается к блоку питания, который обычно имеет маркировку DC12V для 12-ти вольтных моделей, если лента отличается по напряжению, нужно подобрать соответствующий БП. В принципе, наиболее распространенными являются модели на 12 – 24 В, причем экземпляры с большим напряжением достаточно экзотичны. Встречаются и виды светодиодных лент для подключения к сети 220 В напрямую, но их не бывает в RGB исполнении.

Контроллер играет роль переключателя цепей от источника питания к потребителю. На ленте расположено три ряда светодиодов, различающихся по цвету, либо все три цвета выполнены в виде отдельного кристалла в одном корпусе светодиода, например, типа 5050:

Контроллеры бывают различного исполнения, в том числе герметичного, на них указана степень защиты от воды и пыли в виде IPхх, причем IP20 – самый нежный, его нельзя использовать на улице или во влажных помещениях, а IP68 – защищен хорошо. Ленты тоже бывают разными по степени защиты, маркируются таким же образом. Иногда производители используют более понятную пометку, надпись «Waterproof» гласит о водонепроницаемости прибора.

Управление 7-сегментными дисплеями

Это выполняется гораздо проще, чем описано в предыдущем разделе, и пример такого проекта можно наблюдать, к примеру, в самой первой картинке к этой статье. Думаю, показывать схему подключения смысла нет, потому что она подробно описана в «даташите» MAX72xx.

Включение ряда и столбца

Если вам нужно изменить статус сразу нескольких светодиодов одновременно, то использовать функцию setLed(), пожалуй, не стоит, потому что в итоге скетч может попросту зависнуть. Однако в библиотеке LedControl есть еще две функции для работы со светодиодами, и они позволяют включать сразу несколько (или все) светодиодов, находящихся в одном ряду или столбце. В функции setLed() для того, чтобы поменять статус нужного светодиода, достаточно было аргумента типа boolean. Однако теперь нам нужно поменять статус сразу нескольких светодиодов, поэтому систему выбора пришлось перекодировать. Ниже показана та же картинка, что и вверху, но теперь туда добавлена добавочная «система координат».

Led r c matrix.jpg

Предположим, вы решили включить несколько светодиодов, находящихся в третьем сверху ряду. Индекс для этого ряда – «2». Светодиоды, которые нужно включить – это «2,0», «2,3» и «2,6». Все остальные светодиоды должны быть выключены. Теперь нам нужно сложить все значения из картинки выше, отвечающие за нужные нам светодиоды (т.е. значения для светодиодов, что должны оставаться темными, мы в расчет не берем). Вот таблица:

2,0 2,1 2,2 2,3 2,4 2,5 2,6 2,7
Вкл/выкл Да Нет Нет Да Нет Нет Да Нет
Значение 128 0 0 16 0 0 2 0 = 146 (128 + 16 + 2)

В коде это будет выглядеть так – setRow(0, 2, 146). То есть эта функция включит первый, четвертый и седьмой светодиоды в третьем сверху ряду на матрице, подключенной к первому MAX72xx.

Кроме того, функция setRow() работает гораздо быстрее, чем setLed(), которая переключает отдельные светодиоды. Так что советую использовать setRow() как можно чаще.

То, что можно делать с рядами, можно делать и со столбцами, и за это отвечает функция setColumn(). Давайте представим, что нам нужно зажечь четыре последних светодиода, находящихся в шестом (индекс «5») столбце. В таком случае таблица будет выглядеть следующим образом:

0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5
Вкл/выкл Нет Нет Нет Нет Да Да Да Да
Значение 0 0 0 0 8 4 2 1 = 16 (8 + 4 + 2 + 1)

Вот прототипы для обеих функций:

Управление светодиодной матрицей

Светодиодная матрица может выглядеть примерно как на картинке ниже. Конкретно эта собрана при помощи семи MAX72xx.

ArduinoOnMatrix.jpg

Картинка в самом начале статьи демонстрирует проект, позволяющий управлять лишь одной матрицей размерами 5 на 7 светодиодов. То есть в данном случае возможности даже одного MAX72xx используются не на полную мощность, т.к. один чип позволяет управлять матрицей размерами 8 на 8 светодиодов. Однако даже примитивного дисплея 5х7 достаточно для проверки базовых вещей, которые библиотека LedControl позволяет делать с матрицами светодиодов.

В библиотеке есть три разные функции, позволяющие включать и выключать светодиоды в матрице. Давайте начнем с той, которая позволяет работать со светодиодами индивидуально.

Настройка яркости дисплея

Второй фактор – это ограничение развертки дисплея. В предыдущем разделе я писал, но здесь напоминаю, что рекомендую оставить это параметр таким, каким он был по умолчанию.

Впрочем, яркость дисплея можно настраивать и программно. Нижняя и верхняя границы яркости устанавливаются оборудованием – т.е. через Rset и setScanLimit() – в результате чего создается некоторый диапазон, которым можно управлять при помощи функции setIntensivity(). Но имейте в виде следующее:

  • Когда Max72xx только запускается, яркость выставлена на самое темное значение. Поэтому имеет смысл выделить в коде местечко для того, чтобы сделать это значение повыше (если вообще ничего не видно, почитайте раздел «Энергосберегающий режим»)
  • Если выставить самое низкое значение, это еще не значит, что экран будет полностью темным
  • Диапазон значений – от 0 (темно) до 15 (максимальная яркость). Любые другие значения будут игнорироваться

Вот прототип для этой функции:

Работаем с библиотекой LedControl - разбор функций и примеры применения


В этой статье мы решили дать полную обзорную информацию по библиотеке LedControl.h и разобрать примеры использования её функций. Эта библиотека была написана для работы с микросхемами MAX7219 и MAX7221 . Многим программистам - электронщикам которые занимаются с платформой Arduino всегда было интересно, как включаются массивы светодиодов заключенные в одну матрицу, как анимировать матрицы, как управлять семисегментными многоразрядными дисплеями. Используя библиотеку LedControl , мы получаем отличный инструмент для работы с упомянутыми устройствами. На нашем сайте уже было несколько интересных статей, в которых в той или иной мере мы работали с этой библиотекой, ниже в конце статьи будут ссылки на них. А здесь мы постараемся обобщить пройденный материал, и закрепить знания полученные в работе с этой библиотекой.

Создание объекта LedControl.

Пора начинать. А начнем мы с того, что создадим объект класса LedControl . Типичный код инициализации библиотеки будет выглядеть следующим образом:

Вообще, при подключении устройств с драйвером MAX72xx можно использовать любые пины на плате Arduino , но так как есть входы/выходы которые используются для последовательного соединения(пины 0 и 1 ), а также порты которые имеют в своей связке светодиодный индикатор(пин 13 ), то лучше избегать подключения к этим портам выбрав любые другие доступные. Также, порты указанные в объявлении объекта класса, не нужно инициализировать функцией pinMode() в разделе setup() программы, библиотека LedControl при создании объекта класса сама проинициализирует эти порты нужным образом.

Если необходимо управлять более восемью устройствами на базе драйвера MAX72xx , то можно создать еще несколько объектов класса LedControl . Для этого нужно использовать другую группу контактов подключения устройства, отличную от первого объекта класса LedControl . Например вот так:

Как видно из примера, для подключения следующего каскада устройств(объект LC2 ), используется следующая группа контактов, отличная от тех, которыми проинициализирован объект LC1 .

Инициализация устройств на базе драйвера MAX72xx.

При инициализации устройства на базе драйвера MAX72xx(при условии подключения всего лишь одного устройства), можно использовать нижеследующую конструкцию кода в разделе программы setup():

Функция shutdown() - это функция отключения энергосберегающего режима, светодиоды потребляют много энергии, это может оказаться критичным, если полностью собранное устройство будет работать от батареек. Функция shutdown() может отключить дисплей или матрицу когда нужно будет перевести устройство в энергосберегающий режим, либо включить - когда нужно будет вывести устройство из энергосберегающего режима, либо отобразить какие-либо данные. Прототип вызова функции:

LC1.shutdown(int address, bool set);

  • LC1 - это объект класса LedControl
  • int address - адрес устройства на базе драйвера MAX72xx
  • bool set - параметр принимающий два значения, если set = false то это означает выход из энергосберегающего режима и отображения данных, если set = true устройство переходит в спящий режим.

В данном примере при вызове функции shutdown() мы указываем, что объекту LC1 класса LedControl , адресовано всего одно устройство на базе драйвера MAX72xx , адрес которого равен 0 , при этом второй параметр равен false , значит устройство должно быть выведено из энергосберегающего режима. Важно знать, что адресация устройств начинается с 0 , а заканчивается адресом равным 7 .

Следующая функция setIntensity() - устанавливает яркость свечения сегментов, либо светодиодов(смотря что подключено дисплей или матрица). Прототип вызова функции:

LC1.setIntensity(int address, int brightness);

  • LC1 - это объект класса LedControl
  • int address - адрес устройства на базе драйвера MAX72xx
  • int brightness - этот параметр устанавливает яркость свечения сегментов, либо светодиодов. Может принимать значения от 0 до 15 , при этом если значение будет равно 0 , то яркость свечения будет установлена на минимальный уровень, а если значение равно 15 , то яркость свечения будет максимально возможной. В примере, приведённом выше, этому параметру присваивается значение 8 , что позволит установить свечение средней интенсивности. Интересной особенностью является то, что при установке на минимальный уровень свечения, сегменты(либо светодиоды) не "погаснут", их свечение будет видно, хоть и очень тускло. Энергопотребление останется на том же уровне, и чтобы окончательно погасить свечение используется вышеописанная функция shutdown() .

Функция clearDisplay - очищает дисплей(либо матрицу), с указанным адресом. Прототип вызова функции:

  • LC1 - это объект класса LedControl
  • int address - адрес устройства на базе драйвера MAX72xx

Здесь даётся указание очистить дисплей(либо матрицу) для устройства на базе драйвера MAX72xx , с адресом 0, адресованного объекту LC1 класса LedControl .

Инициализация устройств при каскадном подключении.

При инициализации устройств на базе драйвера MAX72xx (если они подключены каскадом), в разделе setup() имеет смысл использовать функцию getDeviceCount() для получения количества устройств на шине, это позволит инициализировать устройства динамически. Функция не принимает никаких параметров, но при этом возвращает целочисленное значение( тип int ), которое хранит количество подключенных устройств на базе драйвера MAX72xx , адресованных объекту класса LedControl . Ниже приведен пример динамической инициализации в цикле for для 5-ти устройств, адресованных объекту LC класса LedControl .

В дополнение - ссылка на статью, в которой приведён пример каскадного подключения устройств на базе драйвера MAX72xx:

Инициализация устройства

В «даташите» MAX72xx есть глава о настройках включения. Библиотека LedControl использует почти те же самые настройки:

  • Дисплей пуст
  • Устройство не декодирует присылаемые ему данные
  • Яркость выставлена на минимум
  • При запуске девайс начинает работать в энергосберегающем (спящем) режиме
  • У чипа активировано максимальное количество цифр

Запуск в энергосберегающем режиме пригодится, к примеру, если ваш проект работает на батарее, однако перед использованием устройство в любом случае надо будет включить. О том, как это сделать, читайте выше, в главе «Энергосберегающий режим», но за тем исключением, что функцию shutdown() нужно использовать в блоке setup().

Также обратите внимание, что библиотека активирует у чипа максимальное количество цифр, что отличается от дефолтных настроек MAX72xx. Более подробно читайте в следующем разделе «Ограничение количества цифр».

Что такое контроллер для светодиодной ленты и как его выбрать

led controller, rgb

Для работы с многоцветной светодиодной лентой нужен специальный контроллер. Если вы хотите, чтобы освещение переливалось разными цветами или с пульта регулировать яркость и оттенок RGB-светильника без него не обойтись. Такие ленты часто монтируют в автомобиль, это самая простая подсветка, напоминающая неон. Поэтому давайте узнаем, как выбрать контроллер для светодиодной ленты.

Включение отдельного светодиода

Вот прототип функции:

Что делает эта функция, думаю, очевидно, как и очевидно то, для чего нужны аргументы addr и state. Но как в матрице определяются ряды (row) и столбцы (col)?

Поскольку представление о светодиодах, как об устройствах, сгруппированных в матрицу – чисто теоретическое, схема ниже объясняет, как эта матрица подсоединена к контактам MAX72xx.

LedMatrix.jpg

В верхней и левой частях картинки изображены контакты MAX72xx, к которым подключены светодиоды матрицы. Каждый светодиод имеет в матрице определенную позицию (ее номер написан справа). Собственно, это картинка наглядно показывает, где у матрицы ряды и столбцы: восемь рядов (пронумерованных от 0 до 7) и восемь столбцов (тоже пронумерованных от 0 до 7). Таким образом, если вы хотите зажечь, к примеру, крайний правый светодиод в третьем ряду, просто посмотрите на картинку (адрес этого светодиода будет «2,7»), а затем используйте эти данные для аргументов row и col.

Загрузка и установка

ZIP-архив, который содержит исходный код библиотеки, а также локальную версию (но на английском языке) данной статьи, можно скачать здесь. Распаковка архива создаст новую директорию под названием LedControl, которая будет содержать в себе следующее:

  • «LedControl/LedControl.h» – Заголовочный файл, который нужно будет подключать к скетчу
  • «LedControl/LedControl.cpp» – Реализация
  • «LedControl/doc/LedControl.htm» – HTML-документация
  • «LedControl/doc/lc.css» – Таблица стилей для HTML-документации
  • «LedControl/doc/*.jpg» – Несколько картинок для HTML-документации

Этот ZIP-файл нужно распаковать в директорию для библиотек IDE Arduino. У разных версий IDE Arduino эта папка может находиться в разных местах.

  • Если у вас версия от 0007 до 0009, то она находится по адресу «arduino-<версия>/lib/targets/libraries/»
  • Если у вас версия 0010 и выше, то библиотеки устанавливаются по адресу «arduino-<версия>/hardware/libraries/»

После распаковки ZIP-файла новую библиотеку нужно скомпилировать. В IDE Arduino это делается очень просто. Создайте новый скетч следующего содержания:

Затем нажмите кнопку «Проверить», после чего библиотека скомпилируется и будет готова для использования во всех скетчах, которые начинаются со строчки

Создание экземпляра класса

Все функции библиотеки вызываются через переменную типа LedControl. Вот пример кода:

Первый шаг очевиден – подключаем библиотеку LedControl. Затем создаем экземпляр класса LedControl, чтобы с его помощью «разговаривать» с чипом MAX7221. Чтобы инстанцинировать класс LedControl, нужно четыре аргумента. Первые три аргумента – это номера контактов, используемых для соединения между платой Arduino и (первым) чипом MAX72XX. Вы можете использовать любые цифровые IO-контакты Arduino, но некоторые из них также используются для последовательного соединения с другими девайсами или подключены к светодиоду (как правило, это касается 13-ого контакта). В этом примере я выбрал 12-ый, 11-ый и 10-ый контакты, однако это зависит, разумеется, от типа построения цепи. Библиотека LedControl никак не проверяет, подходят ли выбранные контакты для подключения или нет, поэтому если выбрать неправильные контакты, скетч просто не будет работать.

Вам не нужно задавать контакты для выходных данных или для инициализации девайсов – библиотека сделает все за вас. Просто укажите нужные контакты при создании экземпляра класса и занимайтесь другими делами. Четвертый аргумент – это количество чипов MAX72xx, каскадно подключенных к Arduino и использующих это SPI-соединение. Имея всего один экземпляр класса LedControl, можно работать с восемью чипами MAX72xx. Впрочем, с каждым новым MAX72xx, добавленным в цепь, будет немного снижаться производительность системы. Библиотека всегда использует одинаковое количество памяти, независимо от того, как много девайсов вы указали в этом аргументе. Кроме того, четвертый аргумент поддерживает лишь числа от 1 до 8, а при указании другого числа библиотека будет по умолчанию использовать число 8. Вот прототип для нового экземпляра класса LedControl:

Если вы хотите управлять более чем восемью чипами MAX72xx, вам нужно создать еще один экземпляр класса LedControl и указать в нем три других контакта Arduino.

Очевидно, что два экземпляра класса LedControl не могут пользоваться одними и теми же контактами Arduino.

В библиотеке LedControl нет функции, позволяющей менять эти контакты (в том числе – менять местами). Кроме того, нет и функции, позволяющей считывать номера этих контактов. Дело в том, что все это зависит от используемого оборудования, поэтому наличие в библиотеке всех этих функций лишь привело бы к расходованию лишней памяти. Однако функция, позволяющая запросить максимальное число девайсов, подключенных к LedControl, пришлась бы весьма кстати – к примеру, в случае, если вам нужно пройтись по полному списку чипов MAX72xx, подключенных к LedControl. Ниже кусочек кода, который переключает все чипы MAX72xx из спящего режима в нормальный режим. Мы еще не обсуждали функцию shutdown(), но я думаю, это не будет препятствием к тому, чтобы разобраться, что здесь к чему.

Здесь мы пробегаемся по списку устройств при помощи переменной index, которая начинается со значения «0», а заканчивается getDeviceCount()-1 (в данном кусочке кода – от 0 до 4). Переменная index – это адрес каждого устройства. Этот адрес будет первым аргументом в любой функции, которая задает какое-либо свойство или значение для светодиода. Держите в уме, что getDeviceCount() пускай и возвращает количество подключенных устройств, однако адресом для первого устройства всегда будет «0», для второго – «1», а для последнего – getDeviceCount()-1. Вот прототип функции:

Ecola RF mini controller 6A 72W 12V

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

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

Подключение контроллера к светодиодной ленте

led controller, подключение

подключение к контроллеру

Подключение контроллера лучше осуществлять с помощью разъемов для монтажа RGB-ленты, потому что это быстрее и проще в ремонте, чем соединение с помощью пайки. Чтобы добавить отрезок достаточно надеть коннектор на конец ленты соответственно цепям. По схеме (клемма на блоке – контактный пятачок на ленте).

  • Red-R;
  • Green-G;
  • Blue-B;
  • +Vout-+Vin.

Многоцветная лента использует для питания общий плюс, а управление ведется по минусовой шине.

Важно! Для работы rgb нужен 4-х проводной соединитель (коннектор)

Контроллер может быть многозональным, это значит, что на нем предусмотрено управление более чем одной световой зоной. Вы можете подключить несколько различных участков и управлять ими независимо. В таком случае соединение будет аналогичным вышеописанному однозонному, только повторяется для каждой зоны соответственно. Некоторые модели подсоединяются к БП не через клеммные колодки, а круглым разъемом «папа», естественно, на блоке питания должно быть такое же гнездо, но типа «мама» или наоборот.

📋 Пройдите тест и проверьте ваши знания

Что такое контроллер для светодиодной ленты и как его выбрать

RGB лента состоит из разноцветных или трехцветных светодиодов?
Почему разрезать ленту можно только в специально предназначенных местах?
Чтобы не нарушить схему питания группы светодиодов.
Можно ли светодиодную ленту погружать в воду?
Можно, если она имеет герметичное исполнение (IP67 и выше).
На какое рабочее напряжение рассчитала светодиодная лента?
Можно ли светодиодную ленту использовать для освещения
Можно, если создаваемого ею светового потока для этого достаточно.
Почему у очень длинной ленты удаленные от питающих проводов светодиоды светят тускло?
Из-за большой длины ленты на ее токопроводящих дорожках падает напряжение. Они не могут светить тускло – все светодиоды включены параллельно на одну питающую шину ленты. Ты абсолютно ничего не знаешь о светодиодной ленте. Советуем почитать наши статьи в разделе светодиодная лента.


Ты очень слабо знаешь принцип работы светодиодной ленты. Советуем почитать наши статьи в разделе светодиодная лента.


Ты неплохо разбираешься в принципе работы светодиодной ленты, но есть некоторые пробелы.



Share your Results:

Светодиодная лента Подключение и управление светодиодной лентой к arduino Светодиодная лента Как подключить светодиодную ленту и не допустить ошибок

Да, это возможно. Однако не все так просто. Зависит от того как собрана люстра и что у неё внутри. если там стоит источник питания 12В и от него напрямую запитана лента. То между источником и лентой ставим контроллер или диммер с ПДУ. Я так понимаю, что теплый и белый свет управляются отдельными выключателями? Тогда источника питания, скорее всего, два, каждый из них включается от клавиши выключателя. В этом случае переделка аналогична, но интенсивность каждого из цветов регулироваться отдельным контроллером.
Подробнее опишите свою проблему, пожалуйста.

Здравствуйте. У меня CPU Кулер deepcool gammaxx gte rgb. В комплекте не было контролера для кулера.
Подскажите пожалуйста как мне подключить подсветку кулера без контролера. На материнке тоже нету разъема что бы подключить подсветку кулера.

Здравсвтуйте! Вообще может подключаться к РГБ-контроллеру на материнской плате. Если его нет, то можно попробовать подключить к РГБ-контроллеру от светодиодной ленты, а на его вход подать 12В от любого свободного разъёма компьютерного блока питания. Согласно инструкции — должно работать, так как схема РГБ подствеки аналогична светоодиодной ленте (общий анод).
Есть и специальные контроллеры для кулеров, например Cooler Master MFP RGB Controller MFY-RCSN-NNUDK-R1.

Привет Алексей. Хочу сам создать инсталяцию из 4х паралельно подключенных RGB СЛ. Общая мощность 144W. БП 200W. радио контроллер более200W. ВОПРОС, Нужен ли усилитель сигнала контроллера на каждую СЛ.?

Нет не нужен, усилитель нужен чтобы от одного маленького контроллера запитать много лент мощность которых превышает его мощность.

Нужен ли контролер для одноцветной светодиодной подсветки потолка? Сколько необходимо блоков питания для 14 метров ленты на одну комнату по периметру?

Здравствуйте,хотел попросить подобрать подсветку на кухню в алюминиевый профиль. Профиль угловой 2 метра,это всё что есть. Хотелось с сенсорным выключателем в профиль и 2 режима подсветки 50 и 100 %, цена вопроса до 1000 рублей. Заранее благодарен

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

Чипы MAX7221 и MAX7219 упрощают управление массивами из 64 светодиодов, а также восемью цифрами, сделанными из 7-сегментных дисплеев, требуя при этом минимальное количество электронных компонентов. Помимо чипа вам потребуется лишь один резистор, а также один-два конденсатора. Данные передаются чипу посредством SPI-совместимого протокола при помощи трех цифровых контактов Arduino. Если вы хотите управлять более чем восемью 7-сегментными дисплеями (или более чем 64 светодиодами), то чипы можно подсоединить посредством каскадного подключения. Поскольку библиотека LedControl поддерживает до восьми каскадно подключенных чипов, это позволяет индивидуально управлять 512 светодиодами, и для этого нужно по-прежнему всего три цифровых контакта Arduino.

Ниже – фотография пускай примитивного, но работающего тестового образца:

Max7221Setup.jpg

Если вам интересно, какой из этих двух чипов лучше подойдет для вашего проекта, то можно остановиться на том, что дешевле. Однако если вы планируете использовать не Arduino, а какой-то другой контроллер, то лучше воспользоваться более дорогим MAX7221, т.к. в нем реализован полноценный SPI-совместимый интерфейс. Впрочем, библиотека LedControl может работать с обоими чипами, и внешний вид для пользователя будет одним и тем же.

Все, что вас интересует о MAX7221 и MAX7219, можно найти в «даташитах» этих устройств. Я несколько раз буду ссылаться на них – к примеру, описывая функции библиотеки. Поэтому, перед тем как читать дальше, я бы все же советовал начать с чтения «даташитов».

Энергосберегающий режим

Горя, светодиоды требуют довольно много энергии, поэтому если ваш проект работает на батарее, то дисплей иногда имеет смысл выключать. В библиотеке LedControl есть специальная функция, позволяющая переводить MAX72xx в спящий режим: она выключит все светодиоды на дисплее, однако все необходимые данные будут сохранены в памяти чипа. Более того, во время спящего режима чип может как принимать данные, так и обрабатывать их. Таким образом, когда чип будет выведен из спящего режима, на дисплее будут показаны обновленные данные. Ниже пример «невидимого» обратного отсчета:

Имейте в виду, что при включении Arduino чип MAX72xx всегда находится в спящем режиме.

Виды контроллеров

led controller

контроллер для светодиодной ленты

Мы уже упомянули, что контроллеры бывают различными, но они выполняют подобные задачи – переключение цветов и регулировку интенсивности их свечения. Они отличаются:

  • По типу исполнения (защищенные от условий окружающей среды и незащищенные);
  • По типу монтажа (с отверстиями под монтаж на саморезы, или на Din-рейку и прочие).
  • По способу управления (пульт дистанционного управления, кнопки на корпусе контроллера или другие wireless-радио технологии, например, управление со смартфона по WiFi).

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

Вообще, видов пультов очень много. Самый дешевый вариант – это кнопочное устройство, у которого в качестве передатчика инфракрасный светодиод. Оно обладает недостатками присущими всем подобным изделиям. Например, система будет реагировать, только если направлять в сторону приемника контроллера пульт при выборе и регулировке режима работы. Более современные модели в комплекте содержат уже сенсорные устройства управления.

Интересная модель:

Ecola RF mini controller 6 А, работает от 12 – 24V, при питании 12 V позволяет зажечь 72 W, а при 24 V – уже 144 W светодиодного света. Использует кнопочный радио (RF) пульт для настройки. Имеет очень маленький разъем для подсоединения к вашей схеме. Изменяет цвет подсветки и работает как диммер.

Ecola, mini controller

Ecola RF mini controller

Печать символов

Хотя 7-сегментные дисплеи позволяют показывать лишь ограниченный набор символов, иногда даже этот функционал приходится весьма кстати. Аргумент value – это тип символа, и здесь доступны значения в диапазоне от «0» до «127». Поскольку дисплей способен показывать далеко не все символы ASCII-формата, то в большинстве случаев вместо нужного символа на дисплее будет просто показан пробел. Кроме того, для символов с кодом выше «127» тоже будет показан пробел.

Вот список символов, которые дисплей может отобразить:

  • 0 1 2 3 4 5 6 7 8 9
  • A a (будет печататься заглавная буква)
  • B b (будет печататься заглавная буква)
  • C c (будет печататься заглавная буква)
  • D d (будет печататься заглавная буква)
  • E e (будет печататься заглавная буква)
  • F f (будет печататься заглавная буква)
  • H h (будет печататься заглавная буква)
  • L l (будет печататься заглавная буква)
  • P p (будет печататься заглавная буква)
  • - (знак минуса)
  • ., (десятичная запятая)
  • _ (нижнее подчеркивание)
  • <SPACE> (пустое место или пробел)

Кроме того, для удобства использования шестнадцатеричные символы были переопределены в значения типа char: от 0x00 до 0x0F. Таким образом, если вы хотите смешать вместе цифры и символы, то этот аргумент можно передать не только через char, но и через byte. Прототип этой функции почти идентичен прототипу setDigit():

На этом все, спасибо за чтение!

Как выбрать контроллер для светодиодной ленты

led, controller

контроллеры для светодиодной ленты

При выборе РГБ-контроллера обратите внимание на его вольтаж, он должен быть такой же, как у блока питания, например, 12 В. Это величина коммутируемого напряжения. Говорит, о том, что не нужно его подключать к цепи 24 В. Работать он возможно и будет, но не факт, что проработает долго, или вообще не сгорит моментально. Подробная информация указана на корпусе в графе «Voltage» (напряжение, В) и Current (ток, А).

Следующим шагом является подбора контроллера по току. Для этого вы должны определиться с тем, какой метраж будете включать, и посчитать потребляемый ток. Например для ленты типа 5050 ток потребления примерно 1,2 – 1,3 А на 1 метр.

О маркировке блоков питания:

БП имеют маркировку типа:

  • DC12V-12A – напряжение на выходе – 12 вольт, выдает ток до 12 А.
  • DC12V-18A – напряжение на выходе – 12 вольт, ток до 18 А.

Она может несколько отличаться, на ее общий вид всегда подобен. Примите это во внимание при выборе БП и его внешнем осмотре.

Если в наличии нет контроллеров на необходимый ток – примените усилитель для RGB-ленты. Он использует сигналы управления (величины напряжений) от предыдущей ленты или от основного контроллера, и с помощью дополнительного блока питания продолжает зажигать подсветку по аналогичной программе вашего контроллера.

То есть, он усиливает сигнал с контроллера для подключения большего количества светильников, с помощью дополнительного блока питания. Это удобно если нужно смонтировать протяженную по расстоянию инсталляцию, вы можете сэкономить, как кабель (подключив вход усилителя от конца ленты, а начало следующей на выход), так и время на разводку силовых линий – дополнительный БП питается от ближайшего источника 220 В.

Специалист по ремонту, обслуживанию электрооборудования и промышленной электроники. Важно! Все элементы цепи должны быть подобраны по одинаковому номинальному напряжению и току, а ток потребления ленты не должен превышать выдаваемый ток БП и контроллера

Далее, обратите внимание на исполнение его корпуса. На этапе подбора комплектующих, вы уже должны определиться с тем, где будете их устанавливать. Если работа осуществляется в помещении, например, на внутренней отделке кафе – скорее всего, вам не нужны герметичные модели БП и контроллеров.

Краткие итоги:

Набор для работы (kit) RGB-LED-ленты состоит из: самой ленты, блока питания, контроллера. В случае необходимости подключение больших объемов ленты для синхронной работы в системе используйте дополнительно: усилитель для ргб-ленты и еще один блок питания 12 В. Задача последнего – преобразование и стабилизация напряжения с 220 V в 12.

Отображение чисел (десятичных и шестнадцатеричных)

Эта функция принимает аргумент типа byte, а затем печатает указанное значение в указанном месте дисплея. Диапазон значений – от «0» до «15». Значения в диапазоне от «0» до «9» печатаются как числа, а в диапазоне от «10» до «15» – в виде шестнадцатеричных символов. Все другие значения игнорируются (т.е. не печатаются). Сам дисплей при этом не потухнет, а просто покажет предыдущее значение. Наличие десятичной запятой указывается в последнем (четвертом аргументе). Ниже – пример отображения на экране значения типа int, состоящего как минимум из 4 цифр (здесь используется также функция setChar(), которая объясняется в следующей главе).

Прототип для этой функции:

В аргументе digit можно указывать значения в диапазоне от «0» до «7», т.к. MAX72xx может управлять не более чем восемью 7-сегментными дисплеями, и их отсчет ведется с «0».

Очищение дисплея

Объяснять, собственно, особо нечего, потому что все предельно ясно. Функция, отвечающая за очистку дисплея – это clearDisplay(). Вот ее прототип:

Собственно, после вызова этой функции все светодиоды выключатся. Все.

Ограничение количества цифр (ограничение развертки)

При создании нового LedControl на дисплее всех устройств будут активированы все восемь цифр. Таким образом, мультиплексор, управляющий цифрами, включит их на 1/8 секунды. Светодиод включается чаще, из чего следует, что он будет дольше находиться во включенном состоянии. Его выставить ограничение развертки на «4», это значит, что светодиод включится на 1/4 секунды. Следовательно, MAX72xx должен будет дольше подавать ток на устройство, управляющее этим сегментом.

Обязательно ознакомьтесь с соответствующим разделом в «даташите» чипа, потому что, выбрав плохой резистор, ограничивающий ток, что идет через светодиод, и количество показываемых цифр, вы можете попросту испортить MAX72xx. Единственная причина поменять ограничение развертки – это если экран выглядит слишком темным. Впрочем, в большинстве случаев это происходит из-за того, что вы просто не повысили яркость при запуске. Вот прототип для функции setScanLimit():

Управление LED матрицами 8x8


Включение/выключение одного светодиода на матрице

Управление LED матрицами 8х8 осуществляется, всего лишь тремя функциями. И начнем мы с функции, которая управляет каждым светодиодом на матрице индивидуально. Итак, функция setLed() , и прототип её вызова:

LC1.setLed(int address, int row, int column, boolean state);

  • LC1 - это объект класса LedControl .
  • int address - адрес устройства на базе драйвера MAX72xx
  • int row - ряд светодиодов LED матрицы 8х8, нумерация рядов начинается с 0 а заканчивается 7 .
  • int column - столбец светодиодов LED матрицы 8х8, нумерация столбцов начинается с 0 а заканчивается 7 .
  • boolean state - состояние светодиода( true - включен, false - выключен), именно этот параметр отвечает за включение отдельно взятого светодиода.

Что же представляют собой ряды и столбцы LED матрицы 8x8? На схеме ниже изображена LED матрица 8х8, с одним закрашенным кружочком, это и есть зажженный светодиод, на втором ряду и седьмом столбце (2,7) .


Пример скетча в данном случае будет таким:

В примере видно, что вызов функции setLed() осуществляется в теле основной функции loop() программы. Светодиод на 2-ом ряду и 7-ом столбце матрицы включается и через полсекунды выключается, затем всё повторяется снова. Ну и в дополнение - ссылка на интересную статью, в которой эта функция используется более расширенно, реализация анимации "бегущего огонька" с примерами и обзорным видео:

Включение ряда светодиодов на LED матрице 8х8

Для включения ряда светодиодов на LED матрице 8x8 применяется функция setRow(). Функция позволяет использовать значение переменной с типом данных byte , для зажигания ряда светодиодов на матрице. Прототип вызова функции:

LC.setRow(int address, int row, byte value);

Ниже приведена схема, показывающая LED матрицу 8х8, на которой во 2-м ряду включены 0-й, 2-й и 3-й светодиоды(они закрашены синим), остальные же выключены.


Пример скетча для включения ряда светодиодов:

Более интересный эффект даёт использование данной функции в теле цикла for . Это позволяет динамически отрисовывать различные пользовательские шрифты, пиктограммы и другие анимации. Пример использования функции setRow() в теле цикла for раскрывает следующая статья:

и инструментарий который можно использовать для создания шрифтов и пиктограмм:

Включение столбца светодиодов на LED матрице 8х8

Почти что идентичная предыдущей, функция setColumn() , которая позволяет зажечь столбец светодиодов на LED матрице 8x8. Прототип вызова функции:

LC.setColumn(int address, int column, byte value);

Ниже приведена схема, показывающая LED матрицу 8х8, на которой в 0-м столбце включены 5-й, 6-й и 7-й светодиоды(они закрашены синим), остальные же выключены.


Пример скетча для включения ряда светодиодов:

Читайте также: