Как сделать пульсирующий светодиод Arduino, который выглядит так, как будто он из будущего
Если вы баловались с некоторыми начинающими проектами Arduino, но ищете что-то немного постоянное и на совершенно ином уровне удивительного, то скромный светодиодный куб 4 x 4 x 4 — естественный выбор. Конструкция намного проще, чем вы думаете, и используя мультиплексирование, мы можем управлять всеми светодиодами прямо с одной платы Arduino Uno. Это отличная практика пайки, и общая стоимость компонентов не должна превышать 40 долларов.
Сегодня я подробно расскажу о конструктивной стороне и предоставлю программное обеспечение для его работы, которое будет выглядеть впечатляюще и научит вас основам.
Тебе понадобится
- Ардуино . Поставляемый код предполагает Arduino Uno, но может быть адаптирован и к более крупной модели.
- 64 светодиода — выбор за вами, но я использовал эти яркие 3-миллиметровые синие светодиоды ( 3,2 В 30 мА ) при £ 2,64 за 50.
- 16 резисторов соответствующего значения для ваших светодиодов. Для светодиодов выше, 99 пенсов купили 100 из них. Используйте ledcalc.com — введите 5 В для напряжения питания, напряжения светодиодов (в моем случае 3.2) и тока в миллиамперах (3.2). Ваш желаемый резистор будет показан в поле с надписью «Ближайший резистор с более высоким номиналом» , а затем просто найдите это значение на eBay.
- Немного ремесленной проволоки для укрепления базовой конструкции и для отделки — я использовал толщину 0,8 мм .
- Макетная плата какого-то типа, к которой вы можете припаять все свои биты. Я использовал тот, у которого не было полных дорожек вдоль него, так как у меня нет дорожного резца, но использую то, что вам подходит. Щит для прототипирования Arduino слишком мал, если только вы не сожмете свои светодиоды вместе.
- Случайный компонентный провод — некоторые жилы сетевого кабеля и некоторые прототипные провода из комплекта будут работать нормально.
- Зажимы «крокодил» или «руки помощи» полезны для удержания бит на месте.
- Паяльник и припой.
- Немного дров.
- Дрель с битом того же размера, что и ваши светодиоды.
Примечание: 3D-рисунки в этом уроке были выполнены за несколько минут с использованием TinkerCAD . Я следовал за существующей сборкой, подробно описывающей Instructables пользователем forte1994 , которую вы, возможно, также захотите прочитать, прежде чем пытаться это сделать.
Обязательно прочитайте все эти инструкции, прежде чем пытаться сделать это самостоятельно.
Принцип этой конструкции
Прежде чем приступить к созданию, важно иметь полный обзор того, как эта штука будет работать, чтобы вы могли импровизировать и выявлять ошибки по мере продвижения. Некоторые светодиодные кубы используют один выходной контакт для каждого отдельного светодиода — однако в кубе 4x4x4 для этого потребуется 64 контакта, чего у Arduino Uno у нас, конечно, нет. Одним из решений было бы использование сдвиговых регистров. , но это неоправданно сложно.
Чтобы управлять всеми этими светодиодами всего за 20 контактов, мы будем использовать технику, называемую мультиплексированием. Разбивая куб на 4 отдельных слоя, нам нужны только управляющие контакты для 16 светодиодов — поэтому, чтобы зажечь конкретный светодиод, мы должны активировать как слой, так и управляющий контакт, что дает нам общее требование 16 + 4 контакта. Каждый слой имеет общий катод — отрицательную часть цепи — так что все отрицательные ветви соединены вместе и подключены к одному выводу для этого слоя.
На анодной (положительной) стороне каждый светодиод будет подключен к соответствующему светодиоду в слое над и под ним. По сути, у нас есть 16 столбцов положительных ног и 4 слоя отрицательных. Вот несколько трехмерных изображений соединений, которые помогут вам понять:
строительство
Поскольку мы не будем использовать цельнометаллическую конструкцию для пайки, мы хотим, чтобы все ножки светодиодов перекрывались примерно на четверть и придавали жесткость конструкции. Сложите катод ваших светодиодов — сторону с плоской выемкой в голове и более короткую ногу — над, как показано на рисунке. (На самом деле не имеет значения, сгибаете ли вы его влево или вправо, если вы последовательны и никогда не касаетесь анода)
Первая важная часть этого проекта — изготовление деревянной фрезы. Это удержит слой светодиодов, пока вы спаяете ноги вместе, поэтому он должен быть точным и не слишком рыхлым. Используя сверло того же размера, что и ваши светодиоды, отмерьте, а затем просверлите матрицу 4 × 4 равноотстоящих отверстий. Имейте в виду, что вы хотите, чтобы около четверти ноги перекрывали соседа, и используйте настоящую линейку. Проверьте каждое отверстие, чтобы убедиться, что светодиод плотно прилегает, но не настолько плотно, что вы не сможете его снова вытащить или у вас возникнут проблемы при попытке удалить полностью припаянный слой.
Припой катодов из 4 рядов светодиодов. Будьте осторожны, чтобы не перегореть светодиоды — вам нужен хороший горячий утюг, а также входить и выходить. Вот мои первые четыре ряда завершены.
Теперь, чтобы усилить жесткость слоя, отрежьте и припаяйте два прямых кусочка проволочной проволоки к обоим концам, убедившись, что они соединяются с каждым рядом. Это ваш первый слой завершен. Оставьте все лишние ноги торчащими на бок.
Сейчас самое время протестировать — просто загрузите приложение Arduino blink по умолчанию и, подключив резистор, подключите заземление к рамке слоя и по очереди нажмите положительный вывод на каждый светодиод.
Надеюсь, они все загорятся. Если нет, убедитесь, что вы не пропустили где-нибудь паяное соединение, и при необходимости замените светодиод.
Удалите этот слой с зажима и повторите процесс еще 3 раза .
Не беспокойтесь, если ваша пайка не идеальна — до тех пор, пока она не разорвется и соединение будет надежным, это не повлияет на конечный продукт. Я признаю, моя пайка была довольно безнадежной, мой зажим был снят, и все это напоминало Пизанскую башню. Тем не менее, я горжусь законченным кубом, и когда светятся светодиоды, вы все равно не будете смотреть на паяные соединения!
Объединение слоев
Как только у вас будет 4 законченных слоя, вы захотите соединить все вертикальные ноги вместе. Я обнаружил, что это самая сложная часть сборки, и чтобы помочь процессу, я вырезал стояк из карты.
Это позволило сохранить слои на соответствующей высоте, но многие ноги все равно не выровнялись бы идеально — для этого я использовал несколько зажимов для крокодилов, чтобы удерживать их на месте.
1-ая глупая ошибка, которой следует избегать
Только после завершения полного слоя я понял, что мой стояк карты застрял на месте, поэтому мне пришлось его вырезать! Не делайте ту же ошибку, что и я, — сделайте стояк длиннее на стороне и соедините кусочки карты за пределами куба, чтобы после завершения слоя вы могли разобрать стояк и вытащить карту.
2-я глупая ошибка, которой следует избегать
Не припаивайте вертикальную ножку к катодной рамке, очевидно. Вертикальные ножки должны соединяться только с другими вертикальными ножками, и ничем иным.
Опять же, тестируйте после того, как каждый слой был прикреплен. Протестируйте все слои, фактически, только касаясь положительного провода к кончику самого верхнего слоя, тем самым гарантируя, что у вас есть хороший контакт, проходящий через все слои.
Когда все 4 слоя были спаяны вместе, я принялся немного прибираться — я оставлял одну ногу вытянутой из каждого слоя в виде ступеньки — это было бы опущено на доску позже. Другие посторонние кусочки металлического каркаса и ножек были отрезаны. Очевидно, не обрезайте никакие вертикальные ножки — мы должны поместить их в нашу макетную доску.
Крепление к доске
Помните, когда я говорил, что прикрепление каждого слоя к себе было самой сложной частью? Я врал. Попытка вставить 16 светодиодных ножек в крошечные отверстия на макетной плате на самом деле сложнее. Самым простым способом, который я нашел, было проколоть 4 за раз, закрепить их внизу зажимами крокодила, а затем перейти к следующему ряду 4. Используйте маркерную ручку, чтобы разметить интервалы заранее, если это поможет.
Оглядываясь назад, я бы на самом деле поместил сначала резисторы в макетную плату. На самом деле я спаял все ножки куба с доской, а затем попытался аккуратно протолкнуть резисторы между ними. Учитесь на моей ошибке и поместите ваши резисторы в первую очередь.
Я попытался распределить их одинаково, шагая так, чтобы я мог использовать одну целую сторону куба для всех последних соединений с Arduino. Вот схема, с которой я пошел:
Для четырех отрицательных слоев я уронил один провод вниз от каждого слоя, а затем просто оттащил их в сторону, например так:
Наконец, я добавил несколько соединительных проводов, которые затем можно было вставить в соответствующие контакты Arduino. Используйте самый длинный вид, который у вас есть. Обратите внимание, что я испортил порядок местами из-за плохого планирования. Каждый ряд светодиодов был цветной.
Вот и все. Законченный!
Программирование вашего куба
Я знаю, что вам не терпится запустить эту штуку, поэтому подключите 4 отрицательных слоя к портам аналогового ввода / вывода A2 (нижний уровень) — A5 (верхний уровень) (они также могут действовать как цифровые входы / выходы)
Загрузите демонстрационные образцы и код от обучаемого пользователя forte1994 . Он также предоставил полезный онлайн-инструмент для проектирования шаблонов байтов для настройки собственной последовательности. Вот видео этого кода в действии на моем кубе (я установил скорость 5 вместо 20 по умолчанию)
Конечно, это не единственный способ программирования вашего куба, поэтому позвольте мне потратить несколько минут на обучение основам программирования собственных шаблонов, а не на воспроизведение предустановленных шаблонов, как в приведенной выше демонстрации.
Есть несколько вещей, которые вы должны знать, пытаясь запрограммировать свой куб:
- Для адресации одного светодиода используется плоскость (слой) с номерами 0–3 и выводом светодиодов с номерами 0–15. Поверните плоскость на НИЗКИЙ выход (так как это отрицательный участок) и номер контакта светодиода HIGH (положительный участок), чтобы активировать светодиод.
- Перед тем, как активировать один светодиод, убедитесь, что все остальные плоскости выключены — это означает, что установите их на ВЫСОКИЙ выход. Невыполнение этого требования приведет к тому, что столбец светодиодов будет гореть, а не один светодиод.
Имея это в виду, я сделал две очень простые программные последовательности для вас — скачайте код отсюда . Первый просто загорается каждый светодиод последовательно, последовательно. Для этого мы используем два цикла for, перебирая каждый слой и каждый контрольный вывод.
Второй случайный цикл (вам нужно закомментировать первый и включить его в основном цикле, чтобы проверить его). Он просто выбирает случайный слой и случайный управляющий штырь, мигая их включением и выключением.
Резюме
Не пугайтесь этой сборки — мне серьезно не хватает навыков пайки, и я справился с этим хорошо (я думаю?) . Общее время сборки составило около часа в день на неделю. В следующий раз я попытаюсь научить вас более амбициозному программированию для куба, поэтому я надеюсь, что вы присоединитесь ко мне в создании собственного куба на этой неделе и загрузке нового кода на следующей неделе — и если вы все же сделаете свой собственный отличные приложения или последовательности, пожалуйста, загрузите их в Pastebin и дайте нам знать в комментариях!
Светодиоды всегда тусклые с arduino nano (led, voltage)
arduino-nano led voltage
поэтому я делаю анимированный светодиодный стоп-сигнал с помощью arduino nano, похожий на этот: https://www. youtube.com/watch?v=d5Ohzg3JKq0&ab_channel=IMEEMADE
У меня есть 18 каналов, с разным количеством последовательных светодиодов и резистора. Все светодиоды + соединены вместе, предназначены для входа 14,5 В, с отдельным резистором после последнего катода светодиода:
У меня есть несколько каналов с 1 светодиодом, 2 светодиода и 4 светодиода, все настроены с различными резисторами, так что каждый канал «тянет» ~20 мА при 14,5 В. 12 В работает отлично, а также просто немного диммер. На источнике питания я могу заземлить любой канал без перекрестных помех или заземлить все и все светодиоды равномерно (из того, что могут сказать мои глаза).
Первоначально я планировал предоставить 5 В вход для arduino с помощью преобразователя buck и подключить каждый канал к цифровому выходу (D2-D19 или D2-D13 + A0-A5). В итоге я обеспечил 12 В на Vin и 12 В на светодиоды, а также arduino вообще не работал, как ожидалось, с 14,5 В на светодиоды и 12 В на Vin.
Моя проблема заключается в том, что при такой настройке, независимо от того, что я делаю в коде, когда arduino подключен к Vin и заземлению, некоторые светодиоды всегда горят тускло (странно D2-D13). Они действительно становятся ярче, когда pinMode
установлен в OUTPUT
и вызывается digitalWrite({pin}, LOW)
. Но запись HIGH
или установка
для ввода
не отключает их, просто оставляет их тусклыми. Я попытался настроить Vin между 7-12 В, установив регулятор на 5 В и подключившись непосредственно к 5 В. Никаких изменений в поведении. Единственное, что заставляет светодиоды тускло светиться, — это снижение входного напряжения на сами светодиоды. Но тогда мне не хватает, чтобы управлять 4-мя светодиодными каналами серии…
Я знаю, что это может сработать, потому что в видео, которое я связал, есть 4 светодиода серии, управляемые таким же образом (хотя и красные, я использую белые), но с использованием arduino объясняется не так уж много.
Что я делаю неправильно или как я могу заставить это работать? Мне нужно как минимум 12 В к светодиодной плате, чтобы убедиться, что каналы 4-й серии горят правильно. Из того, что я прочитал, я уже исчерпал цифровые каналы на arduino nano, поэтому не могу использовать один из них в качестве входного сигнала (вместо Vin или 5V), если это имеет значение, или разделить 4 серии на 2 канала и т. Д.
Заранее спасибо!
@user72995, 👍0
Обсуждение
2 ответа
Лучший ответ:
▲ 1
Вы не можете управлять светодиодами от источника, превышающего 5 В, как низкоугловой переключатель с Arduino напрямую. Для этого вам нужен выход «open drain».
Вы можете создать их на Arduino, добавив один транзистор (N-канальный МОП-транзистор с порогом «логического уровня» или NPN BJT), который Arduino переключает:
R2 просто существует, чтобы держать M1 выключенным, когда Arduino не активно управляет им (т. Е. В то время Как загрузчик работает и т. Д.).
,
@
▲ 1
Что делать, смотрите в ответеМаенко .
Это касается того, почему вы видите то, что видите, или природы части вашего вопроса «Что я делаю не так», и поэтому вам нужно сделать что-то вроде того, что предлагает Майенко.
Внутри микроконтроллера находятся диоды, которые защищают его от переходных процессов напряжения, наблюдаемых на выводе GPIO. Один из них подключается от вывода GPIO к выводу VCC («5V») MCU. Это в значительной степени относится практически к любому микроконтроллеру, а значит, и к любым выводам Arduino, с вариациями для таких вещей, как детали 5 В и 3,3 В. Вывод СБРОСА на ардуино на базе AVR имеет внешний диод по причинам, связанным с нежеланием (не) входить в высоковольтное программирование.
Когда GPIO не является ВЫХОДНЫМ и НИЗКИМ, то есть если он ВЫСОКИЙ, или ВХОДНОЙ, или INPUT_PULLUP, ток идет от вашего номинального источника 12 В, вниз через вашу нагрузку (светодиод и ограничение тока), в ваш вывод GPIO и через защитный диод на рельс 5 В вашего Arduino. Оттуда он будет конкурировать с вашим регулятором 5V (или регулятором USB хоста), чтобы попытаться включить все на Arduino, например, ваш «L» LED, последовательный трансивер, регулятор 3,3 В, сам AVR и т. Д. И все остальное, что вы подключили к «5V».
Таким образом, ваши контакты GPIO рассчитаны только на то, что-VCC-плюс около падения диода; где-то около 5,5 В в этом случае. Выше этого напряжения начинает проводить защитный диод, и GPIO не кажется высокоимпедансным тому, что к нему подключено.
Когда вам повезет, в вашей нагрузке достаточно сопротивления, чтобы ограничить ток через защитный диод:
меньший ток, чем номинальный постоянный ток защитного диода, который довольно низок, часто ниже 1 мА. В противном случае, в то время как это происходит, вы, вероятно, пытаетесь убить защитный диод и все, что он может взять с собой.
меньший ток, чем может использовать Arduino. В противном случае напряжение на «5В» хорошо поднимется до точки жарки вещей. Он будет возвращать обратно то, что должно регулировать 5 В на Arduino, что может быть проблемой, а может и не быть проблемой в зависимости от конструкции того или иного регулятора.
Если бы вы сделали это с большей нагрузкой, это, вероятно, просто выскочило бы на вашем Arduino. На другом конце спектра установка достаточно большого резистора последовательно с выводом GPIO является распространенным методом грубого приема входных сигналов более высокого напряжения.
Схема в ответе Майенко не обеспечивает путь, который позволил бы любому току говорить о перемещении от источника 12 В в вывод GPIO.
, @timemage
Подключение светодиода к ардуино: RGB, cхемы
Как и обещали мы будем публиковать статьи посвященные изучению Arduino, используя купленный нами стартовый набор, подробный обзор которого вы можете посмотреть тут. Сегодня мы разберемся с тем, как подключить ардуино к компьютеру и начать на ней что-то программировать.
Содержание:
1. Подключение и настройка
2. Видео инструкция
3. Вместо заключения
Для этого сегодня нам нужны:
- Плата Arduino.
- USB-шнур для подключения к компьютеру.
- Светодиоды одноцветные и RGB-светодиод.
- Резисторы для светодиодов.
- Макетная плата, перемычки, источник питания для макетной платы, крона (можно обойтись и без всего этого, но желательно это иметь).
Подключение и настройка
Есть несколько вариантов плат Arduino, они отличаются не только стоимостью, но и USB-TTL конвертером, он нужен, чтобы программировать главный микроконтроллер платы (ATMEGA328) прямо через USB-порт вашего компьютера без дополнительных программаторов. Например, в моей плате используется для связи с компьютером микроконтроллер типа AT16U2 и драйвера на него установились автоматически. Но часто попадаются дешевые платы, где в этих же целях используется микросхема Ch440 (Ch441). В этом случае нужно скачать под неё драйвер, он легко находится в сети по запросу «Ch440 драйвер windows 7/10», либо воспользоваться драйвером отсюда – https://yadi.sk/d/fJIY45oCld0pzA
Далее с официального сайта скачиваем актуальную версию Arduino IDE и устанавливаем его, кстати, нам предлагают воспользоваться онлайн версией IDE, но проверять её сегодня мы не будем, если интересно — может протестировать в отдельной статье.
Ссылка на скачивание Arduino IDE с официального сайтаНа следующей странице предложат отправить донат, если вы не хотите этого делать, то нажмите Just Download. Запускаем установку и соглашаемся со всем, что нам предлагает установщик, ждем пока она закончится.
Процесс установки Arduino IDEБлиже к концу нам предложат установить дополнительные драйвера и ПО, также соглашаемся. Я не стал делать скриншоты всех всплывающих окон (их было 3), а просто нажал «Установить» в каждом из них. В конце нажимаем на Close. Подключаем плату Arduino к компьютеру, если нужно — устанавливаем драйвера, о которых говорилось выше, если нет — ждем пока всё установится само. В конечном итоге, в диспетчере устройств должна появится ваша ардуина.
В диспетчере задач должно появится новое устройствоДалее запускаем программу. В меню «Инструменты» должно быть «Порт: «название порта название платы», и в подменю стоять галочка, как на скриншоте ниже, у меня там было пусто, и я поставил. Если у вас не UNO, а nano например — выбирайте соответствующий пункт меню.
Настройки программы Arduino IDEПри подключении ардуино к компьютеру она начинает мигать желтым светодиодом, он с завода припаян к 13-му пину, а для проверки работоспособности с завода в платы предустанавливается прошивка с мигалкой по 13-му пину, в наборе базовых примеров кода Arduino IDE он есть под названием Blink.
Стандартная программа для проверки Arduino — это своего рода «Hello World» в мире микроконтроллеровСегодня мы не будем сильно вдаваться в код, а будем использовать то, что есть и разбирать его отдельные части, решая проблемы по мере поступления. Начнем изменять этот пример, в нижней части предыдущей иллюстрации мы видим набор команд, которые циклично выполняются в процессе работы МК:
Эта часть кода повторяется постоянно в процессе работы микроконтроллераРазберем эти команды. digitalWrite – это запись цифрового состояния на указанный пин (здесь это LED_BUILTIN — это и есть 13-й пин платы Ардуино), HIGH – значение, которое записывается, т.е. логическая единица. Результатом выполнения этой команды будет появление на 13-м пине высокого логического уровня, напряжения питания микроконтроллера, в нашем случае это 5 вольт.
Далее идёт функция delay(1000) это задержка, а в скобках её аргумент — время в миллисекундах.
После нее вновь digitalWrite, но уже со значением LOW — это низкий логический уровень, т.е. 0 вольт. После чего опять задержка.
Светодиод мигает с периодом в 2 секунды, как и написано в программном кодеВ конце каждой команды должна стоять точка с запятой — это важно.
Таким образом, светодиод включается и выключается с задержкой в 1 секунду, если мы поставим вместо 1000, в аргумент delay, например, 200 и 1000 (в первом и втором случае), то у нас светодиод будет вспыхивать на 1/5 секунды, а потом выключаться и вновь вспыхивать через 1 секунду.
Изменяем порядок миганияЧтобы прошить наш код в Arduino нужно нажать на вот эту кнопкуНо что, если нам нужно подключить несколько светодиодов к разным пинам? Всё просто, по подобию пишем вот такой код:
Первое из изменений, на которые следует обратить внимание, это часть кода в функции void setup(). Она выполняется 1 раз при включении микроконтроллеры и в ней задаются какие-либо параметры, в нашем случае, указываются номера пинов платы и их функция (работать как вход или как выход), синтаксис здесь следующий pinMode (номер порта, назначение). Номера пинов также нанесены на печатной плате всех ардуино, это очень удобно. Дальше просто по очереди микаем каждым из светодиодов, подключенных к 12, 11, 10. 9 пинам.
Схема подключения светодиодов для рассмотренного выше кодаМнение эксперта
Алексей Бартош
Специалист по ремонту, обслуживанию электрооборудования и промышленной электроники.
Задать вопрос эксперту
Резисторы для светодиодов нужно рассчитывать по формуле R=Uпит-Uпад/Iном, где Uпит — напряжение питания, Uпад – падение напряжения на светодиоде (у каждого цвета разное). Я не рассчитывал, просто взял заведомо больше чем нужное сопротивление — каждый по 220Ом.
Loading…
Онлайн рассчет Введите напряжение и выберите цвет светодиода
Напряжение питания *
Номинальный ток светодиода
Цвет светодиода Белый (3,0-3,3 В)Красный (1,6-2,1 В)Оранжевый (1,9-2,1 В)Жёлтый (1,9-2,1 В)Зелёный (2,6-3,4 В)Синий (3,0-3,3 В)Фиолетовый (3,2-3,4 В)Инфракрасный (1,4-2 В)УФ-светодиод (3,2-4 В)
Сопротивление резистора: Ом
Мощность токоограничивающего резистора не менее: Вт
Стандартный резистор (E24): Ом
Сопротивление рассчитывается по средней величине диапазона номинальных напряжений указанного в скобках. Номинальный ток, который указан по умолчанию (20 мА) — это номинальный ток для большинства 5-миллиметровых светодиодов. Полученное значение сопротивления нужно округлить в большую сторону до ближайшего номинального сопротивления резисторов из доступных. То есть если получилось 45 Ом, но такого резистора вы купить не можете, смело округляйте до 47 Ом(есть в основных распространённых рядов номиналов резисторов E3, E6, E12, E24).
Важно! После расчёта, подбора резистора и подключения светодиода измеряйте ток через него и сверяйте с указанным в технической документации. При необходимости корректируйте сопротивления резистора.
Полную распиновку платы, номера выводов и их дополнительные функции вы видите на рисунке ниже.Распиновка Arduino UNOРезультат выполнения этого кода — светодиоды загораются каждый по очереди, подобно светофору
С обычными светодиодами разобрались, теперь же давайте перейдем к RGB-светодиодам. Что это вообще такое? Фактически это 3 обычных одноцветных кристалла соединены между собой в одном корпусе, существуют две схемы соединения RGB-светодиодов или чего-нибудь подобного (например, семисегментных индикаторов), их вы видите на рисунке ниже.
Чтобы определить как соединены светодиоды в вашем RGB-светодиод, нужен мультиметр и его режим прозвонки диодов, находим общий вывод и по значениям на экране определяем проводимость и соответственно направление подключения. При правильном подключении щупов мультиметра к выводам светодиода, тот загорится соответствующим цветом, а на экране должны появится какие-то значения (у меня было от 1000 до 2000 мВ).
Какой из выводов общий видно через прозрачную колбу он соединен с самым крупным элементом внутриУ меня оказался светодиод с общим катодом. Почти переделывая код (удалим лишь всё, что связано с 12 пином и уберем паузу между цветами), изменим схему подключения, теперь через резисторы мы будем подавать сигнал от микроконтроллера.
Код для перебора трёх цветов RGB-светодиодаСхема подключения RGB-светодиодаПример работы RGB-светодиода с ардуиноЧтобы получить цвета, кроме красного, зеленого и синего, нужно подавать сигнал на несколько выводов одновременно, пример того, как это сделать вы видите ниже.
Код для перебора 7 цветов RGB-светодиода
Перебор цветов RGB-светодиодаУ пинов № 9, 10, 11, есть возможность выдавать ШИМ-сигнал, что это такое и как это работает мы разберем в следующих статьях, а пока я покажу, как это можно применить с RGB-светодиодом. Чтобы цвета не резко менялись, а плавно переходили из одного в другой, нужно использовать команду analogWrite, таким образом, на предназначенных для этого пинах формируется ШИМ-сигнал, с помощью которого можно регулировать яркость светодиодов. Я решил для реализации этого эффекта использовать цикл for, возможно можно его проще реализовать, но я думаю, что для демонстрации подойдет. Скорость перелива задаётся командой задержки (delay), после того как достигается максимум одного цвета, начинает нарастать следующий цвет, после чего первый цвет начинает угасать. За основу я выбрал код плавного мигания светодиодом из набора примеров (fade). Вы можете сами проанализировать приведенный ниже код, там, где написано brightness + fadeamount — там происходит повышение интенсивности свечения цвета, а где цикл с brightness – fadeamount — снижение.
Код плавной смены цветов RGB-светодиодак содержанию ↑Видео инструкция
Вместо заключения
Мнение эксперта
Алексей Бартош
Специалист по ремонту, обслуживанию электрооборудования и промышленной электроники.
Задать вопрос эксперту
На этом закончим разговор о подключении светодиодов к ардуино и управлении ими. Целью этой статьи было показать, как можно подключать светодиоды и управлять ими, а также был приведен пример плавной регулировки яркости светодиодов с помощью ШИМ. В следующих статьях мы подробнее рассмотрим вопросы ввода каких-либо данных и взаимодействия с Arduino, вопросы, связанные с ШИМ-регулированием, чтением аналоговых сигналов и прочее. Если вам интересно развитие этого проекта — подписывайтесь, ставьте лайки и оставляйте комментарии. Также хотелось бы увидеть какие-либо практические советы по реализации чего-либо.
ПредыдущаяArduinoВидео и фото обзор стартового набора Arduino для UNO R3 из посылки на Aliexpress
СледующаяArduinoМастер-класс «Люстра-паук» своими руками
10 лучших проектов Arduino со светодиодами Многие из этих плат используют 8-битный микроконтроллер Atmel, хотя некоторые из более поздних плат основаны на 32-битном микроконтроллере.
Обычный проект для новичков — заставить мигать светодиод, прежде чем переходить к более сложным проектам. В этой статье давайте взглянем на некоторые фантастические светодиодные проекты, которые вы можете сделать с помощью Arduino!
Nanoleaf — это бренд умного освещения в виде треугольных или шестиугольных панелей, меняющих цвет. С Arduino, корпусом, напечатанным на 3D-принтере, и светодиодными лентами вы можете сделать свои собственные осветительные приборы в геометрическом стиле.
Хотя производитель использовал WeMos D1 Mini Pro на базе ESP8266, было отмечено, что его можно заменить на Arduino Mega. Следуйте руководству по шестиугольным светодиодным фонарям Nanoleaf DIY, ссылка на которое приведена выше, чтобы создать свой собственный. Кроме того, на Thingiverse есть сборка с треугольным корпусом, напечатанным на 3D-принтере.
Это пушистая, удобная помпонная повязка с подсветкой, состоящая из адресных светодиодов и платы Arduino Pro Mini 5 В/16 МГц, а также двух аккумуляторов LiPo емкостью 400 мАч.
Производитель отмечает, что автономная схема включает в себя светодиоды и батареи, соединенные параллельно. В более продвинутой схеме используется Arduino. Создайте свой собственный, следуя пошаговым инструкциям SparkFun, указанным выше.
Это не просто старые часы, это часы с подсветкой, построенные из семисегментных светодиодных модулей и программируемые с помощью Arduino Pro Mini или Arduino Nano. Производитель отмечает, что каждый сегмент может быть освещен разным цветом, поэтому комбинации ограничены только вашим воображением. Следуйте инструкциям, указанным выше, на Thingiverse.
Альтернативная версия — это 7-сегментные светодиодные часы с WeMos D1 Mini.
С несколькими сервоприводами, часами реального времени, кнопкой, светящейся наклейкой, УФ-светодиодом и Arduino вы можете построить свои собственные часы, светящиеся в темноте. Как следует из названия, это устройство отображает (то есть рисует) время, а не просто отображает его с помощью светодиодных цифр.
Полную принципиальную схему, перечень материалов, видео сборки, код и калибровку двигателя, а также кучу фотографий документации можно найти на странице Thingiverse, указанной выше.
Как следует из названия, это самодельное световое устройство, выполненное в виде рудной лампы из видеоигры Minecraft. Корпус можно распечатать на 3D-принтере из предоставленных файлов.
Производитель рекомендует различные настройки FDM-принтера для этой сборки, такие как печать серым PLA с разрешением 0,2, а также заполнение 15%. Никаких плотов и опор не требуется.
Чтобы создать свой собственный, ознакомьтесь с кратким описанием документации на сайте Thingiverse, ссылка на который приведена выше.
указание авторства не требуется — скриншот из MyMiniFactoryЭта очаровательная светодиодная лампа для настроения была сделана с помощью Arduino Nano, регулируемого источника питания постоянного тока LM2596, светодиодных лент RGB, кнопки, вентилятора и разъема постоянного тока. Корпус, полностью пригодный для 3D-печати, доступен на MyMiniFactory.
Выполните пошаговые инструкции, указанные выше, чтобы создать собственную 3D-печатную светодиодную лампу настроения!
Это светодиодный костюм гигантского размера, который позволяет вам одеться как классический 8-битный персонаж видеоигры, Pac-Man. Производитель отмечает, что для легкости и удобства ношения использовались картон и полупрозрачная бумажная обложка.
В его основе лежит Arduino Uno и 12-миллиметровые адресные светодиоды WS2811, а для питания всего этого использовался источник питания постоянного тока 5 В.
Ознакомьтесь с учебным пособием в Центре проектов Arduino по ссылке выше, чтобы создать свой собственный костюм Pac-Man со светодиодной пиксельной панелью.
Эта скульптура тюльпана светится легким прикосновением, что делает ее идеальным подарком. Его можно использовать для домашнего освещения или как часть дизайна костюма.
Его шесть лепестков имеют светодиоды WS2812, встроенные в их латунный стержень, и микросервопривод, который заставляет их открываться и закрываться. Они подключены к Arduino Nano R3 и сенсорному датчику TTP223.
Пошаговые инструкции можно найти на обучающей странице Ever Blooming Mechanical Tulip в Arduino Project Hub, ссылка на которую приведена выше.
Сам по себе Arduino имеет ограниченное количество контактов, которые можно использовать для подключения внешних компонентов, таких как светодиоды. Для управления светодиодной матрицей 48 x 8 в этом проекте использовался регистр сдвига 74HC595 вместе с Arduino Uno.
Производитель отмечает, что, просто копируя матрицу 8 x 8 для управления столбцами, вы можете расширить матрицу до любого количества столбцов. Сдвиговый регистр требуется для каждых восьми столбцов. Для сравнения, вам просто нужен один регистр сдвига для управления всеми строками.
Хотя корпус был сделан из дерева, производитель рекомендует разработать его в Fusion360 и распечатать на 3D-принтере. Чтобы попробовать, ознакомьтесь с учебным пособием на Arduino Project Hub. ссылка выше.
Это пара беспроводных светодиодных сердец, созданных с помощью Arduino Pro Mini 328 5V/16MHz. При размещении близко друг к другу они будут мигать в унисон!
Чип nRF был запрограммирован с помощью библиотеки RF24, а светодиоды были закодированы с помощью FastLED. Одно из сердец было назначено передатчиком (TX), а другое — приемником (RX). По словам производителя, поскольку у nRF есть autoACK, нет необходимости вручную переключать режимы между RX и TX.
Корпуса были переработаны из декоративных пластиковых коробок в форме сердца и покрыты белой аэрозольной краской. Чтобы создать свой собственный Valentine Blink, ознакомьтесь с учебным пособием на Arduino Project Hub, ссылка на которое приведена выше.
Какой светодиодный проект вы сделаете?
В этой статье мы рассмотрели десять проектов светодиодов, сделанных с помощью Arduino. Многие из этих проектов используют адресные светодиодные ленты, а также ряд плат Arduino. Некоторые из них повторно использовали декорации для вечеринок или картон, в то время как другие имеют корпуса, напечатанные на 3D-принтере. Кроме того, некоторые использовали популярную библиотеку FastLED, поэтому проверьте ее, если вы еще этого не сделали.
Управление светодиодами с помощью микроконтроллера Arduino
- Управление светодиодным индикатором (основное)
- Выберите правильное значение резистора для вашего приложения
- Светодиод прямого напряжения
- Какой ток вам нужен?
- Какое напряжение питания?
- И наконец — расчет
- Простой способ измерения Vf
Как управлять светодиодным индикатором (основной)
Светодиод подключается между выходным контактом Arduino и ЛИБО источником питания +Vcc, либо ЗАЗЕМЛЕНИЕМ Arduino, как показано на этой схеме. В любом случае вам понадобится последовательный резистор для ограничения тока светодиода.
В прямоугольнике на схеме показан только один цифровой выходной контакт Arduino.
1: Здесь светодиод и резистор подключены между выходным контактом и ЗАЗЕМЛЕНИЕМ.
Светодиод горит, когда на выходе высокий уровень.
2: Здесь светодиод и резистор подключены между выходным контактом и Vcc.
Светодиод горит, когда на выходе НИЗКИЙ уровень.
Каждый из них имеет свои преимущества и недостатки.
Обратите внимание, что если вы используете стиль 2, ток светодиода также течет по линии ЗАЗЕМЛЕНИЯ Arduino (см. Заземление).
Однако, если вы управляете большим количеством светодиодов, вы можете использовать более подходящие значения, как описано ниже.
Выберите правильное значение резистора для вашего приложения. Смотря как». Это зависит от (1) напряжения питания, (2) прямого напряжения светодиода, Vf и (3) тока, который вы выбираете для протекания через светодиод.
Vf, в свою очередь, зависит от цвета вашего светодиода и материалов, из которых он изготовлен.
Таблица 1 – «правильное» значение резистора для вашего проекта – значения для использования при дневном свете:
Для использования в качестве индикаторов в помещении вы даже можете использовать резисторы номиналом до 10 кОм для минимизации энергопотребления. Попытайся.
Напряжение питания Vcc | Цветной светодиод | Ток мА | Резистор |
---|---|---|---|
3,3 | красно-зеленый | 2,5 | 470 |
3,3 | красно-зеленый | 10 | 120 |
3,3 | синий, белый | 2,5 | 180 |
3.3 | синий, белый | 10 | 39 |
5,0 | красно-зеленый | 2,5 | 1200 |
5,0 | красно-зеленый | 10 | 270 |
5,0 | синий, белый | 2,5 | 820 |
5,0 | синий, белый | 10 | 220 |
В таблице выше приведены некоторые «эмпирические» цифры. Если вы хотите узнать, как они рассчитывались, читайте дальше.
Прямое напряжение светодиода
Ниже приведена таблица (Таблица 2), показывающая прямое напряжение для различных светодиодов в обычном 3-мм или 5-мм корпусе. Он составлен из технических паспортов различных производителей. Если вам нужны точные значения, обратитесь к паспорту используемого устройства.
Вы можете видеть, что светодиоды в «теплом» конце спектра нуждаются только в низком прямом напряжении, в то время как некоторым типам в «холодном» конце — зеленом и далее — может потребоваться более 3,3 В, поэтому вы не можете управлять ими напрямую от модель ардуино на 3,3 В.
Нам также необходимо учитывать электрические характеристики микросхемы Arduino; каждый выход может подавать или потреблять 40 мА; однако «максимальный ток для каждого порта ввода-вывода не должен превышать 100 мА».
(лист данных 32U4, стр. 379)
Если мы подключим 8 светодиодов, потребляющих по 20 мА каждый, к одному порту, мы получим 8*20 мА = 160 мА.
Я измерил прямое напряжение некоторых дешевых светодиодов при токе 10 мА; Размеры 3 мм и 5 мм показали одинаковые значения. Вот результаты:
Цвет | Vf при 10 мА | Комментарий |
инфракрасный | 1,2 | ИК 850нм |
красный | 2,0 | яркий |
янтарный | 2,0 | яркий |
зеленый | 1,9 | очень тусклый |
синий | 2,85 | тусклый |
белый | 2,80 | яркий |
ПРИМЕЧАНИЕ: для использования в качестве индикаторов внутри помещений обычно допустимы красные, оранжевые и желтые светодиоды, а также синие и белые светодиоды при токе около 1 мА. Недорогие зеленые светодиоды НАМНОГО менее эффективны, чем красно-желтые , и требуют более высокого тока, если их интенсивность должна совпадать.
В то время как обычные светодиоды диаметром 3 мм и 5 мм МОГУТ работать при токе 20 мА и более, обычно достаточно максимум 10 мА, что ограничивает потребление, особенно если у вас несколько сигнальных ламп. (См. ниже предел потребления на выходных портах.)
Какой ток вам нужен?
Предположим, вы используете светодиоды в качестве индикаторов, а не, например. для светового шоу современные светодиоды очень хорошо работают при токах 2-10мА, а максимум 20мА. Светодиоды большей мощности будут потреблять больше тока, но тогда лучше использовать готовую микросхему драйвера светодиодов.
Какое напряжение питания?
Напряжение, доступное для питания вашего светодиода от цифрового выхода, представляет собой разницу между напряжением на контакте цифрового выхода и прямым напряжением светодиода. В паспорте ATMega 32U4 указаны следующие МАКСИМАЛЬНЫЕ значения (29,0–29,2) для Vcc = 3,0 или 5,0 В. Значения, которые я измерил для Vol, обычно были намного ниже — около 0,1 В
Vcc | Iol или Ioh | Том | Вох |
---|---|---|---|
5,0 | 10 мА | 0,7 | 4. 2 |
3,0 | 5 мА | 0,5 | 2,3 |
3,3 * | 5 мА | 0,55 | 2,6 |
* нет в техпаспорте — экстраполировано.
И, наконец, расчет
Предположим, мы хотим управлять красным светодиодом с последовательным резистором, подключенным между цифровым выходным контактом и землей на 5V Arduino. Выбираем ток 10мА.
Напряжение, доступное для подачи тока через светодиод, составляет Vcc -Voh = 4,2 В (- 0 В), а прямое напряжение светодиода (из таблицы данных) составляет 2,1 В при 10 мА. 9-3 = 210 Ом.
Ближайшее предпочтительное значение — 220 Ом.
Ссылка: Таблица 2
Простой способ измерения Vf
Если у вас нет таблицы технических данных, все, что вам нужно сделать, чтобы получить полезное (не точное) представление о Vf, это батарея на 9 В и резистор на 1 кОм. За исключением инфракрасного, большинство светодиодов имеют Vf около 2-3 В, поэтому батарея на 9 В будет проталкивать 6-7 мА через резистор 1 кОм. Затем просто используйте мультиметр (или Arduino) для измерения напряжения на светодиоде.
бит, а Arduino в Великобритании
сортировать по наилучшему соответствиюрекомендуемыеновейшиелучшие продажицена 163264 на страницу только в наличии
Поиск не дал результатов.
Показать больше продуктов…
${ stockHtml }
${ hit.product_title }${ hit.variant_title ? («-» + hit.variant_title): «» }:
${ hit.description_first_paragraph}` вернуть $(resultHtml) } const searchResultCallback = (попадания, аспекты, количество) => { debug(«> обратный вызов результатов поиска», совпадения, фасеты, количество) $(«#search .load-more-results»).toggle(hits. page 0) { $(«#search.no-results»).hide() пусть html = «» for(let hit of hits.hits) { $(«#search .results»).append(createSearchResultFull(попадание)) } }еще{ if(searchSearcher.inStockOnly) {$(«#search .no-results .message»).html(«Возможно, у нас есть что-то подходящее, чего нет в наличии. Включить товары, которых нет в наличии.»)} для (пусть я = 0; я `)) } $(«#поиск .без результатов»).show() } // обновляем списки фильтров $(«#search .filters»).find(«раздел»).each((i, e) => { buildFilters($(«#search»), searchSearcher, $(e).data(«type»), аспекты, количество) }) обновитьрейтинги() обновитьЦены() обновитьЗначки() } var searchSearcher = новый искатель([], searchResultCallback) searchSearcher.permanentFilters = true var searchLanding = window.location.pathname == «/search» вар предыдущий URL = ноль вар последний запрос = «» const queryInput = (запрос) => { если(!searchLanding) { if(!lastQuery && запрос) { debug(«> начать поиск, сохранить текущее состояние URL», document. location.href) предыдущий URL = document.location.href $(«#поиск»).show() $(«#контент»).скрыть() } если (последний запрос && !запрос) { debug(«> завершить поиск, вернуться к предыдущему URL-адресу», previousUrl) history.replaceState(null, window.title, предыдущийUrl) $(«#поиск»).скрыть() $(«#контент»).показать() } если (запрос) { searchSearcher.queryText = запрос обновитьПоиск() } последний запрос = запрос }еще{ searchSearcher.queryText = запрос обновитьПоиск() } } $(функция() { если (window.location.pathname == «/search») { $(«#поиск»).show() $(«#контент»).скрыть() searchSearcher.queryText = urlGet(«q», «») $(«#search_input_desktop»).val(searchSearcher.queryText) $(«#search_input_mobile»).val(searchSearcher.queryText) $(«#search .filters»).find(«раздел»).each((i, e) => { searchSearcher.filters[$(e).data(«тип»)] = urlGet($(e). data(«тип»)) }) если(urlGet(«акции»)) { $(«#поиск .только на складе»).prop(«проверено», правда) searchSearcher.inStockOnly = истина } если (urlGet («сортировать»)) { $(«#search .sort-by»).val(urlGet(«sort»)) searchSearcher.sort = urlGet(«сортировка») } если(urlGet(«страница»)) { searchSearcher.preloadPageCount = parseInt(urlGet(«страница»)) } searchSearcher.pageSize = получить(«searchPageSize», 32) $(«#search .per-page»).val(get(«searchPageSize», 32)) searchSearcher.doSearch() } }) // запустить новый поиск и обновить URL const updateSearch = (страница = 1) => { searchSearcher.page = страница searchSearcher.doSearch() пусть параметры = [] if(searchSearcher.queryText) {parameters.push(`q=${searchSearcher.queryText}`)} for(let filter of Object.keys(searchSearcher.filters)) { если (searchSearcher.filters[фильтр]) { параметры.push(`${фильтр}=${searchSearcher. filters[фильтр]}`) } } if(searchSearcher.page != 1) {parameters.push(`page=${searchSearcher.page}`)} if(searchSearcher.sort) {parameters.push(`sort=${searchSearcher.sort}`)} if(searchSearcher.inStockOnly) {parameters.push(`stock=true`)} пусть queryString = параметры.длина > 0? «?» + параметры.соединение(«&») : «» отладка(«> обновить URL», queryString) history.replaceState(null, window.title, «/search» + queryString) } const showOutOfStock = () => { $(«#поиск .только на складе»).prop(«проверено», ложь) searchSearcher.inStockOnly = ложь обновитьПоиск() } $(«#search_input_desktop»).on(«input», (e) => { // ввод поиска на рабочем столе searchSearcher.queryText = $(«#search_input_desktop»).val().trim() $(«#search_input_mobile»).val(searchSearcher.queryText) queryInput (searchSearcher.queryText) }) $(«#search_input_mobile»).on(«input», (e) => { // ввод мобильного поиска searchSearcher.queryText = $(«#search_input_mobile»).