Если вы баловались с некоторыми начинающими проектами Arduino, но ищете что-то немного постоянное и на совершенно ином уровне удивительного, то скромный светодиодный куб 4 x 4 x 4 — естественный выбор. Конструкция намного проще, чем вы думаете, и используя мультиплексирование, мы можем управлять всеми светодиодами прямо с одной платы Arduino Uno. Это отличная практика пайки, и общая стоимость компонентов не должна превышать 40 долларов.
Сегодня я подробно расскажу о конструктивном аспекте и предоставлю некоторое программное обеспечение для его работы, которое будет выглядеть впечатляюще и научит вас основам.
Тебе понадобится
-
, но это излишне сложно.
Чтобы управлять всеми этими светодиодами всего за 20 контактов, мы будем использовать метод мультиплексирования. Разбивая куб на 4 отдельных слоя, нам нужны только управляющие контакты для 16 светодиодов — поэтому, чтобы зажечь конкретный светодиод, мы должны активировать как слой, так и управляющий контакт, что дает нам общее требование 16 + 4 контакта. Каждый слой имеет общий катод — отрицательную часть цепи — так что все отрицательные ветви соединены вместе и подключены к одному выводу для этого слоя.
На анодной (положительной) стороне каждый светодиод будет подключен к соответствующему светодиоду в слое над и под ним. По сути, у нас есть 16 столбцов положительных ног и 4 слоя отрицательных. Вот несколько трехмерных изображений соединений, которые помогут вам понять:
строительство
Поскольку мы не будем использовать цельнометаллическую конструкцию для пайки, мы хотим, чтобы все ножки светодиодов перекрывались примерно на четверть и придавали жесткость конструкции. Сложите катод ваших светодиодов — сторону с плоской выемкой в голове и более короткую ногу — над, как показано на рисунке. (На самом деле не имеет значения, сгибаете ли вы его влево или вправо, если вы последовательны и никогда не касаетесь анода)
Первая важная часть этого проекта — изготовление деревянной фрезы. Это удержит слой светодиодов, пока вы спаяете ноги вместе, поэтому он должен быть точным и не слишком рыхлым. Используя сверло того же размера, что и ваши светодиоды, отмерьте, а затем просверлите матрицу 4 × 4 равноотстоящих отверстий. Имейте в виду, что вы хотите, чтобы около четверти ноги пересекались с соседом, и используйте настоящую линейку. Проверьте каждое отверстие, чтобы убедиться, что светодиод плотно прилегает, но не настолько плотно, что вы не сможете его снова вытащить или у вас возникнут проблемы при попытке удалить полностью припаянный слой.
Припой катодов из 4 рядов светодиодов. Будьте осторожны, чтобы не перегореть светодиоды — вам нужен хороший горячий утюг, а также входить и выходить. Вот мои первые четыре ряда завершены.
Теперь, чтобы усилить жесткость слоя, обрежьте и спаяйте два прямых кусочка проволочной проволоки с обоих концов, убедившись, что они соединяются с каждым рядом. Это ваш первый слой завершен. Оставьте все лишние ноги торчащими на бок.
Сейчас самое время протестировать — просто загрузите стандартное приложение Arduino blink и, подключив резистор, подключите заземление к рамке слоя и по очереди нажмите положительный вывод на каждый светодиод.
Надеюсь, они все загорятся. Если нет, убедитесь, что вы не пропустили где-нибудь паяное соединение, и при необходимости замените светодиод.
Удалите этот слой из джиг и повторите процесс Еще 3 раза.
Не беспокойтесь, если ваша пайка не идеальна — до тех пор, пока она не разорвется и соединение будет надежным, это не повлияет на конечный продукт. Признаюсь, моя пайка была довольно безнадежной, мой зажим был снят, и все это напоминало Пизанскую башню. Тем не менее, я горжусь готовым кубом, и когда светятся светодиоды, вы все равно не будете смотреть на паяные соединения!
Объединение слоев
Как только у вас будет 4 законченных слоя, вы захотите соединить все вертикальные ноги вместе. Я обнаружил, что это самая сложная часть сборки, и чтобы помочь процессу, я вырезал стояк из карты.
Это поддерживало слои на соответствующей высоте, но многие ноги все еще не совпали идеально — для этого я использовал несколько зажимов для крокодилов, чтобы удерживать их на месте.
1-ая глупая ошибка, которой следует избегать
Только после завершения полного слоя я понял, что мой стояк карты застрял на месте, поэтому мне пришлось его вырезать! Не делайте ту же ошибку, что и я, — сделайте стояк длиннее на стороне и соедините кусочки карты за пределами куба, чтобы после завершения слоя можно было разобрать стояк и вытащить карту.
2-я глупая ошибка, которой следует избегать
Очевидно, не припаивайте вертикальную ножку к катодной раме. Вертикальные ножки должны соединяться только с другими вертикальными ножками, и ничем иным.
Опять же, тестируйте после того, как каждый слой был прикреплен. Протестируйте все слои, фактически, только касаясь положительного провода к кончику самого верхнего слоя, тем самым гарантируя, что вы получите хороший контакт, проходя через все слои.
Когда все 4 слоя были спаяны вместе, я немного прибрался — я оставил одну ногу вытянутой из каждого слоя в виде ступеньки — это было бы опущено на доску позже. Другие посторонние кусочки металлического каркаса и ножек были отрезаны. Очевидно, что не обрезайте никакие вертикальные ножки — мы должны поместить их в нашу макетную доску.
Крепление к доске
Помните, когда я говорил, что закрепление каждого слоя на себе было самой сложной частью? Я врал. Попытка вставить 16 светодиодных ножек в крошечные отверстия на макетной плате на самом деле сложнее. Самым простым способом, который я нашел, было проколоть 4 за раз, закрепить их внизу зажимами крокодила, а затем перейти к следующему ряду 4. Используйте маркерную ручку, чтобы заранее разметить расстояние, если это поможет.
Оглядываясь назад, я бы на самом деле поместил сначала резисторы в макетную плату. На самом деле я спаял все ножки куба с доской, а затем попытался аккуратно протолкнуть резисторы между ними. Учитесь на моей ошибке и поместите ваши резисторы в первую очередь.
Я попытался распределить их одинаково, шагая так, чтобы я мог использовать одну целую сторону куба для всех последних соединений с Arduino. Вот схема, с которой я пошел:
Для четырех отрицательных слоев я уронил один провод вниз от каждого слоя, а затем просто оттащил их в сторону, например так:
Наконец, я добавил несколько соединительных проводов, которые затем можно было вставить в соответствующие контакты Arduino. Используйте самый длинный вид, который у вас есть. Обратите внимание, что я испортил порядок местами из-за плохого планирования. Каждый ряд светодиодов был цветной.
Это оно. Законченный!
Программирование вашего куба
Я знаю, что вы не можете дождаться, чтобы запустить эту вещь, поэтому подключите 4 отрицательных слоя в Аналоговый ввод / вывод порты A2 (нижний слой) через A5 (верхний слой) (они также могут действовать как цифровой ввод / вывод). Затем подключите 16 светодиодных управляющих контактов, начиная с +1 в дальнем правом углу в цифровой ввод / вывод порт 0, с +15 а также +16 вдаваясь в аналог А0 и А1. (Не используйте AREF и GND)
Загрузите демонстрационные образцы и код от обучаемого пользователя forte1994. Он также предоставил полезный онлайн-инструмент для разработки шаблонов байтов для настройки собственной последовательности. Вот видео этого кода в действии на моем кубе (я установил скорость на 5 вместо 20 по умолчанию).
Конечно, это не единственный способ программирования вашего куба, поэтому позвольте мне потратить несколько минут на обучение основам программирования собственных шаблонов, а не на воспроизведение предустановленных шаблонов, как в приведенной выше демонстрации.
Есть несколько вещей, которые вы должны знать, пытаясь запрограммировать свой куб:
- Для адресации одного светодиода используется плоскость (слой) с номерами 0–3 и выводом светодиодов с номерами 0–15. Поверните плоскость на НИЗКИЙ выход (так как это отрицательный участок) и номер контакта светодиода HIGH (положительный участок), чтобы активировать светодиод.
- Перед тем, как активировать один светодиод, убедитесь, что все остальные плоскости выключены — это означает, что установите их на ВЫСОКИЙ выход. Невыполнение этого приведет к тому, что будет гореть столбец светодиодов, а не один светодиод.
Имея это в виду, я сделал две очень простые программные последовательности для вас — скачайте код отсюда. Первый просто зажигает каждый светодиод последовательно, последовательно. Для этого мы используем два цикла for, перебирая каждый слой и каждый контрольный вывод.
Второй случайный цикл (вам нужно закомментировать первый и включить его в основном цикле, чтобы проверить его). Он просто выбирает случайный слой и случайный управляющий штырь, мигая их включением и выключением.
Резюме
Не пугайтесь этой сборки — мне серьезно не хватает навыков пайки, и я справился с этим хорошо (я думаю?). Общее время сборки составило около часа в день на неделю. В следующий раз я попытаюсь научить вас более амбициозному программированию для куба, поэтому я надеюсь, что вы присоединитесь ко мне в создании собственного куба на этой неделе и загрузке нового кода на следующей неделе — и если вы сделаете свой собственный потрясающие приложения или последовательности, пожалуйста, загрузите их в Pastebin и дайте нам знать в комментариях!