Популярное
Электроника, электрика
Электроника, электрика
Журнал Радиолоцман
Журнал Радиолоцман
Журнал Радиолоцман
Журнал Радиолоцман

Светодиодный куб 3х3х3 на Arduino

Светодиодный куб 3х3х3 на Arduino

Светодиодный куб 3х3х3 на Arduino

Отличительной особенностью данного проекта от других является:
+ Небольшое число дополнительных компонентов, подключается напрямую к Arduino без использования различных мультиплексоров и т.п.
+ Простая для повторения принципиальная схема с множеством фотографий и разъяснений.
+ Использование универсальной библиотеки, что значительно упрощает написание программы.

Итак, нам понадобится:
макетная плата
3 NPN транзистора (2N2222, 2N3904, BC547 и т.п.)
12 резисторов (~220 Ом и 22 кОм)
13 коннекторов (папа или мама)
27 светодиодов (LED)
соединительные провода
Шаг 1. Подготовка LED
Куб будет с 3 уровнями, по 9 LED в каждом.
В каждом наборе из 9-ти LED, все катоды соединены между собой, т.е. подключены по схеме с общим катодом (минус). Далее, наборы мы будем называть "уровнями". Каждый LED соединен анодом с LED другого уровня (нижестоящими или вышестоящими). Далее, по тексту я буду называть это колоннами, т.е. в одной колонне соединено 3 светодиода анодами, а на одном уровне соединено 9 LED катодами.
Светодиодный куб 3х3х3 на Arduino


Как видно на фото выше, для изготовления куба я использовал старый шаблон от проекта 4х4х4 светодиодного куба. Отверстия в дереве просверлены под головку светодиода, расстояние между отверстиями составляет приблизительно 15мм.
После того, как приспособление сделано, пора приступить к формовке выводов LED. Катоды всех светодиодов необходимо аккуратно согнуть на 90 градусов. Направление изгиба вывода должно быть одинаковым у всех LED.

Шаг 2. Сборка куба
Разместите первые девять светодиодов в деревянном приспособлении. С позиционируйте направление изогнутых ножек в одном направлении, скажем по часовой стрелке (или против часовой, это не принципиально).
Светодиодный куб 3х3х3 на Arduino


При помощи "крокодилов" зафиксируйте ножки LED и спаяйте их вместе. В самом конце припаяйте центральный LED. После того, как один уровень закончен, можно проверить правильность подключений LED при помощи батарейки или мультиметра. Т.к. потом, что-либо отпаять будет очень сложно, особенно если это центральный LED.
Светодиодный куб 3х3х3 на Arduino


Таким образом сделайте все три уровня. После этого, необходимо установить и припаять уровни друг над другом. При этом важно соблюсти заданное расстояние. Если в приспособлении расстояние между светодиодами было 15мм, то и расстояние между уровнями у вас должно быть 15мм, иначе получится вытянутый или сжатый куб.
Светодиодный куб 3х3х3 на Arduino


Куб готов. Теперь можно разместить его на макетной плате.

Шаг 3. Схемотехника
Схема устройства простая. Каждая из девяти колонн подключена к выводам Arduino через токоограничительные резисторы. А все 3 уровня подключены к общему выводу через NPN -транзисторы, которые, в свою очередь подключаются к Arduino.

Т.о. используется только 12 выводов Arduino. В один момент времени будет загораться LED только одного уровня, но за счет быстрого переключения между уровнями, будет казаться, что одновременно горят все уровни (в зависимости от программы).

Первым делом необходимо припаять 9 резисторов. Я использовал резисторы сопротивлением 220 Ом, которые ограничивают ток на уровне 22 мА. Номинал резисторов зависит от типа применяемых светодиодов, и варьируется от 135 до 470 Ом. Более точный расчет резистора для светодиода можно произвести здесь: LED калькулятор. Каждый вывод Arduino способен выдать до 40 мА.

Резисторы на плате, я припаял вертикально. После, я наклеил слой изоленты, чтобы не коротнуло с перемычками.
Следующим этапом будет монтаж радиоэлементов для управления уровнями. Здесь используется три NPN-транзистора. Базы транзисторов, через резистор 22 кОм подсоединяются к выводам Arduino. Т.о. контроллер открывает транзистор и весь уровень LED соединяется с "общим".

Шаг 4. Софт
В интернете я нашел несколько примеров управления подобными LED кубами. Но во всех них требовался огромный начальный массив bin или hex данных. Я все решил написать свою программу управления.

Первой задачей было сделать доступное для понимания соответствие программы и железа. Я принял решение обращаться к уровням и колоннам, вместо использования RAW-данных порта или традиционных x, y, z. Второй задачей было сделать базовые функции куба, такие как включение/отключение отдельного светодиода и др.

Также, я решил ввести две дополнительные возможности для реализации различных эффектов. Первая это буфер, который позволяет реализовывать основные функции для реализации сложных шаблонов, и вторая - это функция последовательности.

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

Скачать с сервера: У вас нет доступа к скачиванию файлов с нашего сервера


Upgrade to Premium



Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.