Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Привет, Итак, для школьного задания под названием «Если это, то это» мне пришлось сделать что-то интерактивное // что-то //, используя стартовый набор Arduino Uno (и все остальное, что можно было купить самостоятельно). Видя, что я занимаюсь искусством / технологиями, я хотел объединить их оба (искусство и технологии). Я подумал, что сделаю картину, состоящую из столько светодиодов RGB, сколько смогу уместить на моем Arduino, и позволю игроку / художнику вручную переключаться между этими светодиодами RGB и выбирать цвет. Таким образом они могут создавать свои собственные «пиксельные рисунки»!
Шаг 1: некоторая справочная информация и теория
Ладно, давай не будем ходить вокруг да около. Если вы хотите воплотить этот проект в жизнь: это сложно. Мне потребовалось много часов, чтобы понять / узнать, что делать, и даже больше, чтобы на самом деле это сделать, но если вам действительно нужен ящик, наполненный проволокой, который может создавать очень маленькие «картины», я научу вас, как это сделать.
Итак, обо всем по порядку. Нам нужно как можно больше светодиодов / светодиодов RGB на нашей Arduino. Чем больше (RGB) светодиодов вы подключите, тем более детализированным вы сможете сделать свою «картину» (10x10 пикселей дают больше места для маневра, чем 2x2 справа). Я полагаю, что есть больше способов установить много (RGB) светодиодов на ваших 13 цифровых контактах (например, сдвиговый регистр), но я использовал метод под названием «Charlieplexing». Я свяжусь с инструкциями, которые помогли мне понять эту концепцию (серьезно, они объясняют это очень хорошо), но я также дам вам краткую версию здесь. Charlieplexing выглядит следующим образом:
Вы помещаете светодиод между контактами 1 и 2, если вы установите для контакта 1 значение HIGH, а 2 - значение LOW, круг будет плавно перемещаться, и светодиод включится. Основы. Ну вот теперь вы прикрепляете еще один светодиод, но перевернули. Длинный конец находится на 2, а короткий - на контакте 1. Теперь, если вы переведите контакт 2 в положение HIGH, а контакт 1 в положение LOW, ваш второй светодиод включится, а ваш первый останется выключенным, потому что поток будет неправильным. Теперь вы можете прикрепить 2 светодиода к 2 контактам. Если мы получим 3-й контакт в миксе, вы можете проделать этот трюк между 1 и 2, 1 и 3, а также 2 и 3. Это 6 светодиодов. Это продолжается, 5 контактов предоставят нам (2 + 4 + 6 + 8) 20 светодиодов. Использование всех 13 цифровых контактов дает нам 156 вариантов. Это 156 светодиодов, которые вы можете включать и выключать по отдельности.
(Хорошо, для тех из вас, кому интересно. Да, когда у вас много, невозможно включить несколько одновременно, но не беспокойтесь, Arduino может переключаться между вашими светодиодами так быстро, что человеческий глаз не может видеть мерцание)
(Лучшее и более подробное объяснение с картинками)
Итак, приложив много усилий, когда дело доходит до проводки (я коснусь этого позже), мы можем сделать целую сетку светодиодов, но давайте посмотрим правде в глаза. Светодиоды ужасно надоедают. Как сделать картинку всего в 2-х цветах? Я полагаю, вы могли бы, но это будет круче, если у вас будет больше цветов, верно? Правильно. Итак, перейдем к светодиодам RGB!
Светодиоды RGB - это, по сути, 3 светодиода в 1. У них общий катод или анод (куда входит или выключается питание), а остальные 3 «ножки» - это красный, зеленый и синий светодиоды. Имея это в виду, да, мы можем чарлиплексировать их тоже! Каждый светодиод RGB считается за 3 обычных светодиода. Таким образом, вы по-прежнему можете включать и выключать их все по отдельности и создавать крутые цвета на выбор! Единственным недостатком является то, что это значительно усложняет задачу, так как вам придется составлять карту / планировать и подключать в 3 раза больше светодиодов, чем вам нужно было изначально.
Я выбрал 42 светодиода RGB на 13 контактах. Это 126 обычных светодиодов… довольно много. Позвольте мне рассказать вам, как я это сделал.
Шаг 2: планирование
Да, этот шаг довольно прост, если вы понимаете теорию, лежащую в основе того, что вы делаете. Вы в основном записываете все свои светодиоды и планируете, какой контакт должен перейти к какой «ножке» какого RGB-светодиода, чтобы охватить все возможные варианты. Я приложил изображение своего планирования, не стесняйтесь использовать и его (я не использовал все доступные варианты, так как мне «всего» нужно было 126 подключений из 156. Я структурировал его таким образом, потому что это сделало бы строительство немного более выполнимым).
Важно изложить это на бумаге, это понадобится вам позже для написания кода. Если вы не запишете это и испортите 1 соединение, код не будет работать для этого светодиода.
Шаг 3: Код
Итак, если у вас уже есть идея, как подключить 2 таких светодиода RGB к 2 контактам: Вперед! Приятно проверить код, но уверяю вас, он работает! Я попытался сделать как можно больше «чистого» кодирования (вы также можете справиться с этим с помощью переключателей в переключателях, но это просто ужасная проблема, когда вы записываете весь свой код x42, это заставило меня понять, что, вероятно, был лучший способ).
Цель кода следующая. Вы начинаете с LED1. Кнопка 1 позволяет перейти к следующему светодиоду, но предыдущий светодиод остается включенным. Кнопка 2 позволяет вернуться к предыдущему светодиоду, кнопка 3 позволяет изменить цвет. Текущий выбранный светодиод мигает, поэтому вы можете видеть, какой светодиод «выбран».
Для этого я работал с массивами. Я создал класс светодиода, который использует информацию, которую вы записали на этапе планирования, чтобы увидеть, какой вывод нужен для создания определенного цвета. Я помещаю их все в массив, и я позволяю arduino проходить через светодиодный массив, чтобы определить, какой из них включен, и через цветной массив, чтобы определить, какой цвет выбран (цвет определяется переключателем, который позволяет выбрать 7 цветов). Мигание регулируется оператором if.
Код прилагается, не стесняйтесь загружать и использовать. Раздел комментариев открыт для вопросов, если вы чего-то не понимаете, но вы можете просто скопировать и вставить!
Шаг 4: самая сложная часть
Итак, теперь у вас есть идея, рабочий код… а не сам продукт. Это, безусловно, самая ужасная часть этого проекта, и я бы посоветовал вам не относиться к этому легкомысленно. Помните все эти разные ножки, которые заканчиваются одной булавкой? ну да … вы должны сделать свою сетку из светодиодов, затем подключить каждую ножку к каждой другой ножке, которая должна перейти к тому же выводу, а затем подключить их к указанному выводу. Это, безусловно, самая сложная часть, и моя тоже не вышла на 100% идеальной, хотя, если вы хорошо умеете паять, у вас может быть шанс.
Я поставил ряд светодиодов RGB за раз и подключил медный провод к каждой ноге (я рекомендую медный провод с корпусом / оберткой. Мой был слишком толстым, и это вызвало у меня ОЧЕНЬ огорчения). Будьте осторожны, чтобы никакие две ножки или провода не соприкасались друг с другом! затем «просто» подключите все провода, которые должны пройти к одному и тому же контакту, а затем подключите их к резистору и подключите его к указанному контакту. Я уверен, что есть "более безопасный" способ сделать это, но я уверен, что можно утонуть в проводе, пытаясь и, честно говоря … ваш макет просто такой большой!
(Я добавил рисунок, который мог бы упростить этот шаг. Он говорит вам, какая нога должна перейти к какому выводу, чтобы точно следовать моему коду.)
На это у меня ушло целых 4 дня работы, но теперь каждый светодиод (минус 3-4, которые я напортачил) можно включать индивидуально!
тогда вам нужно только подключить несколько кнопок и готово! Ваша собственная картина в стиле пиксель-арт!
Этот парень также сделал пример проводки, это действительно полезно
Шаг 5: злорадство. Абсолютно злорадство
Если вы начинающий (как я), и вам удалось сделать что-то даже похожее на это крысиное гнездо проводов, и оно включается; злорадствовать. Вы действительно хорошо сделали!
Если у вас есть какие-либо вопросы / комментарии, просто оставьте их ниже, я постараюсь помочь, если смогу!