Введение
Идея эта в голову пришла спонтанно, до осени этого года я и догадываться не мог, что люди занимаются чем-то подобным в жизни. На самом деле про то, что такие «кубики» существуют, рассказал преподаватель схемотехники и предложил взять данную тему в качестве курсового.
Забегая вперёд, хочется сказать о том, что не нужно думать об объёме работы как о чём-то колоссальном. Напротив, делать совсем пришлось совсем немного, а вот те, кто думают: " Ха, я сделаю это за пару дней", — приготовьтесь к обратному. Да и сам процесс вовлекает в работу не хуже написания какого-нибудь программного кода…
Наблюдая за маленькими работами, размером 3х3х3, и 4х4х4, и 5х5х5, я потихоньку понимал, что чем больше — тем лучше.
В интернете полно инструкций на эту тему. Но от начала до конца я увидел кажется только на 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, как я) на чём угодно, будь то пенопласт, деревянная доска или что-то ещё. И аккуратно сверлим дырочки для светодиодов.
После того, как этот шаг выполнен, вставляем светодиоды в ячейки и соблюдаем следующее правило:
а) Все аноды должны быть слева, а катоды справа. Или наоборот. Как вам удобнее.
б) Самый первый ряд сверху должен содержать светодиоды под углом:
По такому принципу соединяем катоды ( — ). Там, где отмечено пунктиром — прикрепите какую нибудь проволоку, чтобы слой держался с двух сторон крепко.
Держа эту нежную прослоечку, вам может показаться, что она вот-вот может развалиться, но на самом деле, когда вы начнёте скреплять слои, потом эту конструкцию можно будет спокойно бросать на пол, и скорее всего ничего не развалится.
Итог первого слоя
Перед тем, как начинать припаивать второй слой, нужно взять и загнуть все аноды следующим образом:
Соединяем несколько слоёв
Когда ты немножко устал
Итак, припаяв 64 провода к анодам, которые у нас получились «на дне», можно приступать к самой электронной схеме.
Видим, что выходы наших микросхем по обе стороны переходят в общие аноды колонок куба, а в 5-ой мы мультиплексируем через транзисторы управление слоями. Вроде бы все не сложно: подаётся сигнал на определённые колонки и слои, и мы получаем пару светящихся светодиодов.
На деле это работает так:
Имеется 3 входа: тактирование, данные и защёлка. Когда отработалось 8 битов, идет защелка, и данные помещаются в регистр. Т.к. у нас микросхемы выполнены на сдвиговых регистрах, то для того, чтобы отрендерить 1 раз наш кубик разными битами информации, нам нужно записать 1 байт (8 битов с номерами слоев, на которые подавать напряжение), далее будут идти пустые данные, т.к. для пятого чипа у нас левые пины ни к чему не подсоединены. Далее мы записываем по 1 байту для каждой из группы из восьми колонок. Соответствующий бит будет определять, которая колонка должна гореть, и где это пересекается с активированным слоем, светодиод на их пересечении и должен получить напряжение.
Ниже представлена схема из даташита разработчика для общего ознакомления:
Как мы будем записывать 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