Site Loader

Содержание

Светодиодный куб 4x4x4 и Trema Shield для Ардуино

Всем доброго времени суток!
Сегодня хочу рассказать Вам о Kit наборе из Китая, который позволяет собрать светодиодный куб 4х4х4 светодиода.
Всем кому интересно прошу под кат.
Давно любовался в интернете видео роликами разных кубиков, красиво смотрятся, даже чем то завораживает, особенно большие, но собрать все самому с нуля руки так и не дошли. А тут все совпало, общался с продавцов по поводу покупки ардуины, а он предложил взять вот такой маленький набор посмотреть, и вот набор пред моим несменным контролером.

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

Плата подробно


Набор реально может собрать даже ребенок без помощи взрослых.
Светодиодов, резисторов и контактов производитель положил в набор с запасом, так что после сборки у меня еще кое-что осталось.
Начнем сборку
После покупки продавец выслал мне ссылку на инструкцию и текстовый скетч для Ардуино. Это очень хорошо потому как в комплекте к набору никакого мануала не было.
Первое что нужно сделать, это закрепить будущие держатели для светодиодов, производитель предлагает использовать для этого вот такие зажимы.

Согласно инструкции их нужно не просто покусать по одному, но и полностью очистить от пластика. Поначалу я решил, что очистка от пластика это лишнее, и я их просто покусаю осторожно и все, но, увы, как не старался, не получилось, пластик слишком хрупкий.

Так что в итоге пришлось доламывать пластмассу и очищать все ножки от нее.

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

Теперь можно перевернуть плату и запаять все остальное, а осталось только две постельки для микросхем, четыре резистора и пара гребенок для соединения с Arduino Uno.
Как по мне паять гребенки лучше всего вставив весь шилд в ардуино, так гораздо проще, чем выравнивать каждую гребенку отдельно. Главное только не перегреть.

Первый этап сборки закончен, на все ушло примерно минут 30.
Вот так плата смотрится на Arduino.

Второй этап сборка куба светодиодов.

Для сборки матриц светодиодов производитель по инструкции рекомендует сначала сделать вот такой макет.

Который должен облегчить сборку. Но почему-то показалось, что это лишнее и что 64 светодиода я и так спаяю. Спаять то я спаял, но, наверное, лучше бы таки сделал макет, было бы гораздо проще.
Итак, первое, что нужно отогнуть на всех светодиодах катоды (короткая ножка) на угол 90 градусов. Ну, тут все просто тонкие плоскогубцы, зажимаем впритык к корпусу и гнем.

Теперь отогнутые ножки нужно спаять друг с другом (как на фото) получив ряд.
Для этого я решил воспользоваться уже собранной платой.

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

В итоге должна получиться вот такая матрица.

После того как будут спаяны все 4 матрицы их необходимо собрать между собой в куб. Сделать это можно используя свободные катоды в каждом из рядов и тонкую проволоку или остатки ножек от резисторов.

В итоге должен получить куб светодиодов, аноды спаяны в столбцы по четыре штуки и вставленный в платы шилда, а катоды спаяны в один по всему уровню. С задней части платы находится дополнительный ряд контактов D16-D19 именно к ним нужно подключить катоды уровней по порядку.

Куда именно подключать первый уровень (в D16 или D19) не так важно, главное, что бы уровни были включены последовательно, например так:D16>1, D17>2, D18>3, D19>4.

Контроль готового изделия.

В итоге на всю сборку конструктора я потратил примерно 3-3,5 часа, думаю, что если бы сделал макет получилось бы быстрее.
Теперь немного о том как это все заставить работать.
В архиве вместе с инструкцией лежит файл arduino库.zip который представляет собой подключаемую к среде разработки Arduino библиотеку, но подключить ее просто так нельзя. Для того что бы студия смогла подключить эту библиотеку нужно удалить иероглифы из имен всех папок внутри архива и из имени самого архива. Проще всего распаковать архив в любую папку и потом отдельно запаковать в ZIP архив папку ICStation_Light_cube со всем ее содержимым, вот она уже подключится к среде Arduino.

Честно говоря, этот пример меня особо не впечатлил, поэтому поискав по интернету, я нашел еще два скетча работающих именно с этим кубом. Увы, код слишком большой и вставить в обзор его нельзя, поэтому даю ссылки на первоисточники.


Небольшое видео демонстрации работы.


Небольшой вывод:
Набор мне понравился, я с удовольствием провел несколько часов с паяльником.
К плюсам в первую очередь стоит отнести его простоту, невысокую цену и возможность не только поупражняться в пайке, но и в дальнейшем потренировать мозги программированием.
К минусам пожалуй стоит отнести необходимость дополнительно покупать плату Arduino UNO и разбираться как с ней работать.

Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

Программирование вашего светодиодного куба Arduino 4x4x4 для создания еще чего-нибудь интересного

На прошлой неделе я построил светодиодный куб

64 светодиода что вы можете программировать для создания фантастических футуристических световых шоу — и я надеюсь, что вы это сделали, потому что это отличный проект, чтобы мотивировать вас и расширить свой набор навыков Arduino. Я оставил вам несколько базовых приложений, чтобы вы могли задуматься, но сегодня я представлю еще несколько кусков программного обеспечения, которое я сделал для куба, вместе с пояснениями кода. Цель этого состоит не только в том, чтобы дать вам несколько более приятных световых шоу для запуска, но и в том, чтобы узнать о некоторых ограничениях программирования куба и изучить некоторые новые концепции программирования в процессе.

Это довольно продвинутая кодировка; вам действительно нужно прочитать все мои предыдущие Учебные пособия по Arduino и руководство для начинающих по Arduino перед настройкой предоставленного кода.

Приложение 1: Mini Snake

Вместо того, чтобы запускать последовательность паттернов в виде змеи, я хотел запрограммировать змею — искусственную, которая делала бы свои собственные случайные выборы и была бы совершенно непредсказуемой. Он ограничен только двумя сегментами, что я объясню позже, и вы можете увидеть демо ниже. Загрузите полный код здесь.

При работе с трехмерным пространством вам нужно 3 координаты для одной точки: ИКС, Y, а также Z.

Тем не менее, в нашем кубе плоскости X и Z представлены светодиодными выводами, в то время как Y непосредственно отображается на плоскости катода. Чтобы облегчить работу с этими координатами и выяснить движение вокруг куба, я поэтому создал новый тип данных (используя struct) для представления одной точки на кубе, которую я назвал «xyz». Он состоит из двух целых чисел: «xz» и «y». С помощью этой структуры я мог бы также представить направление, указанное ниже в нашей специальной (xz, y) системе координат:

Движение Y (вверх, вниз): (xz, y + 1), (xz, y-1)
Z движение (вперед, назад): (xz-1, y), (xz + 1, y)
Движение X (слева, справа): (xz + 4, y), (xz-4, y)

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

Существуют определенные ограничения на движение, а именно то, что координаты Y могут быть только возможными От 0 до 3 (0 — нижний слой, 3 — верхний), а координаты XZ могут быть только От 0 до 15. Дальнейшее ограничение наложено на движение Z, чтобы не «прыгать» сзади на переднюю часть куба, и наоборот. В этом случае мы используем функцию модуля для проверки на кратность 4 и отклоняем эту попытку перемещения. Это логика представлена ​​в действительный () функция, которая возвращает истину, если предложенное направление является приемлемым, и ложь в противном случае. Я добавил еще одну функцию для проверки обратное направление То есть, если змея движется в одном направлении, мы не хотим, чтобы она двигалась назад, даже если в противном случае она является допустимым местом для перемещения — и переехать() функция, которая принимает координату, направление и возвращает новую координату.

XYZ тип данных, действительный (), переехать() а также обратное () все функции можно найти в xyz.h файл в загрузках. Если вам интересно, почему это было помещено в отдельный файл вместо основного файла программы, это связано с некоторыми сложными правилами компилятора Arduino, которые не позволяют функциям возвращение пользовательских типов данных; они должны быть помещены в их собственный файл, а затем импортированы в начале основного файла.

Вернувшись в основной исполняемый файл, массив направлений хранит все возможные движения, которые может сделать змея; мы можем просто выбрать случайный член массива, чтобы получить новое направление. Переменные также создаются для хранения текущего местоположения (сейчас), предыдущего направления и предыдущего местоположения. Остальная часть кода должна быть достаточно очевидна для вас; просто еог петли, и включение и выключение светодиодов. В основном цикле мы проверяем, является ли предложенное направление верным, и если это так, то мы идем этим путем. Если нет, мы выбираем новое направление.

Единственное, на что следует обратить внимание в главном цикле, — это некоторые проверки для исправления найденной мною ошибки, связанной с мультиплексированием: если новое местоположение было в той же плоскости катода или на том же выводе анода, выключение предыдущего светодиода привело бы к тому, что оба погасли. Также в этот момент я понял, что выход за пределы 2-сегментной змеи будет невозможен в моей текущей реализации: попробуйте зажечь 3 светодиода в угловом расположении. Вы не можете этого сделать, потому что при активном 2-х слоях и 2-х контактах светодиодов включится 4 светодиода, а не 3. Это неотъемлемая проблема с нашей конструкцией ограниченного мультиплексированного куба, но не беспокойтесь: нам просто нужно использовать мощность постоянство видения переписать метод рисования.

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

Новый метод Draw, использующий постоянство видения

Прежде всего, новая процедура розыгрыша. Я создал 4 х 16 двумерный массив битов (истина или ложь) для буквального представления состояния светодиодного куба. Процедура отрисовки будет реализовывать постоянство видения, просто перебирая все это и сбрасывая каждый слой в куб на короткое время. Он будет продолжать рисовать себя в текущем состоянии, пока не истечет время обновления, после чего мы передадим управление обратно в главный цикл (). Я сохранил этот раздел кода в этом файле LED_cube_POV, так что если вы хотите просто заняться программированием своих собственных игр и так далее, то можете смело использовать его в качестве основы.

Приложение 2: Игра Жизни

А пока давайте превратим это в базовую версию игры жизни Конвея. Для тех из вас, кто незнаком (попробуйте поискать его в Google, чтобы найти потрясающую анимацию пасхального яйца), Игра жизни Это пример клеточных автоматов, которые создают захватывающую модель эмерджентного поведения, учитывая лишь несколько простых правил.

Это, например, то, как муравьи, кажется, двигаются с интеллектом и разумом улья, несмотря на биологический факт, что они действительно следуют очень основным гормональным правилам. Вот полный код для загрузки: нажмите кнопку сброса, чтобы перезагрузить. Если вы обнаруживаете, что получаете один и тот же шаблон снова и снова, попробуйте удерживать кнопку отдыха дольше.

Вот правила игры жизни:

  • Любая живая клетка с менее чем двумя живыми соседями умирает, как если бы она была вызвана недостаточным населением.
  • Любая живая клетка с двумя или тремя живыми соседями доживает до следующего поколения.
  • Любая живая клетка с более чем тремя живыми соседями умирает, как будто из-за переполненности.
  • Любая мертвая клетка с ровно тремя живыми соседями становится живой клеткой, как будто путем размножения.

Запустите код. В течение 5–10 «поколений» вы заметите, что автоматы, вероятно, остановились, стабилизировавшись на определенной позиции; иногда этот стабильный паттерн меняет местоположение и перемещается по доске. В редких случаях они могут даже полностью вымереть. Это ограничение использования только 4х4х4 светодиодов, но в любом случае это хорошее упражнение для обучения.

Чтобы объяснить код:

  • Вы можете быть незнакомы с тетср () функция. Я использовал это, чтобы сохранить предыдущее игровое состояние, поскольку массивы нельзя просто присваивать друг другу, как обычные переменные — вам фактически нужно скопировать пространство памяти (в данном случае 64 бита).
  • howManyNeighbours () Функция должна быть самоочевидной, но в случае, если это не так — этот метод берет одну координату и проходит через каждого возможного соседа (тот же массив направлений, который мы ранее использовали в приложении snake), чтобы проверить, действительны ли они. Затем он проверяет, были ли эти соседние светодиоды «включены» в предыдущем состоянии игры, и подсчитывает их количество.
  • Основная функция этого приложения Game of Life — progressGame (), который применяет правила автоматов к текущему состоянию игры.

улучшения: Я потратил слишком много времени на это, но вы можете попробовать добавить чек, который автоматически сбрасывает плату после 5 или более поколений одного и того же паттерна. тогда, пожалуйста, дайте мне знать! Я также предложил бы попытаться добавить методологию POV в игру со змеями, чтобы, надеюсь, сделать возможной более длинную змею.

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

Image Credit: декартовы координаты — пользователь Wikimedia Sakurambo

Самый маленький в мире светодиодный куб

Я уверен, что этот светящийся куб самый маленький в мире. Есть кубики поменьше, но они либо одноцветные, либо в них меньше светодиодов (3х3х3).

Мой LED cube меньше 2 см, в нём используется 64 светодиода 3.2×2.7 мм типа SMD RGB LED (Surface Mounted Device, Red+Green+Blue, Light Emitting Diode). Прочитав инструкцию, вы узнаете, как собрать такой куб.

Шаг 1: Материалы для куба

64 x светодиода RGB SMD

Вот светодиоды, которые я использовал в проекте, но вы можете поискать и другие варианты с квадратным профилем. Такой профиль упрощает пайку, позже вы узнаете почему.

Ардуино

Я использовал клон Ардуино Нано. Большинство Ардуино с 16 или более входами\выходами должны подойти. Если вам непривычно модифицировать PORT-команды, то лучше используйте настоящий Ардуино, основанный на ATMega (не используйте ESP8266, Arduino M0, Arduino Due, и т.д.)

Кастомная печатная плата

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

Шаг 2: Спаиваем светодиоды столбиками

Светодиодный куб состоит из 16 столбиков.

Каждый столбик состоит из 4 повёрнутых светодиодов, они расположены таким образом, что запитав любые две из 4 дорожек, вы зажжете всего 1 цвет на одном светодиоде. Ардуино переключается между светодиодами так быстро, что ваши глаза не успевают за этим уследить, и вы думаете, что множество светодиодов горит одновременно.

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

  1. Первые два уровня одинаковы
  2. В третьем уровне есть отверстия, создающие разную глубину

Посмотрите фото и видео для большего понимания.

Как и любой проект по изготовлению светодиодного куба, он трудозатратен, так что я соблюдал все меры предосторожности, чтобы не допустить ошибку и прийти к успеху. Я проверял все светодиоды на каждом шаге, чтобы засечь любую ошибку на ранней стадии.

Шаг 3: Проектирование печатной платы

Первое фото – это нижняя часть проводки на моём кубе обычного размера – там много перемычек, которые не могут закоротить друг друга. Конструкция сложная, но выполнимая при таких размерах.

И я наивно полагал, что и с маленьким кубом смогу сделать также. Тем не менее, несмотря на маленький размер куба, проложить провода для всех 64 диодов понизу печатной платы (и при этом не закоротить их) – вполне реально. Я выучил Eagle CAD (в основном по урокам на Ютуб) и спроектировал свою первую кастомную печатную плату. Это не идеал проектирования, но плата работает.

Шаг 4: Паяем

Расстояние между столбиками составляет около 1 миллиметра! Чтобы столбики не закоротили друг друга, я покрасил соединения лаком для ногтей, так что столбики не замкнут друг друга, даже если будут соприкасаться.

Я решил припаять столбики поверх платы, а не снизу, так как беспокоился, что у меня не получится сохранить их прямоту и ровность по отношению друг к другу. Побочным эффектом такого решения стало то, что мне периодически приходилось лезть носиком паяльника между проводами. Но, несмотря на эту трудность, я считаю, что сделал правильное решение. Сначала я припаял внутренние столбики, а затем начал по кругу проходиться до внешних столбиков.

Шаг 5: Небольшой твик в коде

В моём оригинальном кубе светодиоды были катодными, а здесь оказались анодными! Поэтому пришлось изолировать код, контролирующий светодиоды. Для работоспособности теперь нужно лишь инвертировать биты в файле cubeplex.h.


// Версия кода для катодных диодов (-)
PORTB = pinsB[pin1];
PORTC = pinsC[pin1];
PORTD = pinsD[pin1];

// Модификация для анодных диодов (+)
PORTB = ~pinsB[pin1];
PORTC = ~pinsC[pin1];
PORTD = ~pinsD[pin1];

Оригинальный код вы можете найти здесь, а модификацию найдёте тут.

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

Светодиодный куб 5х5х5 своими руками схема. Светодиодный куб

В проекте предложена конструкция светодиодного куба (LED cube) 4x4x4 стоимостью около 15 долларов.

В кубе использовано 64 зеленых светодиода, которые формируют 4 слоя и 16 колонок. Управление кубом реализуется на базе Arduino. Приведен пример программы для Arduino Uno, в которой реализовано управление каждым отдельным светодиодом из всего массива.

Необходимые детали для проекта

  • 64 светодиода
  • 4 резистора на 100 Ом
  • Коннекторы для распайки
  • Проводники
  • Макетная плата для распайки
  • Коробка
  • Источник питания на 9 В
  • Arduino Uno

Инструменты, которые могут вам пригодиться, приведены на фото ниже.

Формируем основу светодиодного куба

Можете воспользоваться эскизом, который приведен . Распечатайте его и наклейте на картонную коробку. При печати проверьте, чтобы был выставлен фактический размер и горизонтальная ориентация. Карандашом сделайте отверстия в узловых точках. Проверьте, хорошо ли садятся светодиоды в подготовленные отверстия.

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

Возьмите 64 светодиода и проверьте их работоспособность, подключив каждый к пальчиковой батарейке. Это, конечно, скучная процедура, но она необходима. Иначе из-за одного нерабочего светодиода впоследствии может быть куча проблем. Установите 16 светодиодов в отверстия в соответствии со стрелками на распечатке. Красные стрелки соответствуют плюсу (анод), синие — минусу (катод). Все аноды соедините между собой. После этого переверните коробку и вытолкните светодиоды. Выталкивайте аккуратно, чтобы не повредить собранный слой. Все. Первый слой готов. Аналогичным образом формируем еще три слоя. После соединяем четыре получившихся слоя с помощью свободных катодов. Советую соединять контакты начиная с центра и перемещаясь к периферии. Светодиодный куб начинает принимать необходимые очертания!

Установка светодиодного куба

Сделайте разметку на макетной плате с помощью маркера. Учтите, что размеченный прямоугольник должен быть немного меньше коробки, на которой будет установлен ваш куб. После разметки сделайте небольшой паз вдоль линии будущей грани и аккуратно отломайте ребра макетной платы. Сделайте 20 отверстий на верхней части вашей коробки для куба. Можно разметить места для сверления по соответсвующим отверстиям макетной платы.

Подключаем светодиодный куб

Сначала разделите вашу рейку коннекторов на три части таким образом, чтобы они подошли к цифровым и аналоговым пинам Arduino Uno. Зачистите и установите на вашей маетной плате в коробке 16 проводов для цифровых входов (рядов). 4 провода от аналоговых входов подключите с использованием резисторов на 100 Ом. Теперь переходите к подключению концов проводов к трем рейкам коннекторов. Подключение реализовано таким образом, что есть возможность управлять светодиодами вдоль трех осей. Колонки соответсвуют осям X и Y. Плюс к этому, благодаря четырем слоям мы получаем координату Z. Если вы посмотрите вниз с угла светодиодного куба, первый квадрант будет соответствовать обозначению (1, 1). Таким образом, каждый светодиод может быть инициализирован по подобной же методике. Давайте рассмотрим пример. Посмотрите на рисунок выше и найдите светодиод A(1,4). «A» означает, что это один и первых слоев, а «(1,4)» соответсвтует координатам X=1, Y=4.

Схема подключения

Ряды/колонки
Слои

[Пины для слоев]

Подключаем источник питания для Arduino

Для питания платы можно использовать отдельный адаптер на 9 вольт, 1 ампер. Можно использовать переходник для батарейки типа крона и питать от нее. В любом случае, вам понадобится сделать еще одно отверстие для провода питания. Когда будете делать отверстие, предусмотрите его размер немного большим, чем сам коннектор.

В общем то все, что вам после этого останется — загрузить скетч на Arduino и наслаждаться результатом:

Ваш куб готов!

Видео собранного светодиодного куба 4x4x4

  • Питание модуля производится от модуля Arduino Nano или от внешнего блока питания (5 вольт) подключаемого к разъему на плате управления.
  • Как оказалось схемы различных производителей Arduino-подобных модулей отличаются от оригинальных Arduino NANO. Мы учли это при разработке предлагаемого расширения. Оригинальный микроконтроллерный модуль устанавливается в левые разъемы, а, например, модуль c торговой маркой DFRduino в правые разъемы. Отличия между модулями можно найти в нашей схеме.
  • Практически любой инфракрасный пульт в доме может управлять вашим кубом.

Дополнительная информация

Краткое описание библиотек для LED CUBE 4x4x4

Специально для этого проекта нами была создана библиотека для языка WIRING.
MP1051.Init() — начальная инициализация
MP1051.Brightness(B) — установка яркости свечения светодиодов, B=0…32
MP1051.Set(D1,D2,D3,D4,D5,D6,D7,D8) — управление светодиодами послойно, D1-D2 — первый слой (A1), D7-D8 — 4-й слой (A4)
MP1051.IR(T) — ожидание команды ИК-пульта в течении T ms. Возвращает: 0 — не было команды, 1 — принята команда, 2 — принят повтор
MP1051.IRAdr() — возвращает адрес ИК-посылки
MP1051.IRData() — возвращает команду ИК-посылки

Порядок сборки светодиодного куба 4х4х4.

В первую очередь необходимо подготовить выводы светодиодов.
Шаг 1. Короткий отгибаем на 90 градусов.
Шаг 2. С помощью пинцета формуем короткий так, чтобы на 3 мм. увеличился шаг между выводами.
Шаг 3. Теперь, в сторону отгибаем длинный.

Для удобства последующих действий найдите у себя 4 винта М3 с гайками и закрепите их в угловых отверстиях платы управления. Ну, а если винтов нет, то вас спасут четыре одинаковые бельевые прищепки, прицепленные по углам платы.

Установите в отформованные светодиоды в отверстия платы. Сначала первый ряд.

Соедините пайкой длинные выводы.

Затем второй слой.

Спаяйте длинные во втором ряду. В третьем и четвертом.

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

Получился один слой 4 х 4.

Можно его выровнять дополнительными отрезками провода.

Делаем четыре слоя. Первый слой аккуратно устанавливаем на плату управления, вставляя выводы светодиодов в отверстия L11-L14, L21-L24, L31-L34, L41-L44. В первую очередь припаиваем угловые выводы. Выравниваем слой в одной плоскости по углам, прогревая паяльником выводы и двигая их вверх-вниз (если нужно). Как только вы убедились, что угловые светодиоды находятся в одной плоскости, припаяйте остальные выводы.
Второй слой припаивается к первому. Короткий вывод к короткому. Смотрите на рис.10 с правой стороны, в крайнем столбике хорошо видны места пайки.

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

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

Наблюдая за маленькими работами, размером 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, как я) на чём угодно, будь то пенопласт, деревянная доска или что-то ещё. И аккуратно сверлим дырочки для светодиодов.

Milestone #2:

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


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

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

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

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

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

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

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

Milestone #3:

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

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

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

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

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

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

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

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

Void CUBE::send_data(char byte_to_send){ for(int i = 0; i Использовал Arduino UNO (взял попользоваться), но здесь подойдет вообще любая модель. И nano, и mini, поскольку используются только 3 цифровых входа и vcc + gnd.

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

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

В данной статье я пошагово расскажу об изготовлении 3D LED куба, с размерностью 3х3х3. Управление LED осуществляется при помощи контроллера Arduino.

Отличительной особенностью данного проекта от других является:

Небольшое число дополнительных компонентов, подключается напрямую к Arduino без использования различных мультиплексоров и т.п.

Простая для повторения принципиальная схема с множеством фотографий и разьяснений.

Использование универсальной библиотеки, что значительно упрощает написание программы.

Итак, нам понадобится:

  • макетная плата
  • 3 NPN транзистора (2N2222, 2N3904, BC547 и т.п.)
  • 12 резисторов (~220 Ом и 22 кОм)
  • 13 коннекторов (папа или мама)
  • 27 светодиодов (LED)
  • соединительные провода


А сначала, немного видео работы устройства:

Итак, посмотрели видео? Ну а теперь поехали!

Шаг 1. Подготовка LED

Этот шаг практически ни чем не отличается от предыдущего проекта , за исключением соответственно размерностью. Куб 4х4х4 более сложен, т.к. требует введения в схему дополнительный элементов. У нас же куб будет с 3 уровнями, по 9 LED в каждом.

В каждом наборе из 9-ти LED, все катоды соединены между собой, т.е. подключены по схеме с общим катодом (минус). Далее, наборы мы будем называть «уровнями». Каждый LED соединен анодом с LED другого уровня (нижестоящими или вышестоящими). Далее, по тексту я буду называть это колоннами, т.е. в одной колонне соединено 3 светодиода анодами, а на одном уровне соединено 9 LED катодами.

Как видно на фото выше, для изготовления куба я использовал старый шаблон от проекта 4х4х4 светодиодного куба. Отверстия в дереве просверлены под головку светодиода, расстояние между отверстиями составляет приблизительно 15мм.

После того, как приспособа сделана, пора приступить к формовке выводов LED. Катоды всех светодиодов необходимо аккуратно согнуть на 90 градусов. Направление изгиба вывода должно быть одинаковым у всех LED. Как определить где катод, а где анод у светодиода читайте здесь или здесь.

Шаг 2. Сборка куба

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

При помощи «крокодилов» зафиксируйте ножки LED и спаяйте их вместе. В самом конце припаяйте центральный LED. После того, как один уровень закончен, можно проверить правильность подключений LED при помощи батарейки или мультиметра. Т.к. потом, что-либо отпаять будет очень сложно, особенно если это центральный LED.

Таким образом сделайте все три уровня. После этого, необходимо установить и припаять уровни друг над другом. При этом важно соблюсти заданное расстояние. Если в приспособлении расстояние между светодиодами было 15мм, то и расстояние между уровнями у вас должно быть 15мм, иначе получится вытянутый или сжатый куб.

Куб готов. Теперь можно разместить его на макетной плате.

Шаг 3. Схемотехника

Схема устройства простая. Каждая из девяти колонн подключена к выводам Arduino через токоограничительные резисторы. А все 3 уровня подключены к общему выводу через NPN -транзисторы, которые, в свою очередь подключаются к Arduino.


Т.о. используется только 12 выводов Arduino. В один момент времени будет загораться LED только одного уровня, но за счет быстрого переключения между уровнями, будет казаться, что одновременно горят все уровни (в зависимости от программы).

Первым делом необходимо припаять 9 резисторов. Я использовал резисторы сопротивлением 220 Ом, которые ограничивают ток на уровне 22 мА. Номинал резисторов зависит от типа применяемых светодиодов, и варьируется от 135 до 470 Ом. Более точный расчет резистора для светодиода можно произвести здесь: LED калькулятор. Каждый вывод Arduino способен выдать до 40 мА.

Резисторы на плате, я припаял вертикально. После, я наклеил слой изоленты, чтобы не коротнуло с перемычками.

Следующим этапом будет монтаж радиоэлементов для управления уровнями. Здесь используется три NPN-транзистора. Базы транзисторов, через резистор 22 кОм подсоединяются к выводам Arduino. Т.о. контроллер открывает транзистор и весь уровень LED соединяется с «общим».

Шаг 4. Софт

В интернете я нашел несколько примеров управления подобными LED кубами. Но во всех них требовался огромный начальный массив bin или hex данных. Я все решил написать свою программу управления.

Первой задачей было сделать доступное для понимания соответствие программы и железа. Я принял решение обращаться к уровням и колоннам, вместо использования RAW-данных порта или традиционных x, y, z. Второй задачей было сделать базовые функции куба, такие как включение/отключение отдельного светодиода и др.

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

Всю эту функциональность я сделал в виде классов и сделал библиотеку Arduino, которую можно использовать для других проектов и даже с другой размерностью куба.

На youtube часто попадаются интересные проекты. Одним из таких, является, светодиодный куб. Прелесть данного устройства в том, что выводится настоящее 3D изображение. Можно рисовать любые объемные анимированные фигуры. Но в пределах выбранного разрешения куба.

За основу была взята статья с радиокота (кто захочет может нагуглить). Размер куба 5х5х5 выбран не случайно. Чтобы собрать данный куб понадобится 5*5*5=125 светодиодов. Если сравнить с еще одним популярным вариантом 8*8*8=512, т.е. количество светодиодов увеличится в 4 раза. Поэтому оптимальным мне кажется 5х5х5.

У меня не было времени заказывать светодиоды, поэтому покупал в розницу. К сожалению, в наличии, были только зеленые прозрачные 5мм, поэтому финальный результат сильно пострадал. Синие матовые смотрятся более эффектно, но увы. Матовые светодиоды, рекомендуется брать потому, что прозрачные засвечивают соседние светодиоды и создается эффект, что не горящий светодиод светится.

Начал непосредственно с самого куба. Нарисовал матрицу размером 100х100. Расстояние между кружками 20мм. Диаметр 5мм. Распечатал на бумаге и приклеил к деревяшке.

Просверлил отверстия. Хитро загибаем катод (-) светодиода. Анод сгибаем под 90 градусов.

Катод оставляем торчать к верху, а анод припаиваем к соседнему светодиоду. Получается «этаж» светодиодов с общим «+».

Для усиления конструкции слева припаял еще проводник. Первый этаж готов. Аналогично делаем еще 4 этажа.

Собираем все этажи вместе. Для этого припаиваем к предыдущие этажи к последующим.

Для основания использовал фольгированный стеклотекстолит размером 100х100. Места для пайки светодиодов вытравил. В результате получилась следующая конструкция:

Не совсем ровно, но все легко подгибается. Теперь непосредственно к схеме. Для сборки необходимо:

  1. 25 резисторов 150-220 Ом,
  2. 125 светодиодов,
  3. 5 конденсаторов 0,1мкФ (ставятся по питанию триггеров),
  4. 2 конденсатора 22пФ,
  5. Atmega16,
  6. кварц 12-16МГц,
  7. 5 резисторов 2,2коМ,
  8. 5 триггеров 74hc574,
  9. 5 транзисторов BC558.
  10. 1 конденсатор 100мкФ (по питанию обязательно!!! иначе схема работать не будет)

С одной стороны тут все просто, но нужно не запутаться. В отличие от предыдущих проектов здесь используется Atmega16(Atmega16A-16PU). Я использовал рабочую частоту 12МГц, на 16МГц будут чуть быстрее светодиоды переключаться. Кроме того, здесь используются триггеры. Чтобы понять зачем, нужно проникнуться логикой схемы.

Все входы триггеров подключены параллельно. Допустим нам нужно включить первый светодиод на 2 этаже (D2.1) и при этом не включить светодиоды на 1,3,4,5 этаже (D1.1, D3.1, D4.1, D5.1). Выводим на PORTC.0=0, так как именно 0 в данном случае включает светодиод. На входе триггера появляется 0, однако на выходе его состояние не меняется. Для изменения состояния нужно подать импульс на вход CLK, т.е. вывести поочередно, на ножку PA1 логический ноль и логическую единицу. Теперь все катоды DA1.1-DA5.1 подключены к земле, чтобы зажечь именно D2.1, нужно всего навсего включить 2 этаж, т.е. открыть транзистор Q2, вывести логический ноль в PD6.

Свои эффекты писать пробовал, получилось, но как то в голову не пришло ничего, чего не было в готовых прошивках. Поэтому итоговой взял готовую прошивку, для куба 5х5х5 в интернете нашлось несколько вариантов. Чистого времени на сборку ушло 3 дня. Хороший подарок, собранный своими руками.

На последок, видео получившегося куба, в темноте смотрится особенно эффектно.

Набор для сборки Led куба Aliexpress 4X4X4 Blue LED Light Cube Kit 3D LED DIY Kit Electronic Suite for arduino Diy Kit — «Набор для релаксации с паяльником»

Продолжая радовать себя и свое хобби, захотелось мне спаять еще один Kit набор. На сайте Aliexpress был найден небольшой набор для сборки Led куба, который и стал героем этого обзора.

Набор пришел в простом пакете, без каких либо инструкция и мануалов, правда спасибо продавцу который отправил сообщение со ссылкой на загрузка инструкции и программы для контроллера.

Стоит сразу отметить что этот набор не самостоятельная вещь, а плата расширения для Arduino и без нее он к сожалению не работает. При необходимости Arduino можно купить у того же самого продавца и он все отправит как мне одной посылкой.

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

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

Первое что нужно сделать это подготовить контакты (зажимы) в который в последствии будут вставляться светодиоды. Производитель предлагает использовать вот такие самофиксирующиеся контакты. Очистив их предварительно от пластика. По началу я думаю что очистка от пластика это лишнее, но к сожалению как я не старался аккуратно разделить контакты поштучно не удалось. Пластик очень хрупкий и никак не хочет кусаться как задумано, так что пришлось отделять. Получившиеся ножки необходимо запаять в отверстия на платя подписанные D0-D19 А затем запаять все детали на обратной стороне платы. Сборку необходимо проводить именно в такой последовательности, в другом случае детали с обратной стороны будут сильно мешать при запайке контактов для светодиодов. А вот так плата выглядит когда ее одеваешь на Arduino.

После того как с платой закончено, нужно приступать к самой медленной и однотипной процедуре, сборке самого куба из светодиодов.

Первым делом нужно загнуть более короткую ножку каждого светодиода (катод) на 90 градусов.

Затем спаять светодиоды по четыре штуки в ряды, соединяя из между собой за отогнутую ножку. Всего потребуется спаять 16 таких рядов, на что уйдет 64 светодиода, в моей посылке светодиодов было 70 штук, так что 6 ушло в запас.

После того как все ряды спаяны самое время начать формировать из них матрицы 4х4 светодиода.

Соединять ряды между собой нужно спаивая вторую длинную ножку светодиодов (анод).

Итого должно получиться 4 матрицы которые и сформируют куб.

Полученные матрицы анодами вставляются в зажимы на плате, а оставшиеся свободными катоды каждого уровня соединяются между собой. Для увеличения прочности конструкции можно дополнительно соединить матрицы между собой кусочками проволоки, в пределах одного уровня катоды можно соединять как вам больше нравиться. Для окончательно сборки необходимо соединить проволокой каждый уровень со своим контактом на плате. Для подключения служат контакты помеченные как D16-D19. Уровни необходимо соединять с контактами последовательно 1,2,3,4 уровень в D16,D17,D18,D19 соответственно.

После окончания сборки можно залить скетчь из архива в Arduino и радоваться полученному результату.

 

В качестве вывода:

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

Но есть и недостатки и первым из них является необходимость покупки отдельно платы Arduino UNO.

Программирование вашего светодиодного куба Arduino 4x4x4 для создания еще чего-нибудь интересного

На прошлой неделе я построил светодиодный куб — 64 светодиода, которые вы можете запрограммировать для создания фантастических футуристических световых шоу — и я надеюсь, что вы тоже сделали, потому что это отличный проект, чтобы мотивировать вас и расширить свой набор навыков Arduino. Я оставил вам несколько базовых приложений, чтобы вы могли подумать, но сегодня я представлю еще несколько кусочков программного обеспечения, которое я сделал для куба, вместе с пояснениями кода. Цель этого состоит не только в том, чтобы дать вам несколько более приятных световых шоу, но также в том, чтобы узнать о некоторых ограничениях программирования куба и изучить некоторые новые концепции программирования в процессе.

Это довольно продвинутая кодировка; вам действительно нужно прочитать все мои предыдущие учебники по Arduino и руководство для начинающих Arduino. перед настройкой предоставленного кода.

Приложение 1: Mini Snake

Вместо того, чтобы запускать последовательность паттернов в виде змеи, я хотел запрограммировать змею — искусственную, которая делала бы свои собственные случайные выборы и была бы совершенно непредсказуемой. Он ограничен только двумя сегментами, которые я объясню позже, и вы можете увидеть демо ниже. Загрузите полный код здесь .

При работе с трехмерным пространством вам нужно 3 координаты для одной точки: X, Y и Z.

Однако в нашем кубе плоскости X и Z представлены светодиодными штырьками, а Y непосредственно отображается на плоскости катода. Чтобы облегчить работу с этими координатами и выяснить движение вокруг куба, я создал новый тип данных (используя struct ) для представления одной точки на кубе, которую я назвал «xyz». Он состоит всего из двух целых чисел: «xz» и «y». С помощью этой структуры я мог бы также представить направление, указанное ниже в нашей специальной (xz, y) системе координат:

Движение по Y (вверх, вниз) : (xz, y + 1), (xz, y-1)
Движение Z (вперед, назад) : (xz-1, y), (xz + 1, y)
Движение X (влево, вправо) : (xz + 4, y), (xz-4, y)

Например, чтобы переместить светодиод в положение (0,0) слева направо, мы применяем (xz + 4, y) и в итоге получаем (0,4) .

Существуют определенные ограничения на движение, а именно: координаты Y могут быть только возможными от 0 до 3 (0 — нижний слой, 3 — верхний), а координаты XZ — от 0 до 15 . Дальнейшее ограничение накладывается на движение Z, чтобы предотвратить «перепрыгивание» сзади на переднюю часть куба, и наоборот. В этом случае мы используем функцию модуля для проверки на кратность 4 и отклоняем эту попытку перемещения. Эта логика представлена ​​в функции valid () , которая возвращает истину, если предложенное направление является приемлемым, и ложь в противном случае. Я добавил еще одну функцию для проверки обратного направления — то есть, если змея движется в одном направлении, мы не хотим, чтобы она двигалась назад сама по себе, даже если в противном случае она является допустимым местом для перемещения — и Функция move () , которая принимает координату, направление и возвращает новую координату.

Функции XYZ datatype, valid () , move () и inverse () можно найти в файле xyz.h в загружаемых файлах. Если вам интересно, почему это было помещено в отдельный файл вместо основного файла программы, это связано с некоторыми сложными правилами компилятора Arduino, которые не позволяют функциям возвращать пользовательские типы данных ; они должны быть помещены в их собственный файл, а затем импортированы в начале основного файла.

Вернувшись в основной исполняемый файл, массив направлений хранит все возможные движения, которые может сделать змея; мы можем просто выбрать случайный член массива, чтобы получить новое направление. Переменные также создаются для хранения текущего местоположения (сейчас), предыдущего направления и предыдущего местоположения . Остальная часть кода должна быть достаточно очевидна для вас; просто для петель и включения и выключения светодиодов. В основном цикле мы проверяем, является ли предложенное направление верным, и если это так, то мы идем этим путем. Если нет, мы выбираем новое направление.

Единственное, на что следует обратить внимание в основном цикле, — это некоторые проверки для исправления найденной мною ошибки, связанной с мультиплексированием: если новое местоположение было в той же плоскости катода или на том же выводе анода, выключение предыдущего светодиода приведет к тому, что оба погаснут. Также в этот момент я осознал, что выход за пределы 2-сегментной змеи будет невозможен с моей текущей реализацией: попробуйте зажечь 3 светодиода в угловом расположении. Вы не можете этого сделать, потому что при активном 2-х слоях и 2-х контактах светодиодов включится 4 светодиода, а не 3. Это неотъемлемая проблема с нашей конструкцией ограниченного мультиплексированного куба, но не стоит беспокоиться: нам просто нужно использовать силу постоянства зрения переписать метод ничьей.

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

Новый метод Draw, использующий постоянство видения

Прежде всего, новая процедура розыгрыша. Я создал двумерный массив битов 4 x 16 (true или false) для буквального представления состояния светодиодного куба. Процедура отрисовки реализует постоянство видения, просто перебирая все это и сбрасывая каждый слой в куб на короткое время. Он будет продолжать рисовать себя в текущем состоянии, пока не истечет время обновления, после чего мы передадим управление обратно в главный цикл (). Я сохранил этот раздел кода в этом файле LED_cube_POV , так что, если вы хотите просто заняться программированием своих собственных игр и тому подобного, не стесняйтесь использовать это в качестве основы.

Приложение 2: Игра Жизни

А пока давайте превратим это в базовую версию игры жизни Конвея . Для тех из вас, кто незнаком (попробуйте поискать его в Google, чтобы найти потрясающую анимацию пасхального яйца) , « Игра Жизни» является примером клеточных автоматов, которые создают захватывающий паттерн эмерджентного поведения, учитывая всего несколько простых правил.

Это, например, то, как муравьи, кажется, двигаются с интеллектом и разумом улья, несмотря на биологический факт, что они просто следуют самым основным гормональным правилам. Вот полный код для загрузки : нажмите кнопку сброса , чтобы перезагрузить. Если вы обнаруживаете, что получаете один и тот же шаблон снова и снова, попробуйте удерживать кнопку отдыха дольше.

Вот правила игры жизни:

  • Любая живая клетка с менее чем двумя живыми соседями умирает, как если бы она была вызвана недостаточным населением.
  • Любая живая клетка с двумя или тремя живыми соседями доживает до следующего поколения.
  • Любая живая клетка с более чем тремя живыми соседями умирает, как будто из-за переполненности.
  • Любая мертвая клетка с ровно тремя живыми соседями становится живой клеткой, как будто путем размножения.

Запустите код. В течение 5–10 «поколений» вы заметите, что автоматы, вероятно, остановились, стабилизировавшись на определенной позиции; иногда эта стабильная модель меняет местоположение и перемещается по доске. В редких случаях они могут даже полностью вымереть. Это ограничение использования только 4х4х4 светодиодов, но в любом случае это хорошее учебное упражнение.

Чтобы объяснить код:

  • Возможно, вы незнакомы с функцией memcpy () . Я использовал это, чтобы сохранить предыдущее игровое состояние, поскольку массивы не могут быть просто назначены друг другу как обычные переменные — вы должны фактически копировать через пространство памяти (в данном случае, 64 бита).
  • Функция howManyNeighbours () должна быть самоочевидной, но в противном случае этот метод принимает одну координату и проходит через каждого возможного соседа (тот же массив направлений, который мы ранее использовали в приложении snake), чтобы проверить, действительны ли они , Затем он проверяет, были ли эти соседние светодиоды «включены» в предыдущем игровом состоянии, и подсчитывает их количество.
  • Основная функция этого приложения Game of Life — progressGame () , который применяет правила автоматов к текущему состоянию игры.

Улучшения : я потратил слишком много времени на это, но вы можете попробовать добавить проверку, которая автоматически сбрасывает плату после 5 или более поколений одного и того же паттерна. тогда, пожалуйста, дайте мне знать! Я также предложил бы попытаться добавить методологию POV в игру со змеями, чтобы, надеюсь, сделать возможной более длинную змею.

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

Image Credit: декартовы координаты — пользователь Викимедиа Сакурамбо

Светодиодный куб 3х3х3 на Arduino

Светодиодный куб 3х3х3 на Arduino

Ошев В.А. 1

1МАОУ «Лицей №4»

Ошева В.И. 1

1МАОУ «Лицей №4»

Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке «Файлы работы» в формате PDF

Что такое Arduino?

Arduino — торговая марка аппаратно-программных средств для построения простых систем автоматики и робототехники, ориентированная на непрофессиональных пользователей. Программная часть состоит из бесплатной программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры. Аппаратная часть представляет собой набор смонтированных печатных плат, продающихся как официальным производителем, так и сторонними производителями. Полностью открытая архитектура системы позволяет свободно копировать или дополнять линейку продукции Arduino.

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

С 2008 года в компании-разработчике начался раскол, выразившийся в существовании двух независимых ветвей развития и продаж под одной торговой маркой: одна на сайте arduino.cc, другая на arduino.org. Докризисные изделия на обоих сайтах продаются под одинаковыми названиями. Набор новых изделий на сайтах различается. Также существует две ветви Arduino IDE, поддерживающие разный набор плат и библиотек. Одинаковые названия и пересекающиеся номера версий IDE вносят путаницу. Тем не менее, говоря об Ардуино, обычно подразумевают первоначальную ветвь проекта на сайте arduino.cc.

Аппаратная часть

Стандартный конструктив Ардуино с платами расширения

Плата Arduino Diecimila

Под торговой маркой Arduino выпускается несколько плат с микроконтроллером (англ. boards) и платы расширения (так называемые шилды[2] — варваризм от англ. shields). Большинство плат с микроконтроллером снабжены минимально необходимым набором обвязки для нормальной работы микроконтроллера (стабилизатор питания, кварцевый резонатор, цепочки сброса и т. п.).

Конструктив

Arduino и Arduino-совместимые платы спроектированы таким образом, чтобы их можно было при необходимости расширять, добавляя в устройство новые компоненты. Эти платы расширений подключаются к Arduino посредством установленных на них штыревых разъёмов. Существует ряд плат с унифицированным конструктивом, допускающим конструктивно жесткое соединение процессорной платы и плат расширения в стопку через штыревые линейки. Кроме того, выпускаются платы уменьшенных габаритов (например, Nano, Lilypad) и специальных конструктивов для задач робототехники. Независимыми производителями также выпускается большая гамма всевозможных датчиков и исполнительных устройств, в той или иной степени совместимых с базовым конструктивом Ардуино.

В концепцию Arduino не входит корпусной или монтажный конструктив. Разработчик выбирает метод установки и механической защиты плат самостоятельно. Сторонними производителями выпускаются наборы робототехнической электромеханики, ориентированной на работу совместно с платами Arduino.

Миниатюрные клоны Arduino

Помимо стандартных конструктивов Ардуино сторонние разработчики создали множество миниатюрных клонов, сохранив только архитектурную и программную совместимость. Среди этих клонов выделяется линейка продуктов Microduino[4][5]. Линейка содержит полноценный набор конструктивно совместимых процессорных модулей, модулей связи, сенсоров и исполнительных устройств, практически не уступая ассортименту классических модулей Arduino. Как и Arduino, сборка плат производится в стопки. Линейка оформлена в двух оригинальных конструктивах:

бескорпусной с соединениями на миниатюрных цанговых штыревых линейках (торговая марка «Microduino Upin27 Series»). Габарит плат 25*28 мм.

В стиле конструкторов Лего с электрическими соединениями на подпружиненных контактах и механической фиксацией, совместимой с конструкторами Лего (торговая марка «Microduino mCookie Series»).

Плата Femtoduino

Самый миниатюрный клон был выпущен под торговой маркой Femtoduino[6]. Его размеры всего 15*20 мм, включая разъем micro USB, стабилизатор напряжения и полный комплект ввода-вывода Arduino UNO. Той же компанией выпущен самый нафаршированный миниатюрный клон под торговой маркой IMUduino. Это клон Arduino Leonardo с поддержкой USB Host (клавиатура и мышь), Bluetooth 4 Low Energy, шестиосный гироскоп/акселерометр, трехосный магнитометр (компас), барометр. Размер устройства 16*40 мм. К сожалению, проект на данный момент не предлагает совместимых по цоколевке плат расширения.

Микроконтроллер

Микроконтроллеры для Arduino отличаются наличием предварительно прошитого в них загрузчика (bootloader). С помощью этого загрузчика пользователь загружает свою программу в микроконтроллер без использования традиционных отдельных аппаратных программаторов. Загрузчик соединяется с компьютером через интерфейс USB (если он есть на плате) или с помощью отдельного переходника UART-USB. Поддержка загрузчика встроена в Arduino IDE и выполняется в один щелчок мыши.

На случай затирания загрузчика или покупки микроконтроллера без загрузчика разработчики предоставляют возможность прошить загрузчик в микроконтроллер самостоятельно. Для этого в Arduino IDE встроена поддержка нескольких популярных дешевых программаторов, а большинство плат Arduino имеет штыревой разъем для внутрисхемного программирования (ICSP для AVR, JTAG для ARM).

В Arduino IDE от компании, базирующейся на сайте arduino.cc, встроена возможность создания своих программно-аппаратных платформ. Этой возможностью пользуются сторонние компании, добавляющие в Arduino IDE свои наборы плат и компиляторов-загрузчиков к ним. Компания на сайте arduino.org не поддерживает такую возможность.

Периферия

Порты ввода-вывода микроконтроллеров оформлены в виде штыревых линеек. Никакого буферизирования, защиты, конвертации уровней или подтяжек, как правило, нет. Микроконтроллеры питаются от 5В или 3,3В, в зависимости от модели платы. Соответственно порты имеют такой же размах допустимых входных и выходных напряжений. Программисту доступны некоторые специальные возможности портов ввода-вывода микроконтроллеров, например широтно-импульсная модуляция (ШИМ), аналогово-цифровой преобразователь (АЦП), интерфейсы UART, SPI, I2C. Количество и возможности портов ввода-вывода определяются конкретным вариантом микропроцессорной платы.

Помимо портов на платах микроконтроллеров иногда устанавливается периферия в виде интерфейсов USB или Ethernet. Опциональный набор внешней периферии на модулях расширения включает в себя[10]:

USB Device (чаще всего как виртуальный COM порт через FTDI FT232, имеются также версии с эмуляцией USB HID Class клавиатур и мышек).

Проводной и беспроводной Ethernet как на основной плате так и на платах расширения.[11]

Модуль GSM и другие беспроводные интерфейсы[12].

USB Host[13].

SD card.

Модуль управления низковольтным мотором на базе L298. Поддерживаются шаговый и коллекторный двигатели с напряжением до 12В и током до 2А на канал. Могут подключаться также реле, электромагниты и т. п. Модуль не имеет гальванической развязки.

Графический ЖКИ индикатор.

Модуль с макетным полем.

Сторонние производители выпускают широкую гамму датчиков и исполнительных устройств, подключаемых к Arduino. Например, гироскопы, компасы, манометры, гигрометры, термометры, релейные модули, индикаторы, клавиатуры и т. п.

Концепция программирования

Программирование ведется целиком через собственную программную оболочку (IDE), бесплатно доступную на сайте Arduino. В этой оболочке имеется текстовый редактор, менеджер проектов, препроцессор, компилятор и инструменты для загрузки программы в микроконтроллер. Оболочка написана на Java на основе проекта Processing, работает под Windows, Mac OS X и Linux.

Язык программирования

Язык программирования Arduino является стандартным C++ (используется компилятор AVR-GCC) с некоторыми особенностями, облегчающими новичкам написание первой работающей программы.

Программы, написанные программистом Arduino называются наброски (или иногда скетчи — варваризм от англ. sketch) и сохраняются в файлах с расширением ino. Эти файлы перед компиляцией обрабатываются препроцессором Ардуино. Также существует возможность создавать и подключать к проекту стандартные файлы C++.

Обязательную в C++ функцию main() препроцессор Arduino создает сам, вставляя туда необходимые «черновые» действия.

Программист должен написать две обязательные для Arduino функции setup() и loop(). Первая вызывается однократно при старте, вторая выполняется в бесконечном цикле.

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

Менеджер проекта Arduino IDE имеет нестандартный механизм добавления библиотек. Библиотеки в виде исходных текстов на стандартном C++ добавляются в специальную папку в рабочем каталоге IDE. При этом название библиотеки добавляется в список библиотек в меню IDE. Программист отмечает нужные библиотеки и они вносятся в список компиляции.

Arduino IDE не предлагает никаких настроек компилятора и минимизирует другие настройки, что упрощает начало работы для новичков и уменьшает риск возникновения проблем.

Простейшая Arduino-программа состоит из двух функций:

setup(): функция вызывается однократно при старте микроконтроллера.

loop(): функция вызывается после setup () в бесконечном цикле все время работы микроконтроллера.

Одна из простейших схем на Arduino — это подключение внешнего светодиода, управление которым происходит при помощи программы (скетча).

Загрузка программы в микроконтроллер

Закачка программы в микроконтроллер Arduino происходит через предварительно запрограммированный специальный загрузчик (все микроконтроллеры от Ардуино продаются с этим загрузчиком). Загрузчик создан на основе Atmel AVR Application Note AN109. Загрузчик может работать через интерфейсы RS-232, USB или Ethernet в зависимости от состава периферии конкретной процессорной платы. В некоторых вариантах, таких как Arduino Mini или неофициальной Boarduino, для программирования требуется отдельный переходник.

Пользователь может самостоятельно запрограммировать загрузчик в чистый микроконтроллер. Для этого в IDE интегрирована поддержка программатора на основе проекта AVRDude. Поддерживается несколько типов популярных дешёвых программаторов.

Создание светодиодного куба


В этой статье описано создание светодиодного куба 4х4х4 на ардуино. Arduino (Freeduino) имеет 20 контактов (вместе с контактами АЦП), поэтому можно обойтись без регистров сдвига.


Список элементов
1. 64 Светодиода
2. 16 Резисторов
3. 1 Arduino (я использовал Freeduino)
4. 1 Макетная плата
5. Паяльник
6. Дрель
7. Кусок дерева
Выбор светодиодов
Светодиоды бывают разной формы, размера и цвета. Нам необходимы светодиоды рассеянного свечения. С ними куб будет красиво смотреться со всех сторон, т.к. светодиоды рассеянного свечения светят во все стороны, а нерассеянного в основном вверх. Я решил использовать 5мм супер яркие светодиоды. 3 мм светодиоды хорошо смотрятся в кубах большего размера, а для это малы, но если хотите можете использовать их. Я купил светодиоды нерассеянного свечения, и мне пришлось точить каждый на наждачной бумаге.
Перед сборкой куба я рекомендую проверить каждый светодиод. Просто подайте на него +5В через резистор. Если куб будет изготовлен с неисправным светодиодом, поменять его бывает затруднительно. У большинства светодиодов положительный вывод (анод) более длинный, чем отрицательный (катод). Также можно посмотреть светодиод на свет, при этом будут видны два кусочка метала. Меньший из них это положительный вывод (анод). Более подробно о светодиодах читайте здесь.
Расчет резистора
Номинал резистора будет зависеть от типа ваших светодиодов. Используя закон Ома U = IR, мы можем рассчитать резистор. Мы должны знать максимальный рабочий ток и падение напряжения на светодиоде. У моих светодиодов падение напряжения 3.4В и максимальный ток 20мА. На выводах Arduino 5В и мы получаем (5-3.4) / 0.020 = 80. У нас получилось значение 80Ом. Чтобы продлить срок службы светодиода, я использовал резисторы 100 Ом. Рассчитать сопротивление для светодиода вы можете на он-лайн светодиодном калькуляторе.
Основной принцип куба


Куб 4x4x4 будет содержать 64 светодиода собранных в 16 столбцов и 4 горизонтальных слоя. Аноды(+) всех светодиодов каждого столбца соединены вместе. Слои состоят из соединённых катодов светодиодов. Для управления светодиодами надо подать 5В на необходимый столбец и GND на необходимый горизонтальный слой. Для предотвращения превышения тока можно запускать только один слой и столбец одновременно. Для зажигания нескольких светодиодов или всего куба сразу мы будем использовать динамическую индикацию, т.е. переключать их с частотой больше воспринимаемой человеком. Например, если надо зажечь третий светодиод на четвертом столбце, необходимо подать на столбец HIGH (5В) и на слой LOW (0В).
Изготовление шаблона
Для сборки красивого симметричного куба нам потребуется шаблон. Это кусок доски с просверленными в нем на равном расстоянии отверстиями. Для создания шаблона нам понадобится кусок доски, сверла и измерительные инструменты. Расстояние между отверстиями определяется длиной согнутого катода светодиода. Длина согнутого катода моего светодиода оставляет около 25мм, поэтому я взял расстояние между светодиодами примерно 23мм. Размер отверстий необходимо подобрать так, чтобы светодиод сидел в них не слишком туго и не слишком свободно.


Изготовление слоев куба


Имея шаблон мы можем начать собирать слои. Старайтесь не перегреть светодиоды, т.к. это может привести к выходу их из строя.


Начните с углового светодиода и направьте его согнутый катод за пределы куба. Затем разместите и припаяйте следующий светодиод в линии с торчащим выводом. Затем припаяйте другую линию. Сделайте таким образом 4 слоя.
Сборка куба
Когда у нас есть все слои, можно приступить к сборке куба. Положите один из слоев в шаблон, и немного поотгибайте верхние концы торчащих выводов. Припаяйте к ним следующий слой светодиодов. Для соблюдения расстояний между слоями я использовал ластик уменьшенный до нужных размеров. Спаяйте таким образом все 4 слоя между собой.


Основа

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


Прошивка
Создание прошивки может занять некоторое время, особенно если вы новичок, т.к. хороших книг по программированию достаточно мало. У меня было мало времени, поэтому я делал не очень сложную прошивку. Однако мне удалось сделать несколько программ, и глядя на них вам будет легче во всем разобраться.
Помните о динамической индикации, и зажигайте только один слой за раз (хотя в моём коде это не везде соблюдается и Arduino нормально работает, лучше не экспериментировать). Когда на слое LOW(0В), а на столбце HIGH(+5В) появляется разность потенциалов, что позволяет току проходить через светодиод. Когда на слое HIGH(+5В), разности потенциалов нет, и светодиоды не загораются. Когда на столбе HIGH(+5В), на нем горит светодиод заданного слоя. Когда на столбе LOW(0В), светодиоды не горят.

Просмотров работы: 43

Как сделать светодиодный куб 4x4x4 с оставшимися светодиодами

Привет! Недавно я с нетерпением ждал возможности изменить оформление и тему своего стола, я хотел добавить индивидуальности своему столу, который также подходил бы к теме моего канала (это, оказывается, Электроника;)) К счастью, у меня было много светодиодов, лежащих вокруг в предыдущем проекте, поэтому я решил создать завораживающий светодиодный куб с использованием Arduino Nano, поэтому в этом уроке мы узнаем, как сделать этот светодиодный куб за простые шаги!

Принадлежности:

1.Электроника

2. Инструменты

  • Паяльник.
  • Паяльная проволока.
  • Флюс для пайки (ДОПОЛНИТЕЛЬНО).
  • Ножницы.
  • Отвертка.
  • Шкала линейки.
  • Пистолет для горячего клея (ДОПОЛНИТЕЛЬНО)
  • 3D-принтер (ДОПОЛНИТЕЛЬНО)
  • Устройство для гравировки печатных плат (ДОПОЛНИТЕЛЬНО)

3. Разное

  • Картон.
  • карандаш.
  • ластик.

Шаг 1. Посмотрите видео!

Шаг 2: Проверьте все светодиоды

Прежде чем мы начнем делать наш светодиодный куб и паять все, неплохо было бы проверить светодиоды , наши светодиоды работают на 3.3 В, 20 мА, мы могли бы легко протестировать их, используя любую батарею 3,3 В, в моем случае я использовал литий-ионную батарею для проверки светодиодов.

Советы:

  • Более длинный отвод Положительный и короче Отрицательный
  • НЕЛЬЗЯ! обратное смещение светодиода, вы можете его повредить.
  • НЕ используйте источник питания 5V для проверки светодиода.

Шаг 3: Подготовьте шаблон

После того, как мы закончили тестирование светодиодов, нам нужно подготовить шаблон, на который светодиоды можно легко припаять, и они сохранят однородность, мы можем использовать картон, акрил или напрямую 3D-распечатать дизайн шаблона на 3D-принтере, с рисунками, прикрепленными на этом шаге! но, к сожалению, у нас нет 3D-принтера, поэтому для выполнения этого шага мы использовали кусок картона.

брали картонный лист размером 70 мм на 70 мм. Поскольку мы делаем светодиодный куб 4 x 4 x 4, нам понадобится 16 светодиодов в слое, поэтому мы сохраним расстояние 15 мм между каждым светодиодом и завершим квадрат.

, вы можете сразу взять распечатку шаблона и наклеить ее на картон, чтобы использовать ее в качестве справки для черчения отверстий (пожалуйста, экономьте бумагу, не ленитесь рисовать несколько линий: P)

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

Советы:

  • используйте Толстый материал из картона
  • используйте 3D-печатный шаблон , если это возможно.
  • Используйте сверло для точных отверстий.
  • Не прикладывайте слишком большое давление при использовании отвертки для отверстий.

Шаг 4: Сложите светодиоды (САМОЕ ВАЖНОЕ!)

это самый ВАЖНЫЙ шаг всей этой сборки ! так что внимательно следуйте инструкциям на этом этапе!

  • удерживайте светодиод с положительным проводом , который является ДЛИННЫМ проводом на слева и коротким проводом на правой стороне.
  • Осторожно сложите короче к вам .
  • Обозначьте выемки
  • сложите более длинный отвод к слева от выемки.
  • отрегулируйте Угол проводов, если смотреть сверху, он должен составить угол 90 градусов Как только это будет сделано,
  • повторите для всех 64 L.E.D .

Шаг 5: Поместите светодиоды на шаблон

возьмите шаблон, который мы сделали на шаге 3, и поместите L.E.D., которые мы сложили Step4 поместите их в шаблон, так чтобы отрицательный вывод был направлен вправо и положительный вывод был направлен вниз , как показано на рисунке.

такое расположение 16 L.E.D в этом шаблоне называется одним слоем столбца. разместить всю колонку и подготовить ее к пайке.

Шаг 6: Припаяйте слой светодиодной колонки

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

Теперь, когда вы готовы к пайке, выполните следующие действия, чтобы припаять слой колонны.

  • взять шаблон из , последний шаг .
  • начало пайка с отрицательными выводами .
  • заполнять по одной строке за раз.
  • припаяйте положительные выводы .
  • удалить столбец из шаблона.
  • Повторите этот процесс для остальных 3 слоев колонн

Советы:

  • используйте флюс для идеальных паяных соединений.
  • НЕ нагревайте провод более 5 секунд , вы можете повредить L.E.D.
  • проверить для соединений сухой пайкой .

Шаг 7: Соедините столбцы вместе

мы сделали 4 отдельных слоя столбцов на последнем шаге, теперь пришло время соединить все 4 слоя столбцов и завершить этот светодиодный куб.

выполните следующие действия, чтобы завершить светодиодный куб.

  • поместите плоский шаблон на рабочий стол .
  • вставьте положительных выводов из слоя колонки, который мы сделали на последнем шаге внутри шаблона .
  • загните отрицательные выводы каждого слоя к себе, кубиком к себе.
  • припой отрицательный слой контакты .
  • собрать Остаток металлических выводов от других компонентов или проектов (если у вас их нет, отрежьте провода дополнительных светодиодов).
  • припой Металл Подводит к тем же слоям , обеспечивая прочность и правильное распределение мощности.

Советы:

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

почему такая конфигурация?

Принцип работы этого светодиодного куба заключается в том, что мы будем подавать команду на положительный элемент требуемого положения вместе с требуемым слоем, чтобы включить этот светодиод, например, если я хочу включить светодиод в положении (1, 1, 1 ), Я подключу плюс источника питания к (1, 1), а затем заземлю слой 1.Таким образом, наша схема активирует 4 заземления и 16 положительных выводов для создания анимации на светодиодном кубе. поэтому нам нужно сделать общую землю из отдельных слоев и общих 16 положительных контактов.

Шаг 8: Припаяйте печатную плату

, это довольно сложная схема, , если вы новичок , Я настоятельно рекомендую вам загрузить файлы Gerber и просто заказать печатную плату в любом сервисе печатных плат, и если вы имеют опыт работы или хотели бы попробовать собрать эту схему на плате общего назначения, выполните следующие действия.

Шаги:

  • Поместите , Arduino Nano с гнездовыми разъемами , на на печатную плату .
  • паяные гнезда на печатной плате.
  • припаять светодиодный куб на печатную плату.
  • припаять 4- резисторы 100 Ом на A3, A2, A1, A0 (т.е. многослойные выводы).
  • припаять штыри колонны для согласования местоположений с помощью провода (1, 1) -D13 (1, 2) -D12 (1, 3) -D11 (1, 4) -D10 (2, 1) -D9 (2 , 2) -D8 (2, 3) -D7 (2, 4) -D6 (3, 1) -D5 (3-2) -D4 (3-3) -D3 (3, 4) -D2 (4, 1) -D0 (4, 2) -D1 (4, 3) -A4 (4, 4) -A5 , как показано на рисунке выше.
  • припаяйте каждый выводов слоя на A3, A2, A1, A0 через резисторы с помощью провода.

Наконечники:

  • используйте флюс для припоя.
  • используйте вытяжку для дыма припоя, так как длительное воздействие паров припоя вредно.
  • используйте флюс для улучшения паяных соединений.
  • не торопитесь и избегайте коротких замыканий.
  • После того, как вы припаяете гнездовые разъемы на печатной плате, удалите Arduino и затем выполните пайку оставшихся дорожек.

Шаг 9: Загрузите КОД

для кода Arduino, я изменил код из этого поста, который был опубликован forte1994, он изначально был написан для обработки программного обеспечения IDE, которое я преобразовал и отредактировал, чтобы он работал для моего проекта, согласно к распиновке, используемой для проектирования печатной платы.

Код

довольно прост, где мы создаем анимацию с использованием потоков двоичных данных, которые формируют шаблоны, и мы просто помещаем эти данные на выводы столбцов и слоев, я предоставил надлежащие комментарии в требуемых выделениях, на всякий случай, если вы хотите изменить код, если вы хотите понять код, скачайте его и прочтите! также предложите любые изменения, которые могут помочь оптимизировать код и улучшить анимацию!

Шаг 10: Подготовьте корпус

это такое красивое приложение, но эта плавающая схема тоже заслуживает завораживающего корпуса, верно? поэтому я спроектировал коробку для программного обеспечения Autodesk Fusion 360 CAD с учетом требований P.Размер C.B. и другие другие факторы, вы можете загрузить 3D-файлы этого корпуса корпуса, прикрепленные на этом шаге, или щелкнуть здесь, чтобы получить ссылку на grabcad. Я сделал этот корпус двухэлементной коробкой, чтобы мы могли легко удалить схему и со временем исправить любые проблемы с Arduino или схемой.

Я сделал этот дизайн корпуса, но у меня нет 3D-принтера, поэтому я остановлюсь на копии Cardboard того же корпуса, с такими же размерами, я приложил 3D-файлы, если вы хотите сделать такой же корпус с одинаковых размеров, загрузите файл и вырежьте кусочки картона в соответствии с дизайном CAD и используйте немного горячего клея, чтобы скрепить части вместе, и все готово!

Советы:

  • Будьте осторожны при разрезании картона.
  • Не стыдно попросить помощи у родителей, если вам неудобно обращаться с ножницами или лезвием.
  • Будьте осторожны с горячим клеевым пистолетом, вы можете случайно приклеить себя горячим клеем.

Шаг 11: Наслаждайтесь красочной анимацией!

, теперь мы выполнили все шаги и успешно построили светодиодный куб с использованием микроконтроллера Arduino!

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

Шаг 12. Свяжитесь с нами в социальных сетях!

Передайте нам привет или отметьте нас, если вы делаете аналогичный проект.Мы также будем рады услышать любые предложения / идеи!

Ссылки:

Спасибо!

Проекты Arduino: LED — 4X4X4 LED Cube

Anduino LED Cube — фантастический проект; его можно использовать в качестве украшения или использовать с другим оборудованием, таким как микрофоны или датчики движения, для различных приложений. По сути, светодиодный куб — это трехмерный куб, сделанный из светоизлучающих диодов (светодиодов). Куб можно сделать разными способами, но для этого проекта используется простая установка, которая управляется микроконтроллером Arduino Uno.

LED Cube Concept

Как видно на изображении ниже, куб состоит из оси X-Y и 4 слоев, расположенных друг над другом. Нижний слой имеет номер 0, а верхний — номер 3. Точно так же светодиоды пронумерованы как трехмерная матрица. Итак, нижний левый светодиод (1,1) на слое 0. Тот, что над ним, тоже (1,1), но на уровне 1. Тот, что справа от этого углового светодиода, — (2,1) на слое 0. и так далее. Все горизонтальные слои — это положительные выводы светодиодов, спаянных вместе.

Все отрицательные выводы светодиодов рассматриваются как столбцы этого куба матрицы. Итак, у нас есть 4 слоя и 16 столбцов, которые делают 20 проводов, подключенных к Arduino. Положительные контакты (слои) имеют резисторы на 100 Ом, чтобы ограничить ток до 20 мА (стандартный ток для светодиода).

Работает

Микроконтроллер — в нашем случае Arduino Uno — имеет ограничение на подачу тока на свои выходные контакты, то есть он может подавать только безопасное количество тока до того, как произойдет повреждение.В случае Arduino Uno это 40 мА. Итак, вам должно быть интересно, подождите минутку, если светодиод потребляет 20 мА, почему мы можем включить все огни одновременно и при этом не сжечь плату Arduino? Это потому, что в любой момент времени горит только один светодиод.

Человеческий глаз (из-за постоянного зрения) не может видеть быстрое мерцание светодиода, если он включается и выключается очень быстро. Поскольку код на Arduino выполняется очень быстро, наши глаза думают, что несколько светодиодов включены. Это также ограничивает ток до безопасных уровней, поскольку в любой момент времени горит только один светодиод, и даже если мы берем средний ток за 1 секунду, он намного ниже порога опасности.Например, вы хотите включить светодиод в нижнем левом углу куба, вы подадите положительный сигнал от микроконтроллера на его слой, то есть на слой 0, это подаст положительное напряжение на положительный вывод светодиодов. Затем вы должны проинструктировать микроконтроллер заземлить соответствующий вывод столбца этого светодиода, это подключит отрицательный вывод светодиода к земле, и у вас будет полная схема с прямым смещением, которая загорится светодиодом.

Список компонентов:

  1. Картон или дерево (толщиной около 1 дюйма)
  2. Кнопочный элемент 3 В
  3. Наждачная бумага (средний класс)
  4. 64 x Синие светодиоды (светодиоды)
  5. Резисторы 4 x 100 Ом
  6. 24 цветных ленточных провода «папа-папа»
  7. 1 штекерное гнездо / разъем (должно быть 20-контактное гнездо на линии)
  8. Монтажная плата для печатной платы (около 24 × 10 см)
  9. Arduino Uno + USB-кабель
  10. Arduino Uno power Адаптер розетки
  11. Адаптер для батареи 9 В
  12. Аккумулятор 9 В
  13. Застежка-молния (25 см)
  14. Клей-пистолет + клей-карандаш
  15. Паяльник + проволока для пайки + мокрая пена
  16. Насос для распайки (в случае плохой пайки)
  17. Увеличительное стекло стекло (чтобы увидеть вашу пайку)
  18. Mini Wire Cutter
  19. Mini Nose Plier
  20. Соединительный провод для проводки под печатной платой (около 1 м) и липкая лента

Как собрать

Первый из всего вам понадобится картон или дерево средней толщины (около дюйма).Просверлите в нем отверстия так, чтобы он образовал кубический узор 4 × 4 с одинаковыми расстояниями между всеми отверстиями.

В этом случае распечатанный рисунок был помещен поверх картона и просверлены 5-миллиметровые отверстия (каждое отверстие на расстоянии 2,4 см от следующего (центр-центр)) были просверлены для светодиодов. На рисунке ниже вы можете увидеть стрелки, которые укажите направление ножек светодиодов; мы рассмотрим это позже.

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

Если вы хотите, чтобы свет исходил от светодиода со всех сторон, вы можете рассеять их, протерев их пластиковую оболочку наждачной бумагой.

На изображении ниже светодиод слева рассеян, а светодиод справа имеет исходную прозрачную форму. Проверьте разницу!

Подготовьте все для пайки. Выровняйте армию светодиодов и приготовьтесь к сгибанию и пайке.

Помните, что короткая ножка светодиода — это его катод (-ive pin), а длинная ножка — анод (+ ive pin). Если вы не уверены, то можете проверить его мультиметром или кнопочной ячейкой, чтобы определить полярность. Теперь с помощью плоскогубцев согните катод (короткую ножку) под углом 90 90 500 o 90 501 вправо, а затем снова согните его вверх, чтобы придать форму, как показано на изображении ниже.

Поместите светодиоды в картон, но будьте осторожны с их ориентацией. Помните стрелки на изображении выше? Отрицательные контакты изогнутых светодиодов должны быть выровнены, как показано стрелками. Это потому, что мы будем делать четыре таких слоя, и их легко спаять вместе. Согните все положительные выводы всех светодиодов и сделайте это так, чтобы они соединили все положительные выводы светодиодов вместе, это сделает ваш положительный слой.

Однако вы увидите, что две области в середине этого слоя остались несвязанными, как показано красным кружком.Вы можете соединить эти контакты с любым сплошным проводом, отрезанным от светодиодов.

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

Первый слой завершен.

Теперь вырежьте все лишние части, чтобы они были аккуратными и аккуратными, как показано на изображении ниже:

После создания четырех слоев вы должны быть готовы к мега пайке!

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

После пайки трех слоев рекомендуется на всякий случай еще раз проверить все светодиоды. Как и раньше, подключите положительный вывод тестера кнопочных ячеек к слою, а затем отрицательный вывод ко всем столбцам светодиодов (-ive выводов) один за другим.

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

Наконец, светодиодный куб припаян, и вот как он должен выглядеть:

Припаяйте 20-контактный (или более) встроенный гнездовой разъем (0,1-дюймовый зазор между контактами) на готовую печатную плату перфорированной платы и поместите на нее куб ( штифты колонки). Вы можете временно подогнуть несколько ножек светодиодного куба под плату, чтобы он не отвалился, но пока не припаивайте их. Позже они будут припаяны к проводам, идущим от штырьков розетки.

Обгорел на плате некоторые точки пайки, потому что паяльник был слишком горячим и оторвал медь от платы, испортил пайку для женского разъема.

Припаяйте резисторы так, чтобы одна ножка была подключена к контактам «мама», а другая подключалась к каждому отдельному слою куба. Не забудьте посмотреть на настройку подключения. В этом проекте крайняя левая сторона — это контакт номер 0 на Arduino вплоть до контакта номер 13, затем четыре аналоговых контакта для слоев, а затем два аналоговых контакта для оставшихся столбцов. Также выполните быстрое тестирование через гнездо женского разъема.

Подключите все провода с помощью ленточных перемычек (вилка-вилка) в соответствии с таблицей подключений, приведенной ниже.Arduino можно удерживать на плате с помощью стяжки, чтобы его можно было легко снять для использования в других проектах. Вы можете запитать Arduino от батареи 9 В и вилки питания Arduino (после установки кода на плату).

Для столбцов:

950 950 950 950 :

90 537 905 905 43
Координата (X, Y) Номер контакта на Arduino
1,1 13 1,200
1,3 11
1,4 10
2,1 9
2,2 8
2,3 7
2,4 6
3,1 5
3,2 4
3,3 3
3
3
4,1 1
4,2 0
4,3 A5
4,4 A6
Номер слоя Номер контакта на Arduino
0 A0
1 A1
2

Наконец, железо готово.Вот как может выглядеть ваш проект:

После загрузки кода в Arduino Uno ваш светодиодный куб 4x4x4 готов!

Вам также могут понравиться:

patelneel55 / Arduino-LED-Cube: 4x4x4 LED Cube на базе Arduino

Светодиодный куб 4 x 4 x 4, отображающий случайные узоры, состоящий из 64 светодиодов и Arduino

.

Требования

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

  1. Arduino Uno (вы также можете использовать Arduino Nano, но вам придется прикрепить его к макетной плате и припаять контакты вручную)

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

  3. Паяльник и припой: это инструмент, который помогает соединять металлы.

  4. Макетная плата

Дополнительно:

Паяльный флюс: наносится на паяльник и / или на металл, который паяется, так что припой может легко прилипать к металлу.

Запуск проекта

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

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

.

Установка

Если у вас еще не установлена ​​Arduino IDE, загрузите IDE со страницы загрузки Arduino

Загрузка в Arduino

Чтобы загрузить код в Arduino со своего настольного компьютера или ноутбука:

  1. Загрузите последнюю версию LEDCube.ino внутри папки LEDCube.

  2. Дважды щелкните файл, который автоматически откроется в среде Arduino IDE.

  3. Подключите Arduino к устройству с помощью USB A-B (Arduino Uno) или USB A-Micro B (Arduino Uno).

  4. После подключения Arduino к компьютеру и открытия Arduino IDE щелкните Verify в левом верхнем углу IDE

    .
  5. После успешной компиляции программы нажмите кнопку Загрузить в верхнем левом углу среды IDE, которая загрузит программу в Arduino и запустит программу на кубе.

Наконец

Вы можете продолжать работу LED Cube бесконечно с помощью кабеля USB или подключить адаптер питания переменного тока 2,1 мм к одной из настенных розеток.

Источники

Контакт

Нил Патель

Как сделать светодиодный куб 4x4x4

 int layer [4] = {A3, A2, A1, A0}; // инициализация и объявление светодиодных слоев
  int column [16] = {13,12,11,10,9,8,7,6,5,4,3,2,1,0, A5, A4}; // инициализация и объявление светодиодных строк
  int time = 250;

  
 
установка void ()
{
  
  для (int я = 0; я <16; я ++)
  {
    pinMode (столбец [i], ВЫХОД); // установка строк для вывода
  }
  
  для (int я = 0; я <4; я ++)
  {
    pinMode (уровень [i], ВЫХОД); // установка слоев для вывода
  }
  
  randomSeed (analogRead (10)); // выборка случайным образом для случайного шаблона
}

пустой цикл ()
{
  turnEverythingOff ();
  flickerOn ();
  turnEverythingOn ();
  время задержки);
  turnOnAndOffAllByLayerUpAndDownNotTimed ();
  layerstompUpAndDown ();
  spiralInAndOut ();
  turnOnAndOffAllByColumnSideways ();
  время задержки);
  aroundEdgeDown ();
  turnEverythingOff ();
  randomflicker ();
  randomRain ();
  diagonalRectangle ();
  goThroughAllLedsOneAtATime ();
  пропеллер ();
  spiralInAndOut ();
  flickerOff ();
  turnEverythingOff ();
  задержка (2000);
}


// выключаем все
void turnEverythingOff ()
 {
   для (int я = 0; я <16; я ++)
   {
     digitalWrite (столбец [i], 1);
   }
   для (int я = 0; я <4; я ++)
   {
     digitalWrite (слой [i], 0);
   }
 }
 
// включаем все
void turnEverythingOn ()
{
  для (int я = 0; я <16; я ++)
  {
    digitalWrite (столбец [i], 0);
  }
  // включаем слои
  для (int я = 0; я <4; я ++)
  {
    digitalWrite (слой [i], 1);
  }
}
// отключаем столбцы
void turnColumnsOff ()
{
  для (int я = 0; я <16; я ++)
  {
    digitalWrite (столбец [i], 1);
  }
}
// мерцание
void flickerOn ()
{
  int i = 150;
  в то время как (i! = 0)
  {
    turnEverythingOn ();
    задержка (i);
    turnEverythingOff ();
    задержка (i);
    i- = 5;
  }
}
// включаем и выключаем все по слоям вверх и вниз НЕ ВРЕМЕННО
void turnOnAndOffAllByLayerUpAndDownNotTimed ()
{
  int x = 75;
  для (int i = 5; i! = 0; i--)
  {
    turnEverythingOn ();
    для (int i = 4; i! = 0; i--)
    {
      digitalWrite (слой [i-1], 0);
      задержка (х);
    }
    для (int я = 0; я <4; я ++)
    {
      digitalWrite (слой [i], 1);
      задержка (х);
    }
      для (int я = 0; я <4; я ++)
    {
      digitalWrite (слой [i], 0);
      задержка (х);
    }
    для (int i = 4; i! = 0; i--)
    {
      digitalWrite (слой [i-1], 1);
      задержка (х);
    }
  }
}
// включаем и выключаем все по столбцу боком
void turnOnAndOffAllByColumnSideways ()
{
  int x = 75;
  turnEverythingOff ();
  // включаем слои
  для (int я = 0; я <4; я ++)
  {
    digitalWrite (слой [i], 1);
  }
  для (int y = 0; y <3; y ++)
  {
    // включаем 0-3
    для (int я = 0; я <4; я ++)
    {
      digitalWrite (столбец [i], 0);
      задержка (х);
    }
    // включаем 4-7
    для (int я = 4; я <8; я ++)
    {
      digitalWrite (столбец [i], 0);
      задержка (х);
    }
    // включаем 8-11
    для (int i = 8; i <12; i ++)
    {
      digitalWrite (столбец [i], 0);
      задержка (х);
    }
    // включаем 12-15
    для (int я = 12; я <16; я ++)
    {
      digitalWrite (столбец [i], 0);
      задержка (х);
    }
    // выключаем 0-3
    для (int я = 0; я <4; я ++)
    {
      digitalWrite (столбец [i], 1);
      задержка (х);
    }
    // выключаем 4-7
    для (int я = 4; я <8; я ++)
    {
      digitalWrite (столбец [i], 1);
      задержка (х);
    }
    // выключаем 8-11
    для (int я = 8; я <12; я ++)
    {
      digitalWrite (столбец [i], 1);
      задержка (х);
    }
    // выключаем 12-15
    для (int я = 12; я <16; я ++)
    {
      digitalWrite (столбец [i], 1);
      задержка (х);
    }
    // включаем 12-15
    для (int я = 12; я <16; я ++)
    {
      digitalWrite (столбец [i], 0);
      задержка (х);
    }
    // включаем 8-11
    для (int i = 8; i <12; i ++)
    {
      digitalWrite (столбец [i], 0);
      задержка (х);
    }
    // включаем 4-7
    для (int я = 4; я <8; я ++)
    {
      digitalWrite (столбец [i], 0);
      задержка (х);
    }
    // включаем 0-3
    для (int я = 0; я <4; я ++)
    {
      digitalWrite (столбец [i], 0);
      задержка (х);
    }
    // выключаем 12-15
    для (int я = 12; я <16; я ++)
    {
      digitalWrite (столбец [i], 1);
      задержка (х);
    }
    // выключаем 8-11
    для (int i = 8; i <12; i ++)
    {
      digitalWrite (столбец [i], 1);
      задержка (х);
    }
    // выключаем 4-7
    для (int я = 4; я <8; я ++)
    {
      digitalWrite (столбец [i], 1);
      задержка (х);
    }
    // выключаем 0-3
    для (int я = 0; я <4; я ++)
    {
      digitalWrite (столбец [i], 1);
      задержка (х);
    }
  }
}
// однослойный топот вверх и вниз
пустотный слой
{
  int x = 75;
  для (int я = 0; я <4; я ++)
  {
    digitalWrite (слой [i], 0);
  }
  для (int y = 0; y <5; y ++)
  {
    for (int count = 0; count <1; count ++)
    {
      для (int я = 0; я <4; я ++)
      {
        digitalWrite (слой [i], 1);
        задержка (х);
        digitalWrite (слой [i], 0);
      }
      для (int i = 4; i! = 0; i--)
      {
        digitalWrite (слой [i-1], 1);
        задержка (х);
        digitalWrite (слой [i-1], 0);
      }
    }
    для (int я = 0; я <4; я ++)
    {
      digitalWrite (слой [i], 1);
      задержка (х);
    }
    для (int i = 4; i! = 0; i--)
    {
      digitalWrite (слой [i-1], 0);
      задержка (х);
    }
  }
}
// мерцание выключено
void flickerOff ()
{
  turnEverythingOn ();
  для (int i = 0; i! = 150; i + = 5)
  {
    turnEverythingOff ();
    задержка (i + 50);
    turnEverythingOn ();
    задержка (i);
  }
}
// по краю куба вниз
пустота вокругEdgeDown ()
{
  для (int x = 200; x! = 0; x - = 50)
  {
    turnEverythingOff ();
    для (int i = 4; i! = 0; i--)
    {
      digitalWrite (слой [i-1], 1);
      digitalWrite (столбец [5], 0);
      digitalWrite (столбец [6], 0);
      digitalWrite (столбец [9], 0);
      digitalWrite (столбец [10], 0);
      
      digitalWrite (столбец [0], 0);
      задержка (х);
      digitalWrite (столбец [0], 1);
      digitalWrite (столбец [4], 0);
      задержка (х);
      digitalWrite (столбец [4], 1);
      digitalWrite (столбец [8], 0);
      задержка (х);
      digitalWrite (столбец [8], 1);
      digitalWrite (столбец [12], 0);
      задержка (х);
      digitalWrite (столбец [12], 1);
      digitalWrite (столбец [13], 0);
      задержка (х);
      digitalWrite (столбец [13], 1);
      digitalWrite (столбец [15], 0);
      задержка (х);
      digitalWrite (столбец [15], 1);
      digitalWrite (столбец [14], 0);
      задержка (х);
      digitalWrite (столбец [14], 1);
      digitalWrite (столбец [11], 0);
      задержка (х);
      digitalWrite (столбец [11], 1);
      digitalWrite (столбец [7], 0);
      задержка (х);
      digitalWrite (столбец [7], 1);
      digitalWrite (столбец [3], 0);
      задержка (х);
      digitalWrite (столбец [3], 1);
      digitalWrite (столбец [2], 0);
      задержка (х);
      digitalWrite (столбец [2], 1);
      digitalWrite (столбец [1], 0);
      задержка (х);
      digitalWrite (столбец [1], 1);
    }
  }
}
// случайное мерцание
пустота randomflicker ()
{
  turnEverythingOff ();
  int x = 10;
  для (int i = 0; i! = 750; i + = 2)
  {
  int randomLayer = random (0,4);
  int randomColumn = случайный (0,16);
  
  digitalWrite (слой [randomLayer], 1);
  digitalWrite (столбец [randomColumn], 0);
  задержка (х);
  digitalWrite (слой [randomLayer], 0);
  digitalWrite (столбец [randomColumn], 1);
  задержка (х);
  }
}
// случайный дождь
пустота randomRain ()
{
  turnEverythingOff ();
  int x = 100;
  для (int i = 0; i! = 60; i + = 2)
  {
    int randomColumn = случайный (0,16);
    digitalWrite (столбец [randomColumn], 0);
    digitalWrite (слой [0], 1);
    задержка (х + 50);
    digitalWrite (слой [0], 0);
    digitalWrite (слой [1], 1);
    задержка (х);
    digitalWrite (слой [1], 0);
    digitalWrite (слой [2], 1);
    задержка (х);
    digitalWrite (слой [2], 0);
    digitalWrite (слой [3], 1);
    задержка (х + 50);
    digitalWrite (слой [3], 0);
    digitalWrite (столбец [randomColumn], 1);
  }
}
// диагональный прямоугольник
void diagonalRectangle ()
{
  int x = 350;
  turnEverythingOff ();
  for (int count = 0; count <5; count ++)
  {
    //верхний левый
    для (int я = 0; я <8; я ++)
    {
      digitalWrite (столбец [i], 0);
    }
    digitalWrite (слой [3], 1);
    digitalWrite (слой [2], 1);
    задержка (х);
    turnEverythingOff ();
    // середина середина
    для (int я = 4; я <12; я ++)
    {
      digitalWrite (столбец [i], 0);
    }
    digitalWrite (слой [1], 1);
    digitalWrite (слой [2], 1);
    задержка (х);
    turnEverythingOff ();
    //внизу справа
    для (int я = 8; я <16; я ++)
    {
      digitalWrite (столбец [i], 0);
    }
    digitalWrite (слой [0], 1);
    digitalWrite (слой [1], 1);
    задержка (х);
    turnEverythingOff ();
    // нижняя середина
    для (int я = 4; я <12; я ++)
    {
      digitalWrite (столбец [i], 0);
    }
    digitalWrite (слой [0], 1);
    digitalWrite (слой [1], 1);
    задержка (х);
    turnEverythingOff ();
    //Нижняя левая
    для (int я = 0; я <8; я ++)
    {
      digitalWrite (столбец [i], 0);
    }
    digitalWrite (слой [0], 1);
    digitalWrite (слой [1], 1);
    задержка (х);
    turnEverythingOff ();
    // середина середина
    для (int i = 4; i <12; i ++)
    {
      digitalWrite (столбец [i], 0);
    }
    digitalWrite (слой [1], 1);
    digitalWrite (слой [2], 1);
    задержка (х);
    turnEverythingOff ();
    //в правом верхнем углу
    для (int я = 8; я <16; я ++)
    {
      digitalWrite (столбец [i], 0);
    }
    digitalWrite (слой [2], 1);
    digitalWrite (слой [3], 1);
    задержка (х);
    turnEverythingOff ();
    // верхняя середина
    для (int я = 4; я <12; я ++)
    {
      digitalWrite (столбец [i], 0);
    }
    digitalWrite (слой [2], 1);
    digitalWrite (слой [3], 1);
    задержка (х);
    turnEverythingOff ();
  }
  //верхний левый
  для (int я = 0; я <8; я ++)
  {
    digitalWrite (столбец [i], 0);
  }
  digitalWrite (слой [3], 1);
  digitalWrite (слой [2], 1);
  задержка (х);
  turnEverythingOff ();
}
// пропеллер
пустотный пропеллер ()
{
  turnEverythingOff ();
  int x = 90;
  для (int y = 4; y> 0; y--)
  {
    для (int я = 0; я <6; я ++)
    {
      // включаем слой
      digitalWrite (слой [y-1], 1);
      // a1
      turnColumnsOff ();
      digitalWrite (столбец [0], 0);
      digitalWrite (столбец [5], 0);
      digitalWrite (столбец [10], 0);
      digitalWrite (столбец [15], 0);
      задержка (х);
      // b1
      turnColumnsOff ();
      digitalWrite (столбец [4], 0);
      digitalWrite (столбец [5], 0);
      digitalWrite (столбец [10], 0);
      digitalWrite (столбец [11], 0);
      задержка (х);
      // c1
      turnColumnsOff ();
      digitalWrite (столбец [6], 0);
      digitalWrite (столбец [7], 0);
      digitalWrite (столбец [8], 0);
      digitalWrite (столбец [9], 0);
      задержка (х);
      // d1
      turnColumnsOff ();
      digitalWrite (столбец [3], 0);
      digitalWrite (столбец [6], 0);
      digitalWrite (столбец [9], 0);
      digitalWrite (столбец [12], 0);
      задержка (х);
      // d2
      turnColumnsOff ();
      digitalWrite (столбец [2], 0);
      digitalWrite (столбец [6], 0);
      digitalWrite (столбец [9], 0);
      digitalWrite (столбец [13], 0);
      задержка (х);
      // d3
      turnColumnsOff ();
      digitalWrite (столбец [1], 0);
      digitalWrite (столбец [5], 0);
      digitalWrite (столбец [10], 0);
      digitalWrite (столбец [14], 0);
      задержка (х);
    }
  }
  // d4
  turnColumnsOff ();
  digitalWrite (столбец [0], 0);
  digitalWrite (столбец [5], 0);
  digitalWrite (столбец [10], 0);
  digitalWrite (столбец [15], 0);
  задержка (х);
}
// спираль внутрь и наружу
пустота spiralInAndOut ()
{
  turnEverythingOn ();
  int x = 60;
  для (int я = 0; я <6; я ++)
  {
    // спираль по часовой стрелке
    digitalWrite (столбец [0], 1);
    задержка (х);
    digitalWrite (столбец [1], 1);
    задержка (х);
    digitalWrite (столбец [2], 1);
    задержка (х);
    digitalWrite (столбец [3], 1);
    задержка (х);
    digitalWrite (столбец [7], 1);
    задержка (х);
    digitalWrite (столбец [11], 1);
    задержка (х);
    digitalWrite (столбец [15], 1);
    задержка (х);
    digitalWrite (столбец [14], 1);
    задержка (х);
    digitalWrite (столбец [13], 1);
    задержка (х);
    digitalWrite (столбец [12], 1);
    задержка (х);
    digitalWrite (столбец [8], 1);
    задержка (х);
    digitalWrite (столбец [4], 1);
    задержка (х);
    digitalWrite (столбец [5], 1);
    задержка (х);
    digitalWrite (столбец [6], 1);
    задержка (х);
    digitalWrite (столбец [10], 1);
    задержка (х);
    digitalWrite (столбец [9], 1);
    задержка (х);
// спираль против часовой стрелки
    digitalWrite (столбец [9], 0);
    задержка (х);
    digitalWrite (столбец [10], 0);
    задержка (х);
    digitalWrite (столбец [6], 0);
    задержка (х);
    digitalWrite (столбец [5], 0);
    задержка (х);
    digitalWrite (столбец [4], 0);
    задержка (х);
    digitalWrite (столбец [8], 0);
    задержка (х);
    digitalWrite (столбец [12], 0);
    задержка (х);
    digitalWrite (столбец [13], 0);
    задержка (х);
    digitalWrite (столбец [14], 0);
    задержка (х);
    digitalWrite (столбец [15], 0);
    задержка (х);
    digitalWrite (столбец [11], 0);
    задержка (х);
    digitalWrite (столбец [7], 0);
    задержка (х);
    digitalWrite (столбец [3], 0);
    задержка (х);
    digitalWrite (столбец [2], 0);
    задержка (х);
    digitalWrite (столбец [1], 0);
    задержка (х);
    digitalWrite (столбец [0], 0);
    задержка (х);
// спираль против часовой стрелки
    digitalWrite (столбец [0], 1);
    задержка (х);
    digitalWrite (столбец [4], 1);
    задержка (х);
    digitalWrite (столбец [8], 1);
    задержка (х);
    digitalWrite (столбец [12], 1);
    задержка (х);
    digitalWrite (столбец [13], 1);
    задержка (х);
    digitalWrite (столбец [14], 1);
    задержка (х);
    digitalWrite (столбец [15], 1);
    задержка (х);
    digitalWrite (столбец [11], 1);
    задержка (х);
    digitalWrite (столбец [7], 1);
    задержка (х);
    digitalWrite (столбец [3], 1);
    задержка (х);
    digitalWrite (столбец [2], 1);
    задержка (х);
    digitalWrite (столбец [1], 1);
    задержка (х);
    digitalWrite (столбец [5], 1);
    задержка (х);
    digitalWrite (столбец [9], 1);
    задержка (х);
    digitalWrite (столбец [10], 1);
    задержка (х);
    digitalWrite (столбец [6], 1);
    задержка (х);
// спираль по часовой стрелке
    digitalWrite (столбец [6], 0);
    задержка (х);
    digitalWrite (столбец [10], 0);
    задержка (х);
    digitalWrite (столбец [9], 0);
    задержка (х);
    digitalWrite (столбец [5], 0);
    задержка (х);
    digitalWrite (столбец [1], 0);
    задержка (х);
    digitalWrite (столбец [2], 0);
    задержка (х);
    digitalWrite (столбец [3], 0);
    задержка (х);
    digitalWrite (столбец [7], 0);
    задержка (х);
    digitalWrite (столбец [11], 0);
    задержка (х);
    digitalWrite (столбец [15], 0);
    задержка (х);
    digitalWrite (столбец [14], 0);
    задержка (х);
    digitalWrite (столбец [13], 0);
    задержка (х);
    digitalWrite (столбец [12], 0);
    задержка (х);
    digitalWrite (столбец [8], 0);
    задержка (х);
    digitalWrite (столбец [4], 0);
    задержка (х);
    digitalWrite (столбец [0], 0);
    задержка (х);
  }
}
// перебираем все светодиоды по очереди
void goThroughAllLedsOneAtATime ()
{
  int x = 15;
  turnEverythingOff ();
  для (int y = 0; y <5; y ++)
  {
    // 0-3
    for (int count = 4; count! = 0; count--)
    {
      digitalWrite (слой [count-1], 1);
      для (int я = 0; я <4; я ++)
      {
        digitalWrite (столбец [i], 0);
        задержка (х);
        digitalWrite (столбец [i], 1);
        задержка (х);
      }
    digitalWrite (слой [count-1], 0);
    }
    // 4-7
    for (int count = 0; count <4; count ++)
    {
      digitalWrite (слой [количество], 1);
      для (int я = 4; я <8; я ++)
      {
        digitalWrite (столбец [i], 0);
        задержка (х);
        digitalWrite (столбец [i], 1);
        задержка (х);
      }
    digitalWrite (слой [количество], 0);
    }
    // 8-11
    for (int count = 4; count! = 0; count--)
    {
      digitalWrite (слой [count-1], 1);
      для (int i = 8; i <12; i ++)
      {
        digitalWrite (столбец [i], 0);
        задержка (х);
        digitalWrite (столбец [i], 1);
        задержка (х);
      }
    digitalWrite (слой [count-1], 0);
    }
    // 12-15
    for (int count = 0; count <4; count ++)
    {
      digitalWrite (слой [количество], 1);
      для (int я = 12; я <16; я ++)
      {
        digitalWrite (столбец [i], 0);
        задержка (х);
        digitalWrite (столбец [i], 1);
        задержка (х);
      }
    digitalWrite (слой [количество], 0);
    }
  }
}
 

4x4x4 LED Cube Проект Arduino Electronics

Светодиодный куб можно рассматривать как светодиодный экран, в котором простые 5-миллиметровые светодиоды играют роль цифровых пикселей.Светодиодный куб позволяет нам создавать изображения и узоры, используя концепцию оптического явления, известного как постоянство зрения (POV). Итак, в этом руководстве мы рассмотрим пошаговую процедуру создания светодиодного куба 4x4x4 u и Arduino nano. Куб имеет 64 синих светодиода , которые составляют его 4 слоя (позитивы) и 16 столбцов (негативы).

Arduino Nano - это компактная, совместимая, прочная и удобная для макетирования плата микроконтроллера , основанная на модели ATmega328p. Функционально он очень похож на Arduino Duemilanove, но в другом корпусе. У него нет разъема питания постоянного тока, как у других моделей, и для питания ноутбука или ПК требуется USB-кабель Mini-B.

Мы выражаем сердечную благодарность JLCPCB за спонсирование проектов на этом веб-сайте и канале Youtube. JLCPCB - лучшая компания по сборке и производству прототипов печатных плат в Китае . Расположенный в Ханчжоу, JLCPCB удовлетворяет все ваши потребности в дизайне печатных плат, предлагая лучший сервис, который вы когда-либо испытывали с точки зрения качества дизайна, поддержки до и после продажи и быстрой доставки.Мы в Circuits-Diy настоятельно рекомендуем заказывать печатные платы у AllPCB. Просто зарегистрируйте новую учетную запись на веб-сайте AllPCB, введите физические параметры вашей платы и загрузите файл Gerber. Это так просто !. Получите мгновенное расценки на печатную плату, посетив их веб-сайт сегодня !.

Оборудование, необходимое для светодиодного куба

Вам понадобятся следующие детали для создания проекта LED Cube.

905 905 905 905 905 905 905 905 3) 908 6) 90 645
С.No Компонент Значение Кол-во
1) Arduino Nano - 1
2) USB-кабель светодиоды диффузные, 5 мм 64
4) ручная дрель постоянного тока - 1
5) серебряные провода41 Гнездовые разъемы - По необходимости
7) Резисторы 100 Ом 4
8) Картон - По необходимости - По необходимости Картон - Как 9) Паяльник 45Вт - 60Вт 1
10) Паяльный флюс - 1
[inaritcle_1] Светодиод-Куб-Ардуино

Вы можете создать собственный прототип печатной платы за 2 доллара США с помощью услуг JLCPCB.

Полезные шаги

Внимательно следуйте всем шагам из видеоурока в конце этого сообщения (настоятельно рекомендуется).

1) Возьмите карточку 5 × 5 дюймов и сделайте 9 квадратных коробок с интервалом 1 × 1 дюйм

2) Просверлите отверстие 5 мм в углу всех коробок

3) Отогните отрицательную ногу светодиода с помощью отвертки

4) Отметьте стрелку на элементе карты и затем вставьте все светодиоды (отрицательные ножки) в направлении стрелки.

5) Затем припаяйте все положительные ножки 16 светодиода серебряным проводом и затем проверьте светодиод с помощью мультиметра.

6) Сделав 4 ряда аналогичным способом, соедините все отрицательные выводы светодиода серебряными проводами.

7) Подключите L1, L2, L3 и L4 к общему плюсу Row1, Row2, Row3 и Row4 соответственно

8) Затем припаяйте заглушку на печатную плату

9) Резисторы под пайку

10) Код загрузки и цепь включения

Рабочее пояснение

Светодиодный куб воплощает в себе принцип постоянства зрения.Работа этой схемы выглядит следующим образом. Все 4 слоя светодиодного куба определены как A0, A1, A2 и A3, а все 16 столбцов куба определены как (0–13 и A4, A5). После загрузки кода контроллер регистрирует все слои и столбцы куба, соответствующие соседним контактам, и устанавливает целое число времени равным 250.

Затем контроллер определяет 2 цикла, связанных с выходом слоев и столбцов. Здесь мы установили функцию randomseed () для приема аналогового входа с вывода 10 для случайного выбора функции цикла.После этого контроллер переходит в подпрограмму void loop () и случайным образом просматривает каждую функцию светодиодного дисплея.

Приложения

  • Обычно используется в декоративных целях в таких местах, как свадебные и общественные залы.
  • Может также использоваться для обучения феномену постоянства зрения (POV).

Код

 / *
  Светодиодный куб 4x4x4
  Настройка подключения:
  Столбцы
  [(x, y) -Pin]
  (1,1) -13
  (1,2) -12
  (1,3) -11
  (1,4) -10
  (2,1) -9
  (2,2) -8
  (2,3) -7
  (2,4) -6
  (3,1) -5
  (3-2) -4
  (3-3) -3
  (3,4) -2
  (4,1) -1
  (4,2) -0
  (4,3) -A5
  (4,4) -A4
  Слои
  [Layer-Pin]
  a-A0
  b-A1
  c-A2
  d-A3
* /
// инициализация и объявление светодиодных строк
  int column [16] = {13,12,11,10,9,8,7,6,5,4,3,2,1,0, A5, A4};
// инициализация и объявление светодиодных слоев
  int layer [4] = {A3, A2, A1, A0};

  int time = 250;
 
установка void ()
{
  // установка строк для вывода
  для (int i = 0; i0; y--)
  {
    для (int i = 0; i



[inaritcle_1]



 Принципиальная схема  

Как сделать светодиодный куб

Если возникнут трудности с созданием этого проекта, пожалуйста, оставьте комментарий ниже.
Загрузите все важные файлы и полезные материалы для этого поста по приведенной ниже ссылке.

Загрузить

Amazon.com: RGB LED Cube Kit 4x4x4: Игрушки и игры

Ваш браузер не поддерживает видео в формате HTML5.

Я включил этот комплект светодиодного куба RGB в свой список желаний и получил его в подарок на Рождество. Я очень доволен общим качеством этого комплекта. Это первый светодиодный комплект, который я построил - это амбициозный проект, если вы никогда раньше его не создавали.У меня много хорошего хобби, связанного с пайкой, поэтому я принял вызов. Посмотрите мое видео, чтобы увидеть куб в действии.

Несколько мыслей / комментариев, которые могут быть полезны для тех, кто думает об этом наборе:
1) Этот набор основан на работе, проделанной Ашером Гликом и Кевином Бейкером, и использует технику под названием «CharliePixeling», которая является очень крутым способом управление отдельными светодиодами без особого усложнения. В инструкциях объясняется часть теории, лежащей в основе его работы.
2) Вы можете полностью запрограммировать свой светодиодный куб, поскольку в комплект входит Arduino Nano. 16 контактов используются для управления светодиодами, но некоторые из них останутся открытыми / доступными. Я планирую добавить несколько переключателей, которые позволят мне переключаться на разные программы или делать такие вещи, как изменение цвета светодиодов.
3) Будьте готовы сделать МНОГО паять, и при этом очень хорошо работать. Вам нужно сделать 16 "шпилей" по 4 светодиода в каждом. На каждый светодиод приходится 4 точки пайки. Затем вам нужно припаять его к макетной плате, чтобы она оставалась на месте.После этого вам нужно провести провода к каждому из 16 шпилей и подключить их к Arduino (он также поставляется с разъемом, в который входит Arduino, поэтому вы можете легко удалить Arduino, если это необходимо). Если вам неудобно паять, потренируйтесь, прежде чем браться за этот проект.
4) Вам понадобятся некоторые дополнительные компоненты (около 40 футов провода 24 калибра, наждачная бумага зернистостью 20, и я рекомендую дополнительные светодиоды на всякий случай. Подробнее см. Ниже.
5) В инструкциях говорится, что это займет около 10 часов.Я думаю, что это хороший пример, но это определенно заняло у меня немного больше времени (я предполагаю, что около 14-16 часов). Тем не менее, я был очень осторожен с пайкой и по ходу дела провел тщательные испытания.

Как этот комплект мог бы быть лучше:
1) Было бы здорово включить провод, необходимый для этого комплекта. Требуется почти 40 футов провода - мне не хватило прокладки, поэтому мне пришлось взять провод, который был указан в инструкциях (соединительный провод с твердым сердечником 24 калибра). Я хотел, чтобы мои шпили были более прочными, поэтому я использовал сплошной медный провод 20 калибра.Это также придает кубу приятный «двухцветный» эффект. Провод 20 калибра жестче, но его сложнее вставить в макетную плату.
2) Было бы неплохо, если бы в комплекте шло 4 упаковки дополнительных светодиодов. Я случайно перегорел светодиод при тестировании. Мне пришлось несколько дней ждать отправки замены. Если вы получаете этот комплект, я бы порекомендовал заказать дополнительные светодиоды RGB. Убедитесь, что они 5 мм и общий катод. У меня есть другая марка, и они нормально работали.
3) Кстати о светодиодах - инструкции в комплекте требуют, чтобы вы рассеяли каждый светодиод, отшлифуя их наждачной бумагой с зернистостью 200.Вероятно, это была самая трудоемкая часть проекта и была довольно запутанной. (1-2 минуты на каждый светодиод, чтобы отшлифовать, а таких жук 64 ...) Было бы лучше, если бы в комплекте были диффузные светодиоды, которые всего на несколько центов больше на светодиод.
4) Инструкции к комплекту хороши, и я нашел видео полезными. Однако ссылки в PDF на исходный код у меня не работали. Я тут задал вопрос, и продавец тут же ответил ссылкой. Если вы погуглите "Charliecube Asher Glick", вы найдете код.

Как сделать светодиодный куб 4x4x4 с помощью Arduino

Добро пожаловать в мой учебник о том, как сделать светодиодный куб 4x4x4 с помощью Arduino Uno.

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

В описании это работает так, что это будет конечный продукт. Но в этом я покажу вам, как это сделать без лишних слов.

Приступим!

Светодиодный куб состоит из четырех матриц 4x4 (горизонтальные слои).Все светодиоды на каждом слое соединены друг с другом анодами, которые подключены к контактам А1, А2, А3, А4 платы Arduino NANO.

Катодные ножки каждого светодиода спаяны вместе, образуя вертикальные столбцы из 4 светодиодов, каждый из которых подключен к контактам L11 - L14, L21 - L24, L31 - L34, L41 - L44.

Особенности:

  • Питание модуля осуществляется от модуля Arduino Nano или от внешнего блока питания (5 В), подключенного к порту на плате управления.
  • Как оказалось, схемы различных производителей Arduino-подобных модулей отличаются от оригинальной Arduino NANO. Мы учли это при разработке предлагаемого расширения. Исходный модуль микроконтроллера устанавливается в левые порты, а модуль DFRduino, например, устанавливается в правые порты. Различия между модулями можно найти на нашей принципиальной схеме.
  • Практически любой инфракрасный пульт дистанционного управления в вашем доме может управлять вашим кубом.

Что потребуется для сборки

Инструменты и материалы для сборки радио: паяльник, бокорезы, пинцет, припой, флюс для пайки.

Что вам понадобится:

  • Arduino Nano (v3.0)
  • Резистор 4 x 100E 1/4 Вт
  • Зеленые светодиоды 64 x 5 мм
  • Гнездовые разъемы
  • Плата Vero

Как сделать led cube 4x4x4 инструкция по сборке: пошагово

Step 1 . Изготовление зажимного приспособления для светодиода

На деревянной доске оставьте зазор 20 мм между двумя линиями:

Используйте бит drell 5/16 ″ для отверстий под светодиоды:

Шаг 2. Изготовление слоев светодиодного куба

Начните с подготовки выводов светодиодов.

Сгибание всех 64-х светодиодов-негативов (катодов) Пинцетом.

Вставьте 16 светодиодов в отверстия и согните все положительные выводы:

Отрежьте дополнительные выводы и припаяйте все положительные выводы вместе

Теперь снимите структуру первых слоев с отверстий в зажиме

Потом второй ряд.

Припаяйте длинные выводы во втором, третьем и четвертом ряду.

Длинные выводы крайних светодиодов каждого ряда выступают за край платы. Осторожно согните их вдоль платы и соедините пайкой

Здесь у нас есть один слой светодиодов 4х4.

Шаг 3. Изготовление светодиодного куба.

Вы можете выровнять его, используя дополнительные отрезки проволоки.

Завершите четыре слоя. Осторожно установите первый слой на плату управления, вставив выводы светодиодов в отверстия L11-L14, L21-L24, L31-L34, L41-L44.Сначала припаиваем угловые выводы.

Выровняйте слой в одной плоскости по углам, нагревая выводы паяльником и перемещая их вверх и вниз (при необходимости). Убедившись, что угловые светодиоды находятся в одной плоскости, припаяйте оставшиеся выводы.

Шаг 4. Подключение цепи. После подключения:

Установка светодиодного куба:

Шаг 5. Установка Arduino / блока питания

Шаг 6. Установка кода Arduino Nano и позволяет тестировать куб!

Последовательность сборки

  • Выберите желаемый режим работы входных / выходных каналов.
  • При необходимости припаяйте порт USB.
  • Припаяйте контактные разъемы, если они вам нужны.
  • Чтобы использовать GPIO в режиме INPUT, установите перемычки 2 и 1 на разъемах J1 или J2. Чтобы использовать GPIO в режиме ВЫХОДА, установите перемычку между контактами 2 и 3.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *