Светодиодный куб 8х8х8, интересно и красиво

в 10:42, , рубрики: arduino, LED, БГУИР, ВМСиС ЭВМ, схемотехника

Введение

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

Забегая вперёд, хочется сказать о том, что не нужно думать об объёме работы как о чём-то колоссальном. Напротив, делать совсем пришлось совсем немного, а вот те, кто думают: " Ха, я сделаю это за пару дней", — приготовьтесь к обратному. Да и сам процесс вовлекает в работу не хуже написания какого-нибудь программного кода…

Наблюдая за маленькими работами, размером 3х3х3, и 4х4х4, и 5х5х5, я потихоньку понимал, что чем больше — тем лучше.

Milestone #1 :

Если вы до этого не работали с паяльником, для начала осознайте что нужно будет припайвать все ножки светодиодов, это 2*512, не так-то мало. Поэтому потренируйтесь на каких-нибудь кошках.

В интернете полно инструкций на эту тему. Но от начала до конца я увидел кажется только на instructables.com, и сразу скажу, как-то там слишком подробно в плане всего. Использовал лично я компонентов в раза два меньше. Естественно комплектация получилась попроще. В итоге для нашей маленькой игрушки нам понадобится:

— 512 светодиодов (6$ — aliexp)
— 5 специальных микросхем для светодиодов STP16CPS05MTR (9$ — aliexp)
такие детали выгоднее брать партиями естественно
— 8 BD136 pnp транзисторов (отечественные аналоги также подойдут)
— 5 1кОм резисторов (рабочая мощность 2 W)
— 5 10мкФ конденсаторов (рабочее напряжение 35-50 V)
— соединительные провода (около 10 м вышло, учитывая неудачи), припой и все, кто по-кайфу

Время приступить к изготовлению макета

Берем дрель, линейку, делаем сеточку 8х8 (главное не сделайте 8х9, как я) на чём угодно, будь то пенопласт, деревянная доска или что-то ещё. И аккуратно сверлим дырочки для светодиодов.

image

Milestone #2 :
Ключевое слово — «аккуратно», пару миллиметров влево или вправо, и у вас уже будет кривой куб в итоге.

После того, как этот шаг выполнен, вставляем светодиоды в ячейки и соблюдаем следующее правило:

а) Все аноды должны быть слева, а катоды справа. Или наоборот. Как вам удобнее.
б) Самый первый ряд сверху должен содержать светодиоды под углом:

image

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

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

Итог первого слоя

image

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

image

Соединяем несколько слоёв

image

Milestone #3:

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

Когда ты немножко устал

image

Итак, припаяв 64 провода к анодам, которые у нас получились «на дне», можно приступать к самой электронной схеме.

image

Видим, что выходы наших микросхем по обе стороны переходят в общие аноды колонок куба, а в 5-ой мы мультиплексируем через транзисторы управление слоями. Вроде бы все не сложно: подаётся сигнал на определённые колонки и слои, и мы получаем пару светящихся светодиодов.

На деле это работает так:

image

Имеется 3 входа: тактирование, данные и защёлка. Когда отработалось 8 битов, идет защелка, и данные помещаются в регистр. Т.к. у нас микросхемы выполнены на сдвиговых регистрах, то для того, чтобы отрендерить 1 раз наш кубик разными битами информации, нам нужно записать 1 байт (8 битов с номерами слоев, на которые подавать напряжение), далее будут идти пустые данные, т.к. для пятого чипа у нас левые пины ни к чему не подсоединены. Далее мы записываем по 1 байту для каждой из группы из восьми колонок. Соответствующий бит будет определять, которая колонка должна гореть, и где это пересекается с активированным слоем, светодиод на их пересечении и должен получить напряжение.

Ниже представлена схема из даташита разработчика для общего ознакомления:

image

Как мы будем записывать 1 байт данных:

void CUBE::send_data(char byte_to_send){
    for(int i = 0; i < 8; i++){
        if(byte_to_send & 0x01<<i){
            digitalWrite(SDI, HIGH); // согласно тайминговой диаграмме сначала активное состояние на линии данных
        }
        digitalWrite(CLK, HIGH); // затем на линии тактирования
        digitalWrite(SDI, LOW); 
        digitalWrite(CLK, LOW);  
    }  
}

void CUBE::latch(void){
    digitalWrite(LE,HIGH); // и точно также мы сделаем с операцией защелкивания.
    digitalWrite(LE,LOW);    
}

Использовал Arduino UNO (взял попользоваться), но здесь подойдет вообще любая модель. И nano, и mini, поскольку используются только 3 цифровых входа и vcc + gnd.

Отдельно позаботьтесь о блоке дополнительного питания (я использовал адаптер 12V 2A), для отображения всех слоев кажется ток именно такой силы и нужен.

Весь исходный код в виде скетча для Arduino будет здесь.

  • Такую вещь можно сделать самому за неделю, главное купить все компоненты;
  • Можно поставить доп. модуль часов реального времени, и этот куб будет работать без подсоединения к ПК;
  • Можно, конечно, кастомизировать данный предмет различными кнопочками и радиоуправлениями, но я не стал;
  • Потренеровавшись на таком варианте «попроще», планирую в скором времени собрать RGB куб.

Выражается огромная благодарность автору данной идеи и духовному лидеру Nick`у Shulze. Материалы взяты с сайта hownottoengineer.com. Всем удачи и успехов во всех творческих начинаниях!

Автор: zhela

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js