PC     PC      
Меню сайта
Категории каталога
Игр [0]
Моды, патчи и многое другое для комфортной игры
Производительности [7]
О том как заставить компьютер работать быстрее
Внешнего вида [16]
О том, как изменить внешний вид вашего компьютера.
Мини-чат
200
Наш опрос
Оцените мой сайт
Всего ответов: 244
Главная » PC » Модификации » Внешнего вида

Музыкальный светодиодный куб
[ ] 21.11.2009, 22:26

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

led cube

Принцип работы

При создании светодиодного куба нам пришлось использовать инерционность зрительного восприятия, поскольку одновременное включение всех светодиодов потребовало бы достаточно большого тока. К примеру, потребляемый ток для ярких светодиодов составляет порядка 20 миллиампер, таким образом, на одновременное включение 512 штук нужно 10,24 А. Довольно сложно обеспечить такой ток, и тогда мы принили решение включать по одному слою в каждый отдельно взятый момент времени. Таким образом, потребление тока составит 1.28 A (по 20 мA на 64 светодиода). Такие характеристики обеспечить намного легче, и хорошего трансформатора здесь будет вполне достаточно. Представим, что нам необходимо осветить куб целиком. Для этого, мы будем включать различные слои один за другим со скоростью большей, чем скорость реакции человеческого глаза.

led cube

Для независимого контроля каждого светодиода было принято решение поделить куб на вертикальные слои и горизонтальные колонки. Ко всем светодиодам на каждом горизонтальном слое на катод подведен общий «минус», а для вертикальных колонок общим является «плюс». Таким образом, мы можем управлять 8 катодами по слоям и 64 анодами по колонкам. Комбинация сигнала на колонку и слой даёт нам возможность управлять каждым отдельно взятым светодиодом.

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

Что касается блока питания для проекта, то был использован БП с выходным стабилизированным напряжением 5 В и номинальным током 2 А.

Реализация

Приступим непосредственно к построению куба. Для этого нам понадобится следующее оборудование: паяльник, припой, пистолет для горячего склеивания, лобзик. Также не лишним будет заранее запастись материалами: 512 светодиодов вашего любимого цвета, сорокапиновый шлейф (вполне подойдёт шлейф от жёсткого диска IDE), 34 — х пиновый шлейф (от флоппи — дисковода), фанера толщиной 8 мм (20 х20 см), электрические провода, подходящие для паяния (тонкие, гибкие, с хорошим сопротивлением).

led cube

Для начала, на листе фанеры нарисуем квадратную сетку (7 х7) с размером стороны 2,5 см. На пересечениях просверливаем 64 отверстия размером, соответствующим размеру светодиода (примерно 5 мм). Эта доска послужит основой для всех спаянных светодиодов. Благодаря твердой основе светодиоды будут размещены и совмещены идеально. Вставляем светодиоды в отверстия. Как уже говорилось, отрицательные контакты на каждом уровне должны быть соединены, поэтому необходимо согнуть отрицательную ножку светодиода таким образом, чтобы она совпала с соединительной сеткой.

led cube

Как только будут готовы 8 слоёв необходимо соединить их вместе. Для этого приготовим 64 провода длиной порядка 20 см. Помещаем верхний слой на фанеру таким образом, чтобы светодиоды совпали с отверстиями. Присоединяем приготовленные провода к отрицательным контактам светодиодов. После того, как первый уровень готов, приступаем к соединению контактов следующего уровня. В качестве прослоек можно использовать 4 деревянные дощечки толщиной 1,5 см, которые поддержат неприкреплённый слой пока ведётся пайка. Очень важно на данном этапе убедиться в работоспособности каждого светодиода, так как в дальнейшем заменить его будет сложно.

led cube

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

led cube

led cube

Для создания управляющего контура необходимо: 8 восьмибитных сдвижных регистров для включения — выключения каждой колонки куба, один сдвижной регистр, подсоединённый к 8 NPN транзисторов для включения — отключения слоёв, два разъёма под 40 и 34 пиновые шлейфы, один двухпроводной разъём для соединения параллельного порта.

Напрашивается резонный вопрос, зачем подключать 8 NPN транзисторов к сдвижным регистрам резисторов? Как известно, каждый слой имеет общий «минус». Но проблема заключается в том, что на выходе сдвижных регистров слоя сигнал имеет высокий уровень (логическая единица). Поэтому необходим был компонент, который по сигналу логической единицы включал бы токовый контур. Этим компонентом оказался транзистор. Он работает как выключатель: если на базу подаётся логическая единица, то через коллектор и эмиттер начинает протекать ток.

led cube

Прежде всего, необходимо разместить все компоненты, для оценки занимаемого ими места. Компоненты следует располагать в следующей последовательности: Разъёмы под сдвижные регистры, транзисторы, разъёмы, сопротивления от 100 Ом до 1,5 кОм. Особое внимание требуется уделять соединениям основных компонентов.

led cube

Теперь подсоединим провода к нашему кубу. Необходимо взять 40 и 34 — пиновые шлейфы и обрезать разъёмы с одной стороны. С этой стороны необходимо распустить шлейфы примерно на 10 сантиметров. Эти провода будут присоединены к различным плюсовым и минусовым клеммам куба. Каждая клемма на выходе сдвижного регистра будет подсоединена к целому ряду соединительных разъёмов. Таким образом, первый регистр будет контролировать первый ряд, второй регистр, соответственно, второй и т.д.

led cube

Из доступных нам 74 контактов (40+34), мы будем использовать только 72 (64 колонки и 8 уровней), два контакта останутся свободными. Если у вас нет кабеля для подключения к параллельному порту, можно сделать его самому. Вот его распиновка (необходимо использовать контакты от D0 до D5):

led cube

  • D0 —> входа сдвижных регистров колонок
  • D1 —> сброс сдвижных регистров колонок
  • D2 —> счетчик сдвижных регистров колонок
  • D3 —> входа сдвижных регистров слоёв
  • D4 —> сброс сдвижных регистров слоёв
  • D5 —> счетчик сдвижных регистров слоёв

Внимание: при неправильном расключении прилагаемое ПО работать не будет.

led cube

Теперь примемся за основание куба, в которое будут спрятаны управляющие элементы и кабели. Для этого нам понадобится одна деревянная табличка размером 20x20 см, две таблички 20x6,8 см, две таблички 21.6x7,6 см и примерно 25 шурупов или гвоздей. Собираем наши таблички в форме короба и готовимся их соединить. Перед тем, как вкручивать шурупы необходимо промазать рёбра клеем, для того, чтобы мы могли в дальнейшем их выкрутить, не разбирая коробки. Верхом короба будет служить наш куб. В принципе вместо шурупов можно использовать маленькие гвозди, однако достать их в дальнейшем будет намного сложнее. Как только высохнет клей, шурупы (или гвозди) можно удалить, а отверстия замазать древесной шпаклёвкой.

led cube

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

led cube

led cube

Программная часть

Управляющая программа разработана в среде Visual Basic. Кроме этого необходимо поместить библиотеку inpout32.dll в каталог c:\windows\system32. Что касается работы с параллельным портом, то неплохое пояснение по этому поводу находится
здесь.

В каждый момент времени состояние куба записывается в матрицу StatoCubo. Используя таймер новые события генерируются каждую миллисекунду и состояние, записанное в матрицу, отображается на кубе. Значения, записываемые в матрицу, каждый выбирает по своему усмотрению.

Конечно, можно использовать уже написанный код (ledcube.zip).

  • Gestione led cube 0.5.3 — ручное управление кубом
  • level meter con monoton — MP3 проигрыватель, контролирующий светодиодный куб (визуализация композиции отображается на кубе)
  • inpout32.dll — библиотека для управления параллельным портом

Матрица StatoCubo — состоит из 8 столбцов и 64 элементов. Каждый столбец отображает состояние отдельного слоя, а каждое значение в нём показывает состояние отдельных светодиодов: 1 — включен, 0 — выключен.

  • The ScriviCubo — эта функция вызывается по таймеру, для передачи данных с матрицы кубу.
  • The ClokkaLivello — эта функция передаёт сигнал счёта на сдвижные регистры таким образом, чтобы бит включения перемещался с одного уровня на другой.
  • The ClearAll — эта функция включает сброс обоих сдвижных регистров. Куб при этом будет полностью потушен.
  • The Aspetta — функция используется для задержки обновления состояния какого либо слоя.

Здесь представлен код программы:

Public Declare Function Inp Lib «inpout32.dll» Alias «Inp32» (ByVal PortAddress As Integer) As Integer

Public Declare Sub Out Lib «inpout32.dll» Alias «Out32» (ByVal PortAddress As Integer, ByVal Value As Integer)

'--------------------------COSTANT FOR LPT1 ADDRESS--------------------------------

Public Const IndirizzoData As String = «&H378» 'РЕГИСТРЫ ДАННЫХ: 8 bit

'-------------------------------------------------------GLOBAL VARIABLES----------------------------------------------------

Public StatoCubo(1 To 8, 1 To 64) As Integer 'переменная содержит данные о состоянии куба

---------------------------------------------------------FUNCTIONS--------------------------------------------------------

Public Function ScriviCubo(NumeroCicli As Integer) 'функция, используемая для передачи состояния из матрицы StatoCubo непосредственно кубу

Dim ByteLpt As Byte

Dim ContaLivelli As Integer

Dim ContaLed As Integer

Dim ContaCicli As Integer

For ContaCicli = 1 To NumeroCicli

For ContaLivelli = 1 To 8

clear pins (xx 01x _1_)

For ContaLed = 64 To 1 Step —1 'For ContaLed = 1 To 64

'СДВИЖНЫЕ РЕГИСТРЫ СЛОИ:

'MSB (D5) = 0 —-> отключение счётчика

'CENTRAL (D4) = 1 (valore=16)--> отключение счётчика

'LSB (D3) = не важно

'СДВИЖНЫЕ РЕГИСТРЫ СВЕТОДИОДЫ:

'MSB (D2) = 0 —-> отключение счётчика

'CENTRAL (D1) = 1 (valore=2)--> отключение счётчика

'LSB (D0) = StatoCubo(ContaLivelli, ContaLed)

ByteLpt = (0 + 16 + 0) + (0 + 2 + StatoCubo(ContaLivelli, ContaLed))

Call ClokkaLed(ByteLpt) 'передача значения функции, которая включает счётчик для сдвижных регистров колонок

Next ContaLed

'СДВИЖНЫЕ РЕГИСТРЫ СЛОИ:

'MSB (D5) = 0 —-> отключение счётчика

'CENTRAL (D4) = 1 (valore=16)--> отключение счётчика

'LSB (D3) = (if layer = 1--> 1(value=8); if layer <> 1--> 0) —-> устанавливает 1 только один раз

'СДВИЖНЫЕ РЕГИСТРЫ СВЕТОДИОДЫ:

'MSB (D2) = 0 —-> отключение счётчика

'CENTRAL (D1) = 1 (valore=2)--> сброс отключен

'LSB (D0) = не важно

If ContaLivelli = 1 Then 'если устанавливается 1 на первый слой сдвижного регистра, то в дальнейшем будет передаваться только данные счёта

ByteLpt = (0 + 16 + 8) + (0 + 2 + 0)

Else

ByteLpt = (0 + 16 + 0) + (0 + 2 + 0)

End If

Call ClokkaLivello(ByteLpt) 'передача данных функции передающей сигнал счётчика к сдвижным регистрам слоёв

Call Aspetta(60000) 'вызывается для задержки (куб останавливается и мигает от 60.000 до 70.000 циклов)

Next ContaLivelli 'перезапуск цикла для установки значений на следующий слой

Call ClearAll 'вызывается для сброса всех сдвижных регистров

Next ContaCicli

End Function

Public Function ClokkaLed(Valore As Byte)

Out Val(IndirizzoData), Val(Valore) 'счётчик ОТКЛЮЧЕН

Out Val(IndirizzoData), Val(Valore + 4) 'счётчик ВКЛЮЧЕН

End Function

Public Function ClokkaLivello(Valore As Byte)

Out Val(IndirizzoData), Val(Valore) ' счётчик ОТКЛЮЧЕН

Out Val(IndirizzoData), Val(Valore + 32) ' счётчик ВКЛЮЧЕН

End Function

Public Function ClearAll()

Dim ByteLpt As Byte

'сброс на всех сдвижных регистрах (значение=0) (xx x0x x0x)

ByteLpt = 0 '00 000 000

Out Val(IndirizzoData), Val(ByteLpt)

End Function

Public Function Aspetta(Ncicli As Long) 'используется для задержки цикла обновления на слое

Dim Contatore As Long

Dim Contato As Long

For Contatore = 0 To Ncicli

Contato = Contatore

Next Contatore

End Function

Видео можно посмотреть Сдесь

Категория: Внешнего вида | Добавил: Frodo91
Просмотров: 9425 | Загрузок: 0 | Комментарии: 3 | Рейтинг: 4.4/5 |
Всего комментариев: 3
1 LED-Color Светодиоды  
0
Светодиодная подсветка автомобилей, декоративная подсветка потолка, Светодиодные ленты, светодиодные лампы, Led лампы, энергосбережение. www.led-color.ru

2 Кика  
0
А накроются несколько светодиодов - заманаешься ремонтировать... н-да...

3 Ваня Пупкин  
0
Продам, предлагаю
3D светодиодный куб 16*16*16
Продаю 2 куба в транспортном кейсе(б/у 1500000руб) Светодиодный куб А-16

и один А-08 новый в темном стекле 12000 рублей
Светодиодный куб А-08 http://ledcub.ru/svetodiodnyi-kub-a08/
http://ledcub.ru/svetodiodnyi-cub-a16/

Есть дополнительные контроллеры для управления А-16 онлайн

возможен торг

8-916-171-07-27
info@ledcub.ru

Цена: 150 000 Руб.

Город: Москва

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика


Created by Zaga © 2025
psp темы программы  PC моддификации игры бесплатный софт   xbox 360 инструкции игры