Ардуино светодиод: Arduino для начинающих. Урок 1. Мигающий светодиод: подключение и управление

Содержание

Мигающий светодиод на плате Arduino

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

Что в архиве? Для начала, отмечу, что в любом коде для Arduino должны быть две обязательные функции: void setup() и void loop(). В первой прописывается то, что выполняется только один раз при включении платы. Во второй то, что будет выполняться постоянно, циклически. До функции void setup() прописываются переменные, которые понадобится использовать в коде (скетче) , подключаются различные библиотеки, задаются массивы — в общем, любые данные, которые мы будем использовать в коде. Как вы понимаете, в нашем коде ничего такого не потребуется.

Всего на плате Arduino Uno есть 14 цифровых контактов (от D0 до D13). Также имеются аналоговые контакты (обозначаются от А0 до А5). На выходах цифровых контактов может быть два значения — HiGH или LOW. На выходах аналоговых идет поддержка широтно-импульсной модуляции, что позволяет обрабатывать и считывать с различных датчиков множество значений.

Для светодиода нам нужно только одно — чтобы он включался или выключался.

Поэтому подключать его будем к цифровому контакту. К контактам от 0 до 12 вы можете подключать внешние светодиоды через резистор в 220 Ом. К контакту 13 относится уже встроенный в плату светодиод, о котором мы говорили ранее. С помощью функции pinMode мы указываем тип цифрового вывода, как выход, т. к. светодиод будет выполнять наши команды, это нагрузка, которая ждет указаний (то же самое указывается, например, и при подключении реле).

Далее идет цикл. Как уже было сказано ранее, на цифровом контакте мы можем настроить два значения. Высокий логический уровень (HiGH) и низкий логический уровень (LOW) устанавливают максимальное значение напряжения (5В) на нем и минимальное (0В) соответственно.

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

Для того, чтобы было видно, как он мигает — установим задержку с помощью функции delay(1000). Эта команда приостанавливает работу кода на то, время которое прописывается в скобках, проще говоря, ставит наш код на паузу. В скобках указывается время в миллисекундах (1000 миллисекунд = 1 секунда). Когда включается состояние HIGH, а затем включается пауза в 1 секунду, то, так как состояние на выводе светодиода не изменилось, светодиод будет гореть ровно 1 секунду. Затем он выключается на 1 секунду, снова включается и так далее. Вот и получаем, то он мигает. Получилось!

Подключение светодиода к ардуино: RGB, cхемы

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

Для этого сегодня нам нужны:

  • Плата 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Ом.

Полную распиновку платы, номера выводов и их дополнительные функции вы видите на рисунке ниже.

Распиновка 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Мастер-класс «Люстра-паук» своими руками

Практические задания Arduino | Мехатроника и Робототехника

Задание «Управление работой светодиодов»

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

  Иначе светится красный светодиод.

 


 

Задание  «Установка режима работы устройств при загрузке в течении 3 секунд»

Соберите схему. Составьте код: при включении ардуино производится короткий сигнал (0,5 с). Он информирует о том, что ардуино включилась. Затем пользователь в течении трех секунд может нажать (и удерживать) или не нажимать кнопки. После трех секунд издается длинный сигнал (1 с). Он информирует о том, что время выбора режима истекло. Ардуино запоминает выбор пользователя. Затем если кнопка была нажата, то светится красный светодиод, иначе должен светиться зеленый светодиод


 

Задание «Установка режима работы устройств при загрузке»

Соберите схему. Составьте код: при включении, ардуино ждёт выбор пользователя. Затем если 1-ая кнопка была нажата, то будет светится красный светодиод, а если была нажата 2-ая кнопка, то будет светится зеленый светодиод. Подсказка: используйте команду 

while.

Решение


Задание. «Светодиодная лента». Собрать схему. Написать программу: если потенционометр находится в крайнем левом положении, то светодиоды НЕ горят. При вращении ручки потенционометра вправо, количество светящихся светодиодов постепенно увеличивается. В крайнем правом положении должны светится все 5 светодиодов.

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

Решение

 

Прерывания


Задание. Соберите схему.

Составьте программу №1: светодиод мигает с интервалом 2 секунды; если инфракрасный датчик расстояния заметил преграду, то включить звуковой сигнал немедленно, не переставая мигать светодиодом.

Сигнал отключаться не должен, даже если преграда исчезнет.

Составьте программу №2: светодиод мигает с интервалом 2 секунды; если инфракрасный датчик расстояния заметил преграду, то включить звуковой сигнал немедленно, не переставая мигать светодиодом. Сигнал отключается, если преграда исчезнет. И сигнал возобновляется, если преграда появилась.


Задание. Соберите схему.

Составьте программу №1: светодиод мигает с интервалом 2 секунды; если инфракрасный датчик расстояния заметил преграду, то включить звуковой сигнал немедленно, не переставая мигать светодиодом. Отключить сигнал, если нажата кнопка.


 Ультразвуковой дальномер

Задание. Соберите схему. Составьте программу: Если расстояние до объекта меньше 4 сантиметров, то включить зеленый светодиод, иначе его выключить. Если дистанция больше 20 сантиметров, то включить красный светодиод, иначе его выключить.

Решение

ESR-метр | Практическая электроника

В этой статье мы с вами будем собирать ESR-метр. В первый раз слышите слово “ESR”? А ну-ка бегом читать эту статью!

Для чего нужен ESR-метр

Итак, для чего нам вообще собирать ESR-метр? Для тех, кто поленился читать статью про ESR давайте вспомним, чем оно нам вредит.  Дело в том, что сейчас почти во всей электронной аппаратуре используются импульсные блоки питания. В этих импульсных блоках питания “гуляют” высокие частоты и некоторые из этих частот проходят через электролитические конденсаторы. Если вы читали статью конденсатор в цепи постоянного и  переменого тока, то наверняка помните, что высокие частоты конденсатор пропускает через себя почти без проблем. И проблем тем меньше, чем выше частота. Это, конечно, в идеале. В  реальности же в каждом конденсаторе “спрятан” резистор. А какая мощность будет выделяться на резисторе?

P=I2xR

где

P  – это мощность, Ватт

I – сила тока, Ампер

R – сопротивление, Ом

А как вы знаете, мощность, которая рассеивается на резисторе – это и есть тепло 😉 И что тогда у нас получается? Конденсатор тупо превращается в маленькую печку)). Нагрев конденсатора  – эффект очень нежелательный, так как при нагреве в лучшем случае он  меняет свой номинал, а в худшем  – просто раскрывается розочкой). Такие кондеры-розочки использовать уже нельзя.

Вздувшиеся электролитические конденсаторы – это большая проблема современной техники. Очень много отказов в работе электроники бывает именно по их вине. Визуально это проявляется в появлении припухлости в верхней части конденсатора. Видите небольшие прорези на шляпе этих конденсаторов? Это делается для того, чтобы такой конденсатор не разрывался от предсмертного шока и не забрызгивал всю плату электролитом, а ровнёхонько надрывал тонкую часть прорези и испускал тихий спокойных выдох. У советских конденсаторов таких прорезей не было, и поэтому если они и бахали, то делали это громко, эффектно и задорно)))

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

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

Схема и сборка

В интернете очень давно гуляет схема простенького ESR-метра, а точнее – приставки к мультиметру.  С помощью нее можно спокойно замерить ESR конденсатора, даже не выпаивая его из платы. Давайте же  рассмотрим схемку нашей приставки. Кликните по ней, и схема откроется в новом окне и в полный рост:

Вместо “Cx” (в штриховом прямоугольнике) мы здесь ставим конденсатор, у которого замеряем ESR.

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

С обратной стороны макетной платы для связи радиоэлементов использовал провод МГТФ

Вы легко его узнаете по розовой  окраске. Хотя бывают и другого цвета, но в основном розовый.

Что это за “фрукт”? МГТФ расшифровывается как

Монтажный, Гибкий, Теплостойкий, в Фторопластовой изоляции. Этот провод  отлично подходит для электронных поделок, так как при пайке его изоляция не плавится. Это только один из плюсов.

Обратную сторону с проводами МГТФ  я показывать не буду). Там ничего интересного нет).

После сборки макетная плата выглядит вот так:

Микросхемы по привычке всегда ставлю в панельки:

При своей стоимости, панельки позволяют быстро сменить микросхему. Особенно это актуально для дорогих микроконтроллеров. Вдруг понадобится МК для других целей?)

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

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

На крайний случай их можно также купить на Али. Выбор огромный.

Прибор выполнен в виде приставки к любому цифровому мультиметру:

Здесь есть одно “но”.  Так как мы измеряем на пределе 200 милливольт постоянного напряжения (DCV), то и значения мы получим не в Омах или миллиомах, а в милливольтах, которые затем, сверяясь со значениями полученными при калибровке прибора, мы должны будем перевести в Омы.

А вот и мой самопальный щуп:

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

Внутри корпуса платка  выглядит примерно вот так:

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

[quads id=1]

Калибровка прибора

После того  как все собрали, приступаем к калибровке (настройке) нашего ESR-метра пошагово:

1)Если у вас есть осциллограф, замеряем на измерительных щупах напряжение с  частотой 120-180 КилоГерц. Если замеряемая частота не укладывается в этот диапазон, то меняем значение резистора R3.

2) Цепляем мультиметр и ставим его крутилку на измерение милливольт постоянного напряжения.

3) Берем резистор номиналом в 1 Ом и цепляем его к измерительным щупам. В данном случае, к нашему самопальному пинцету.

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

5) Теперь берем сопротивление 2 Ома, и не меняя значение R1 записываем показания мультиметра

6) Берем 3 Ома и снова записываем показания и тд. Думаю, до 8-10 Ом вам таблички хватит вполне.

Например, мы можем выставить соответствие 1 милливольт – это 1 Ом, и т. д., хотя я предпочел настроить 4,8 милливольт – 1 Ом, для того чтобы была возможность точнее измерять низкие значения сопротивления. При замыкании щупов – контактов пинцета на дисплее мультиметра значение 2,8 милливольт. Сказывается сопротивление проводов-щупов. Это у  нас типа 0 Ом ;-).

Приведу для ознакомления значения измерений низкоомных резисторов: при измерении резистора 0,68 Ом значения равны 3,9 милливольт, 1 ом – 4,8 милливольт, 2 Ома – 9,3 милливольта. У меня получилась вот такая табличка, которую я потом и наклеил на свой прибор

При измерении сопротивления в 10 Ом на экране уже показание 92,5 миллиВольт. Как мы видим, зависимость не пропорциональная.

После того, как я сделал замеры, смотрю в другую табличку:

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

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

Как вы видите, импортные конденсаторы обладают очень маленьким ESR. Советский конденсатор показывает уже большее значение. Оно и не удивительно. Старость не в радость).

Поправки к схеме

1) Для более-менее точных измерений, желательно, чтобы питание нашего ESR-метра было всегда стабильное. Если батарейка разрядится хотя бы на 1 Вольт, то показания ESR также будут уже с погрешностью. Так что лучше постарайтесь давать питание на ESR-метр всегда стабильное. Как я уже сказал, для этого можно использовать внешний блок питания или собрать схемку на 7809 микросхеме. Например, блок питания можно собрать  по этой схеме.

2) Показания, которые выдает наша самоделка, не говорят о том, что наш самопальный прибор с  великой точностью замеряет ESR. Скорее всего, его можно отнести к пробникам. А что делают пробники? Отвечают в основном на два вопроса: да или нет ;-). В данном случае прибор “говорит”, можно ли использовать такой конденсатор или лучше все-таки поставить его в НЧ (НизкоЧастотную) схему.

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

Автор – Андрей Симаков

Основы Arduino: регулировка яркости светодиода

Эта статья была переведена на английский язык и изначально была опубликована для deviceplus.jp.

Device Plus представил множество приложений и примеров Arduino, но базовые знания по-прежнему важны, независимо от того, что вы делаете!
В этой статье мы знакомим вас с «ключевыми» основами электроники Arduino, позволяя Arduino регулировать яркость светодиода.

Вы можете легко включать и выключать светодиод между ВЫСОКИМ (5 В) и НИЗКИМ (0 В) состояниями, подключив его к цифровым выходным клеммам Arduino.Однако, поскольку цифровой выход может выводиться только в одном из двух состояний, вы не можете регулировать такие элементы управления, как яркость.
Вместо этого для этой цели можно использовать выход «ШИМ». ШИМ можно использовать для регулировки яркости светодиода путем многократного переключения между высоким и низким состояниями.
В этой статье мы узнаем, как использовать ШИМ для регулировки яркости светодиода. Мы также узнаем, как написать программу, которая использует выход ШИМ для постепенного включения светодиода.

[Содержание]

・ Яркость не может быть отрегулирована цифровым способом
・ Изменение яркости светодиода с помощью цифрового выхода
・ Регулировка яркости с помощью ШИМ
・ Постепенное мигание светодиода

Яркость не может быть изменена цифровым способом

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

Если подано напряжение 5 В и 3,3 В, 5 В делает светодиоды ярче. Если вы хотите осветить светодиод еще ярче, вы либо «уменьшите сопротивление», либо «увеличите напряжение», как объяснено в предыдущей формуле для отношения между током, протекающим через светодиод, и сопротивлением.

Однако цифровой выход Arduino имеет только два состояния: ВЫСОКИЙ (5 В) или НИЗКИЙ (0 В), что означает, что значения напряжения и сопротивления не могут быть изменены, даже если схема подключена как есть. Таким образом, яркость светодиода не регулируется. Хотя есть только два состояния выхода, HIGH и LOW, яркость светодиода можно изменить с некоторой изобретательностью.

Изменение яркости светодиода с помощью цифрового выхода

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

Затем создайте программу, как показано ниже, и запишите ее в Arduino. Светодиод должен мигать с интервалом в одну секунду.

В программе светодиод загорается в «digitalWrite (LED_PIN, HIGH)» (строка 11) с выходом HIGH, а затем ждет продолжительности, указанной в «delay (ON_TIME)» (строка 12).Продолжительность указывается в миллисекундах; если вы укажете 1000, светодиод будет гореть в течение одной секунды.

Затем светодиод выключается в «digitalWrite (LED_PIN, LOW)» (строка 14) с выходом LOW, а затем отключается на время, указанное в «delay (OFF_TIME)» (строка 15). Светодиод мигает при повторении этой программы.

Теперь давайте сократим продолжительность включения и выключения. Продолжительность включения может быть изменена с помощью «const int ON_TIME» (строка 3), а продолжительность выключения может быть изменена с помощью «const int OFF_TIME» (строка 4).Измените оба значения на «500» и напишите программу для проверки состояния светодиода. Скорость мигания должна увеличиться. По мере того, как вы уменьшаете значения до «250», «100», «75», «50» и т. Д., Мигание должно становиться быстрее. При значении около «10» светодиод горит постоянно. Если он мигает слишком быстро, человеческий глаз не успевает за ним, из-за чего свет будет казаться постоянно включенным.

Теперь давайте изменим продолжительность включения и выключения. Установите для «ON_TIME» и «OFF_TIME» значение «10».Затем последовательно измените значение «ON_TIME» на «9», «8», «7»… «1» и проверьте состояние свечения светодиода. По мере уменьшения значения вы можете видеть, что светодиод становится темнее.

Светодиод выглядит темнее, потому что продолжительность освещения сокращается, а количество свечения уменьшается. Другими словами, вы можете регулировать яркость светодиода, изменяя «продолжительность свечения». Этот метод позволяет вам управлять яркостью светодиода с помощью цифрового выхода Arduino, оснащенного только функциями включения и выключения.

Регулировка яркости с ШИМ

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

Arduino обеспечивает PWM (широтно-импульсную модуляцию), которая может периодически выводить HIGH и LOW. Функцию ШИМ, периодически переключающуюся между ВЫСОКИМ и НИЗКИМ с заданной скоростью, можно использовать для регулировки яркости светодиода, как описано ранее.

Однако контакты, которые можно использовать для ШИМ, фиксированы в Arduino. Выход PWM доступен только для контактов, у которых есть значок «~» рядом с номером (то есть 3, 5, 6, 9, 10 и 11). Обратите внимание, что другие контакты не поддерживают вывод ШИМ.

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

Для вывода с ШИМ установите целевой вывод в режим вывода с помощью «pinMode ()» (строка 6). Фактический вывод происходит с помощью «analogWrite ()» (строка 10). Укажите целевой номер вывода, а затем установите соотношение HIGH в диапазоне от 0 до 255. «0» всегда выводит LOW, а «255» всегда выводит HIGH. «127» одинаково выводит как HIGH, так и LOW.

В этой программе вы можете указать коэффициент ШИМ в «const int DUTY» (строка 3).Измените значение, чтобы увидеть, как меняется яркость.

Постепенно мигает светодиод

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

Напишите программу, как показано ниже

Вышеупомянутая программа сохраняет коэффициент ШИМ в переменной «i», используемой в функции loop (), чтобы она могла увеличивать значение, чтобы светодиод постепенно становился ярче.

Обработка while (строка 14) увеличивает значение с шагом, указанным в STEP, пока i не достигнет 255.Увеличенное значение выводится функцией analogWrite () (строка 15) для изменения яркости светодиода. Кроме того, ему предписывается ждать в течение времени, указанного WAITTIME, каждый раз, когда изменяется выход ШИМ (строка 16).

Когда коэффициент ШИМ достигает 255, он уменьшается до 0, чтобы постепенно погаснуть светодиод (строки с 21 по 25). Вы можете изменить скорость мигания, изменив значение WAITTIME (строка 3) или STEP (строка 4).

На этот раз мы научились управлять яркостью светодиода.Увидимся в другой статье!

Создание светодиодной матрицы с помощью Arduino, на основе CUI Supplies

Фон

Поскольку COVID-19 удерживает многих из нас дома, я трачу часть своего дополнительного времени дома на просмотр своих запасов источников питания и электронных компонентов, чтобы посмотреть, что я могу с ними сделать. Моим первым проектом было использование некоторых старых программируемых светодиодных лент, оставшихся с праздников. В результате получилась матрица светодиодов RGB 24 x 18 (всего 432 светодиода RGB).Матрица имеет в общей сложности 144 управляемых раздела (24 x 6), запрограммированных с помощью множества выбираемых программ.

Рис. 1. «CUI» на плате светодиодов

Обзор платы

Плата сделана из куска фанеры с 3 полосами светодиодов длиной 5 метров, нарезанными в общей сложности на 24 полосы меньшего размера, каждая из которых содержит 18 светодиодов. Цвет светодиодов контролируется Arduino Uno группами по три (6 групп на полосу из 18 светодиодов) на основе пользовательского ввода с потенциометра и трех кнопок. Плата питается от CUI SDI65-12-U-P6, источник питания переменного / постоянного тока 60 Вт, 12 В, 5 А и две внутренние шины +/- 5 В поставляются от CUI V7805-1000.Схема демультиплексора используется для маршрутизации данных на светодиодные ленты. Arduino контролирует ток светодиода и управляет питанием светодиодов через реле.

Рисунок 2: Блок-схема светодиодной платы Рисунок 3: Светодиодная плата спереди Рисунок 4: Светодиодная плата сзади
Категория Описание КОЛ-ВО
Контроллер ARDUINO UNO ATMEGA328 EVAL BRD 1
Светодиодные ленты 5 м 150 светодиодов WS2811 светодиодная лента программируемая светодиодная подсветка цвета мечты IP67 трубка водонепроницаемая белая печатная плата 3
Блок питания АДАПТЕР НАСТОЛЬНЫЙ AC / DC 12V 60W 1
MUX Board Демулиплексоры и регулятор 5В 1
Плата измерения тока Датчик тока и усилитель, со стабилизатором -5В, 5В 1
Релейная плата Плата реле, 12В 1
Панель кнопок Плата интерфейса пользователя, три кнопки, один потенциометр, 5 В 1
Рисунок 5: Спецификация верхнего уровня

Внешний источник питания

Внешний источник питания SDI65-12-U-P6 используется в качестве основного источника питания для платы. Он может обеспечивать 12 В непрерывно, до 5 А. Где-то между 5 и 7,5 А блок питания перейдет в режим защиты от перегрузки по току и начнет работать с ошибками, пока ток нагрузки не упадет. Когда это произойдет, Arduino потеряет питание и перезагрузится, если его шина питания не будет удерживаться достаточно долго для обнаружения и устранения неисправности. Чтобы измерить ток и предотвратить сброс контроллера OCP, светодиодные ленты подключены к источнику питания 12 В через цепь измерения тока и реле, управляемое Arduino.

Максимальный ток каждого светодиода составляет 18,5 мА. С 432 светодиодами максимальный ток составляет 8 А, что означает, что при определенных условиях может сработать OCP. Но это условие применяется только тогда, когда все красный, зеленый и синий светодиоды горят одновременно. Сплошной красный или зеленый при полной яркости требует всего 2,7 А. После тестирования я обнаружил, что 4,5 А будет более чем достаточно для всего, что я планировал сделать. Arduino будет контролировать измеренный ток светодиода и отключит реле, если ток превысит ~ 4. 6 А. Это оставляет 5 Вт для других цепей.

Рисунок 6: Тестовое измерение OCP — Реле (зеленый) переходит в низкий уровень, когда ток (фиолетовый), измеряемый усилителем (голубой), превышает 4,78 А, в результате чего напряжение светодиода (темно-синий) гаснет. Максимальная выходная мощность составила 57,2 Вт во время теста

Arduino Uno

Плата Arduino Uno, основанная на Atmel ATmega328, используется для управления системой. Связь со светодиодными лентами (или WS2811, которые контролируют их изнутри) является однопроводной связью на основе ширины импульса и обрабатывается библиотекой Adafruit NeoPixel, которая включена в Arduino IDE.Все коммуникации, процедуры отображения, пользовательский интерфейс и управление реле программируются и контролируются платой Arduino.

Рисунок 7: Плата Arduino Uno Рисунок 8: Синхронизация связи WS2811

Плата MUX

Каждая из небольших полосок имеет однопроводную линию связи, которая была демультиплексирована в одну линию связи платой мультиплексора, которая управляется Arduino Uno. Плата мультиплексора также служит центральной точкой распределения питания. Внешнее питание от SDI65-12-U подключается непосредственно к плате мультиплексора.12 В от источника питания распределяются с платы мультиплексора на плату реле и на вход импульсного регулятора V7805-1000, который преобразует его в 5 В для демультиплексоров. Шина 5 В также выводится на Arduino, а через эту плату — на платы кнопок и датчиков тока.

Рисунок 9: Плата MUX Рисунок 10: Схема платы MUX
Категория Описание Арт. КОЛ-ВО
Разъем 2.0 x 6,5 мм, 5,0 A, горизонтальный, поверхностный монтаж (SMT), разъем питания постоянного тока J8 1
Разъем CONN ЖАТКА VERT 10POS 2.54MM J1, J2, J3 3
Ползунковый переключатель 5A / 120V однополюсный двухпозиционный ползунковый переключатель S1 1
Провод к клемме TERM BLK 2P БОКОВОЙ ЛОР 2. 54 мм печатная плата J4, J5, J6, J7, J9 5
Провод к клемме TERM BLK 2P SIDE ENT 5.08MM PCB J10 1
Регулятор переключения DC-DC НЕИЗОЛЯЦИОННЫЙ, 2 A, 8 ~ 36 VD DC1 1
Керамический конденсатор КОЛПАЧОК CER 0,1 мкФ 50V X7R РАДИАЛЬНЫЙ C3, C4, C5 3
Электролитический конденсатор КРЫШКА АЛЮМИНИЕВАЯ 1 мкФ 20% 50 В РАДИАЛЬНАЯ C2 1
Алюминиевый полимерный конденсатор КРЫШКА ALUM POLY 470UF 20% 16V T / H C1 1
Светодиод ЗЕЛЕНЫЙ ДИФФУЗОР Т-1 3/4 Т / В D1 1
MUX IC 3-8 ЛИНИЙ ДЕКОДЕР / DEMUX 16-DIP MUX0, MUX1, MUX2 3
Резистор РЭС 1. 2 кОм 1/8 Вт 5% CF AXIAL R1 1
Рисунок 11: Спецификация платы MUX

Плата измерения тока

Плата измерения тока является частью цепи защиты от перегрузки по току (OCP). Ток к светодиодам протекает через силовой резистор на этой плате, и напряжение этого резистора, пропорциональное току светодиода, измеряется и усиливается операционным усилителем и выводится на Arduino. Коэффициент усиления усилителя регулируется потенциометром с минимальным коэффициентом усиления 1 и максимальным коэффициентом усиления 11.Обычно он установлен на 5, так что выход составляет 2,5 A / V входного сигнала (2 В при 5 A). Компаратор, порог которого устанавливается вторым потенциометром, определяет, было ли превышено пороговое значение OCP, который включает светодиодный индикатор и выдает логический сигнал на Arduino. Эта плата питается от шины V7805-1000 5V, идущей от платы MUX. Он также внутренне создает шину -5 В для операционного усилителя, используя V7805-1000 в его инвертирующей конфигурации.

Рисунок 12: Схема измерения тока Рисунок 13: Схема платы датчика тока
Категория Описание Арт. КОЛ-ВО
Резистор RES 5,1 кОм 1/8 Вт 5% ось R2, R8 2
ОП-АМП IC OPAMP GP 1 ЦЕПЬ 8DIP У2, У3 2
Резистор RES 10 кОм 1/8 Вт 5% ось R5, R6, R10 3
Светодиод ЗЕЛЕНЫЙ ДИФФУЗОР Т-1 3/4 Т / В D1 1
Светодиод КРАСНЫЙ СВЕТОДИОДНЫЙ ТИП Т-1 3/4 Т / В D2 1
Транзистор МОП-транзистор N-CH 60V 200MA TO-92 Q1, Q2 2
Провод к клемме TERM BLK 2P БОКОВОЙ ЛОР 2.54 мм печатная плата J1, J2 2
Керамический конденсатор КОЛПАЧОК CER 0,1 мкФ 50V X7R РАДИАЛЬНЫЙ C2, C3, C4 3
Регулятор переключения DC-DC НЕИЗОЛЯЦИОННЫЙ, 2 A, 8 ~ 36 VD U1 1
Резистор RES 470 OHM 1 / 8W 5% ОСЕВОЙ R1 1
Емкость КРЫШКА АЛЮМИНИЯ 47 мкФ 20% 25 В ПРОХОДНОЕ ОТВЕРСТИЕ C1 1
Резистор RES CHAS MNT 0.1 Ом 5% 16 Вт R4 1
Керамический конденсатор КОЛПАЧОК CER 0,01 мкФ 50V X7R РАДИАЛЬНЫЙ C5 1
Обрезной горшок ТРИММЕР 10 кОм 0,2 Вт PC PIN TOP R3 1
Обрезной горшок ТРИММЕР 50 кОм 0,2 Вт PC PIN TOP R7 1
Рисунок 14: Плата датчика тока BOM

Релейная плата

Плата реле представляет собой простое реле и драйвер.Когда на управляющем входе повышается высокий уровень, реле включает светодиоды, а когда понижается мощность, светодиоды снимаются. Эта плата работает от 12 В, поступающего от SDI65-12-U-P6 через плату MUX.

Рисунок 12: Плата реле Рисунок 13: Схема платы реле
Категория Описание Арт. КОЛ-ВО
Провод к клемме TERM BLK 2P SIDE ENT 2,54 мм PCB J1, J2, J3 3
Транзистор Биполярный (BJT) транзистор PNP 40V 200MHz 600mW Through Hole TO-92 1 квартал 1
Транзистор N-канал 60 В 200 мА (Ta) 400 мВт (Ta) сквозное отверстие TO-92-3 2 квартал 1
Резистор РЭС 2.2 кОм 1/8 Вт 5% ось R1 1
Резистор RES 110K OHM 1 / 8W 5% CF ОСЕВОЙ R3 1
Резистор RES 1,2 кОм 1 / 8W 5% CF AXIAL R2 1
Реле РЕЛЕ ГЕНЕРАЛЬНОГО НАЗНАЧЕНИЯ DPDT 5A 24V К1 1
Рисунок 14: Спецификация платы реле

Плата кнопок

Пользователь может регулировать яркость светодиодов с помощью потенциометра.Три кнопки позволяют пользователю переключаться между различными режимами отображения и настройками цвета. Эта плата питается от 5 В от V7805-1000 на плате MUX.

Рисунок 14: Плата кнопок Рисунок 15: Схема платы кнопок
Категория Описание Арт. КОЛ-ВО
Кнопки ВЫКЛЮЧАТЕЛЬ КНОПКИ SPST 1A 30V S1, S2, S3 3
Провод к клемме TERM BLK 2P БОКОВОЙ ЛОР 2.54 мм печатная плата J1, J2, J3 3
Керамический конденсатор КОЛПАЧОК CER 0,1 мкФ 50V X7R РАДИАЛЬНЫЙ C2 1
Светодиод ЗЕЛЕНЫЙ ДИФФУЗОР Т-1 3/4 Т / В D1 1
Резистор RES 4,7 кОм 1/8 Вт 5% ось R1 1
Электролитический конденсатор КРЫШКА АЛЮМИНИЕВАЯ 10 мкФ 20% 16 В РАДИАЛЬНАЯ C1 1
Резистор RES 110K OHM 1 / 8W 5% CF ОСЕВОЙ R2, R3, R4 3
Потенциометр POT 10 кОм 1 / 5W PLASTIC LINEAR R5 1
Рисунок 16: Панель кнопок Спецификация

Результаты

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

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

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

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

Дополнительные ресурсы


У вас есть комментарии к этому сообщению или темам, которые вы хотели бы, чтобы мы освещали в будущем?
Отправьте нам письмо по адресу powerblog @ cui.ком

Светодиод L остается включенным

Светодиод L остается включенным — Arduino Stack Exchange
Сеть обмена стеков

Сеть Stack Exchange состоит из 176 сообществ вопросов и ответов, включая Stack Overflow, крупнейшее и пользующееся наибольшим доверием онлайн-сообщество, где разработчики могут учиться, делиться своими знаниями и строить свою карьеру.

Посетить Stack Exchange
  1. 0
  2. +0
  3. Авторизоваться Зарегистрироваться

Arduino Stack Exchange — это сайт вопросов и ответов для разработчиков оборудования и программного обеспечения с открытым исходным кодом, совместимого с Arduino.Регистрация займет всего минуту.

Зарегистрируйтесь, чтобы присоединиться к этому сообществу

Кто угодно может задать вопрос

Кто угодно может ответить

Лучшие ответы голосуются и поднимаются наверх

Спросил

Просмотрено 23к раз

Я использую Arduino Uno 3 для робота-следящего за линией.Однако, когда я включаю Arduino Uno, светодиод L горит и никогда не выключается. После небольшого поиска я обнаружил, что светодиод L подключен к контакту 13. Я установил на контакте 13 низкий уровень, но светодиод все еще горит. Есть ли проблема с ардуино? Или есть что-то, о чем я не знаю? (Среди множества других вещей, которых я не знаю.)

qwerty10

36811 золотых знаков33 серебряных знака1111 бронзовых знаков

Создан 16 июн.

Редванул Сурав

2311 золотой знак11 серебряных знаков33 бронзовых знака

2

Это «особенность», представленная в версии 3 платы Uno.Вплоть до Версия 2, светодиод «L» был подключен к контакту 13 через 1 кОм. резистор. В версии 3 та же комбинация светодиод + резистор управляется контактом 13 через операционный усилитель. Таким образом, когда вывод 13 находится в режиме высокого импеданса (т.е. INPUT mode, режим по умолчанию при запуске программы), вход операционный усилитель плавает. Напряжение на этом входе (и, следовательно, на выход) не контролируется и зависит только от паразитных проводимостей и по токам утечки.

Если вы хотите выключить светодиод, вам нужно не только записать в него LOW , вы также (и самое главное) должны установить вывод на ВЫХОД .