Самодельный светодиодный куб 4x4x4 на Arduino
В интернет-магазинах по доступной цене можно приобрести модуль управления светодиодной матрицей 8x8, собранный на микросхеме МАХ7219 (рис. 1). Его можно использовать для совместной работы с Arduino.
Такой модуль, используя всего три сигнальных вывода платы, позволяет управлять светодиодной матрицей из 64 (8x8) светодиодов.
Рис. 1. Модуль управления светодиодной матрицей 8x8.
Дополнительные функции по управлению такими модулями даёт библиотека LedControl, автором которой является Эбехард Фэйл. Совместное использование библиотеки и модулей расширяет возможности Arduino UNO.
Библиотека поддерживает работу до восьми последовательно соединённых модулей, позволяя параллельно подключать несколько таких цепочек.
Это широко используется любителями при построении различных информационных табло и бегущих строк. Однако не менее интересным является создание с помощью этого модуля и светодиодов трёхмерных анимационных эффектов. Об управлении с помощью модуля на МАХ7219 светодиодной 3D-матрицей 4x4x4 и пойдёт речь в статье.
Рис. 2. Внешний вид готового светодиодного куба.
На рис. 2 изображена конструкция светодиодного автоматического переключателя световых эффектов. Автомат перебирает в цикле восемь программ переключения светодиодов.
Использование Агduino позволяет гибко менять их число и содержание, открывая простор для творчества.
Изготовление устройства удобнее начать с самого куба и его подключения к модулю. Сначала с платы модуля надо удалить светодиодную матрицу, для этого её надо аккуратно поддеть отвёрткой. В результате освободятся разъёмы для подключения матрицы.
Микросхема МАХ7219 и подключение светодиодов
Условная нумерация контактов модуля показана на рис. 3 Именно через них на светодиодную матрицу 8x8 поступает питающее напряжение. На этом же рисунке указаны выводы светодиодного куба, к которым подключают контакты модуля.
Рис. 3. Модуль на микросхеме МАХ7219.
Через контакты С1 -С8 высокий уровень напряжения поступает на столбцы матрицы, а через R1- R8 - низкий уровень на строки. Например, чтобы включить левый нижний светодиод (см. рис. 1), нужно подать на вывод С1 логическую единицу, на вывод R1 - ноль. Выводы R образуют ряды, выводы С - столбцы. К первым выводам подключаются все катоды светодиодов, ко вторым - аноды.
Рис. 4. Конструкция светодиодного куба.
Конструктивно куб (рис. 4) состоит из четырех одинаковых слоёв по 16 светодиодов в каждом. Схема одного слоя показана на рис. 5. В авторском варианте применены индикаторные светодиоды красного цвета свечения с диаметром корпуса 5 мм.
Каждый слой монтируется с помощью пластины-шаблона. Она изготовлена из листовой пластмассы толщиной 2...3 мм или толстого картона, её размеры - 80x80 мм.
В ней просверлены 16 отверстий диаметром 5 мм с шагом 20 мм. В отверстия вставляют светодиоды, аккуратно изгибают выводы (рис. 6) и производят их пайку в соответствии со схемой слоя.
Рис. 5. Схема подключения светодиодов в куб 4x4x4.
Удобнее производить соединения, например, в последовательности HL1, HL5, HL9, HL13. После последовательной сборки слоёв приступают к монтажу куба.
Для этого потребуются восемь стоек из двухстороннего фольгированного стеклотекстолита шириной 5 мм и длиной 60 мм каждая. Они будут обеспечивать механическое крепление и электрическое соединение слоёв в единый куб.
Рис. 6. Изгиб выводов.
Выводы катодов верхних двух слоёв (см. рис. 4) попарно припаивают к внешней стороне (по рис. 4) каждой стойки, нижних двух слоёв - к внутренней стороне.
Аноды (выводы) первого и третьего слоёв (отсчёт сверху) соединяют с внешней стороной стоек, второго и четвёртого слоёв - с внутренней. Внизу, к каждой стойке, припаивают двухконтактный разъём, для соединения с платой модуля в соответствии с рис. 3, рис. 4 и рис. 5. Далее собирают устройство в соответствии с рис. 7.
Принципиальная схема
Модуль А2 соединяют с кубом, состоящим из четырёх слоёв АЗ-А6. Дополнительный модуль А7 (модуль на МАХ7219 со светодиодной матрицей 8x8) позволяет визуально контролировать при самостоятельном программировании соответствие двухмерной и трёхмерной картинки свечения светодиодов в кубе и матрице. После окончания программирования этот модуль удаляют.
Питают конструкцию при настройке от компьютера, при эксплуатации - от внешнего источника напряжением 7... 12 В при токе до 500 мА.
Рис. 7. Принципиальная схема светодиодного куба 4х4х4.
Программа
Библиотека LedControl не встроена в Arduino IDE, поэтому её нужно найти и установить на свой компьютер. Для этого в поисковую строку записывают "Библиотека LedControl, ZIP архив скачать" и устанавливают её после скачивания из Arduino IDE (рис. 8). Её название должно появиться внизу выпадающего списка.
Далее рассмотрим основные моменты использования библиотеки и функции применительно к скетчу для светодиодного куба. Строка #include "LedControl.h" в начале скетча указывает на необходимость использования данной библиотеки.
Строка LedControl LC = LedControl(12, 11, 10, 2); создаёт в программе объект класса для двух индикаторов - куба и плоской матрицы. Аргументы в скобках задают номера выходов платы и соответственно порядок подключения входов модуля. Первый - DIN, второй - CLKC, третий - CS. Четвёртый аргумент указывает число используемых индикаторов (в нашем примере их два).
Затем следует команда LC.shutdown (0, false);, которая выключает индикатор под номером 0 (нумерация начинается с 0 и заканчивается цифрой 7) из режима экономии энергии. Команда LC.setlntensity(0, 12); устанавливает яркость свечения в 12 единиц (яркость условно разбита на 16 уровней с нумерацией от 0 до 15 по возрастанию).
Команда LC. clearDis-play(O); очищает экран, гасит все пиксели матрицы под номером 0. Так происходят начальные установки для куба. Аналогичные процедуры реализуются для второго индикатора под номером 1.
Далее в основной части цикла, например, внутри фрагмента //построчное включение всех светодиодов//, происходит постоянный перебор элементов массива значений и включение соответствующих точек матрицы. Два счётчика j и і обеспечивают смену переключения по схеме "цикл в цикле".
Команда LC.setLed (О, i, j, 1); включает светодиод столбца под номером j и строки под номером і, индикатора под номером 0 (нумерация строк и столбцов также идёт от 0 до 7).
Аналогично команда LC.set Led(1, i, j, 1); включает светодиоды индикатора под номером 1. Такое состояние сохраняется в течение 100 мс (команда delay(100);), затем происходит переход к следующему светодиоду.
Рис. 8. Arduino IDE.
Внутри фрагмента //мигание светодиодами всего куба в пятикратно повторяемом цикле выполняется команда LC.shutdown-(0, true); LC.shutdown (1, true); delay(300); LC.shutdown(0, fa!se);LC.shutdown(1, false); delay(300);. Она интерпретируется так: включить экономичный режим индикаторов, сделать паузу, выключить экономичный режим, сделать паузу. В таком режиме все светодиоды куба будут мигать.
Вся программа переключений построена на использовании трёх основных функций: LC.setLed(); LC.shut-down(); LC.clearDisplay(); Это - включение/выключение заданного светодиода, включение/выключение индикатора с сохранением данных и очистка экрана с выключением всех светодиодов с потерей данных по их предыдущему состоянию.
После макетирования и программирования приступают к сборке устройства. В пластмассовом контейнере подходящих размеров (см. рис. 2) размещают платы Arduino и модуля МАХ7219.
В крышке, вдоль стоек, прорезают щели и пропускают в них соединительные провода к контактным разъёмам рядов и столбцов куба. Сверху щели закрывают пластмассовыми сьёмными пластинами с крепёжными прорезями под стойки.
Сам куб приклеивают к поверхности крышки через пластмассовые брусочки-переходники размерами 5x5x10 мм, приклеенные к основаниям четырёх крайних стоек. В боковой поверхности контейнера сверлят отверстие для кабеля источника питания.
Скачать программу для Ардуино - LED-kub-4x4x4-arduino-program
Д. Мамичев, п. Шаталово Смоленской обл. Р-11-17.