Например TDA7294

РадиоКот > Схемы > Светотехника > Бегущие огни и световые эффекты

RG куб 4*4*4

Автор: XkP, x-k-p@mail.ru
Опубликовано 10.07.2013.
Создано при помощи КотоРед.

Мяу котоварищи!!!

Хочу поделиться своим "тестовым" кубиком, спаянном из RG (ДВУХцветных) светодиодов, со стороной 4 светодиода. Маленький конечно, но мною он создавался как учебное пособие для понимания алгоритма написания световых эффектов под 3D графику и разработки более сложного куба уже на RGB светодиодах со стороной 8 светодиодов. Исходники выкладываю на всеобщее обозрение, ничего сложного там нет, думаю разберется даже начинающие котята-программисы, и может даже придумают свои эффекты и даже выложат их на форум. Да, кстати, исходники на ассемблере.

ну, не буду томить... схема:

Как видно на схеме маловато элементов: 1 микроконтроллер Atmega32 (подойдет и Atmega16, прошивка для него тоже имеется), 4 сдвиговых регистра типа наших 74HC164 (аналог ИР8), 4 транзистора BC557, 1 конденсатор на линию сброса и кучка резисторов.

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

Теперь немного советов о сборке самого куба:

Для начала подготовим светодиоды: берем 64 двухцветных светодиода (ВАЖНО! выводы светодиодов не обкусывать! они нужны целыми) и у всех сгибаем центральный вывод на 90 градусов (ВАЖНО! сгибать на одинаковом расстоянии от корпуса светодиода) {поз. 1, 2}. Теперь нужно спаять 16 столбиков по 4 светодиода: для этого располагаем светодиоды вертикально друг над другом, так, что бы выводы соответствовали по цветам свечения светодиодов и выводы верхнего светодиода находили на выводы нижнего примерно на 5мм (ВАЖНО! на всех светодиодах выдерживать одинаковое расстояние) {поз. 3}. Далее к этим двум светодиодам припаиваем сверху еще один, затем еще один {поз. 4}. После того как спаяно 16 столбиков по 4 светодиода проверяем все ли правильно и светодиоды расположены на одинаковых рассотояниях друг от друга. Убедившись в правильном монтаже переходим к дальнейшей пайке: берем 2 столбика и спаиваем их средними выводами светодиодов {поз. 5}, К ним припаиваем еще один и еще один {поз. 6}. И так у нас должно получиться 4 таких квадратика по 16 светодиодов. Берем два таких квадратика, располагаем их параллельно друг другу (не забываем про одинаковое расстояние между светодиодами) и спаиваем по этажам центральные выводы светодиодов в любых удобных местах. Тут тоже необходимо знать то, что чем больше перемычек, тем крепчче кубик, но чем их меньше, тем красивее. На моем кубике те выводы что с боку (центральные выводы светодиодов) так и остались там сбоку, согнул на 90 градусов, спаял. так как это тыльная сторона кеуба их будет не видно, затем взял одножильный проводок и спаял точно так же но с другой стороны. Получили мы параллелепипед (эта геометрия у меня уже в пятой точке сидит........) со сотронами 4*4*2. Делаем еще точно такой же. Затем спаиваем их вместе. Центральные выводы светодиодов каждого этажа (по схеме платформы) должны в итоге соедениться в один.

Ну вот самое страшное позади. Думаю после такого вам уже не надо рассказывать как запаять микроконтроллер и регистры на плату.

Перейдем к программной части. Программа написана на ассемблере (как уже говорилось выше). Алгоритм работы простой: загружаем таблицу в Z и выводим на индикацию каждый раз прибавляя Z. Таблица имеет двоичный вид байта 0b00000000, каждые два бита отвечают за один светодиод один за красный цвет, другой за зеленый, итого в одном байте имеем 4 двухцветных светодиода.

Пример:

0b01000000 - горит один зеленый

0b10000000 - горит один красный

0b11000000 - горит один желтый

0b01010000 - горит два зеленых

Думаю тут понятно. Но стоит учитывать что нельзя зажечь все желтые (0b11111111 или $FF в шестнадцатиричном виде), так как это значение ($FF) использкется программой для распознования конца таблицы. Иными словами как только программа встретит в таблице значение $FF сбросит текущее состояние и загрузит таблицу с самого начала.

Ну вот вроде бы и все. Плата в LAYOUT, схема в PROTEUSe, исходники в архиве. Видео http://youtu.be/zxSDbvL-n8k.


Файлы:
плата 1 сторона
плата 2 сторона
архив со всем добром


Все вопросы в Форум.


ID: 1578