Как сделать светодиод тусклее
Перейти к содержимому

Как сделать светодиод тусклее

  • автор:

Arduino.ru

Простой пример управления яркостью светодиода с помощью функции analogWrite(). AnalogWrite () использует широтно-импульсную модуляцию (ШИМ). Эффект изменения яркости достигается за счет очень быстрого, повторяющегося переключения напряжения на выходе с 0В на +5В (для некоторых плат стандартное напряжение +3.3В).

Необходимые компоненты
  • контроллер Arduino
  • макетная плата
  • светодиод
  • резистор 220 Ом
Подключение

Подключаем анод (обычно длинная ножка) светодиода через резистор сопротивлением 220 Ом к выходу номер 9 (pin 9). Катод (короткая ножка) подсоединяем напрямую к земле (Grd).

Схема

Arduino подключение светодиода

Код

В секции setup() кода устанавливаем режим выхода для вход/выхода 9 (pin 9).

Функция analogWrite(), которая циклически вызывается в теле скетча, принимает два аргумента: номер выхода и значение ширины импульса ШИМ в диапазоне от 0 до 255.

Для управление яркостью светодиода, его плавного зажигания и плавного затухания, мы будем изменять значение ширины импульса, передаваемое в функцию analogWrite(). При значение 0 светодиод выключен, при 255 светодиод светит на полную яркость. В приведенном ниже скетче ширина импульса задается переменной brightness. Шаг изменения этого значения задан переменной fadeAmount.

Для плавного изменения яркости мы вводим задержку в конце главного цикла (тела) скетча — delay(30).

/* Пример управления яркостью светодиода на выходе 9 контроллера Arduino функцией analogWrite(). */ int brightness = 0; // уставливаем начально значение яркости int fadeAmount = 5; // шаг приращения/убывания яркости void setup() < // устанваливаем пин 9 в режим выхода pinMode(9, OUTPUT); >void loop() < // устанавливаем значение широты импульса на выходе 9 // задавая яркость светодиода analogWrite(9, brightness); // измением значение в переменной для яркости brightness = brightness + fadeAmount; // при достижение крайних значений для яркости // меняем знак переменной шага приращения/убывания яркости if (brightness == 0 || brightness == 255) < fadeAmount = -fadeAmount ; >// делаем паузу для достижения плавного наращивания/убывания яркости delay(30); >

как сделать тусклый светодиод?

Большего номинала. Но это надо уже скорее всего подбирать опытным путем.

Без машины

Где вообще можно найти сие чудо? Нигде их не встречал

В магазинах торгующих радиодеталями. SMD резисторы. Размерность скорее всего 1206.

Где вообще можно найти сие чудо? Нигде их не встречал

Или даже 0805. Плохо видно на фото.

Без машины

Так сейчас гляну че там написано

Без машины

Или даже 0805. Плохо видно на фото.

Значит на 1 написано 621 на другом 152

621-620 Ом. 152-1,5 кОм. Вот здесь сам можешь посмотреть. e-dep.ru/poleznaya-informatsiya/smdcalc.html

Без машины

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

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

Без машины

Хорошо, будем подбирать, теперь осталось их найти) Большое спасибо за совет)))

Лишь бы помогло.

Без машины

шкуркой его пройди. будет расплывчатый приятный цвет

Без машины

Спасибо, на будущее надо будет запомнить, но вот светить он будет по прежнему ярко

Не, яркость убавиться прилично) попробуй на любом светодиоде в темноте)

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

Без машины

есть схема регулятора?

Без машины

благодарю, полезная ссылка, теперь на выходных буду паять

Без машины

Если не дружишь с паяльником — закрой светодиоды матовой пленкой

Без машины

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

Без машины

Тогда не вопрос — делай замер тока на светодиоде и уменьшай силу тока. Что может быть проще — поменять номинал резистора
Кстати, вот схема ШИМ регулятора — ну, проще не бывает, собирал, пашет четко
cxem.net/house/1-277.php

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

Как сделать светодиод тусклее

Текущее время: Сб мар 09, 2024 20:02:31

Часовой пояс: UTC + 3 часа

Запрошенной темы не существует.

Часовой пояс: UTC + 3 часа

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y

Работоспособность сайта проверена в браузерах:
IE8.0, Opera 9.0, Netscape Navigator 7.0, Mozilla Firefox 5.0
Адаптирован для работы при разрешениях экрана от 1280х1024 и выше.
При меньших разрешениях возможно появление горизонтальной прокрутки.
По всем вопросам обращайтесь к Коту: kot@radiokot.ru
©2005-2024

Управление яркостью светодиода. Функция analogWrite()

Пины Arduino могут выдавать напряжение ровно 5 вольт. Что делать, если нужно меньше? На выручку приходит широтно-импульсная модуляция (ШИМ), управление которой производится через функцию analogWrite().

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

Посмотрим подробнее, что такое ШИМ и как это работает.

Фокус с лампочкой

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

Схема подключения пьезопищалки к плате Arduino

Мы отчетливо слышим, как она включается и выключается. Что с ней происходит?

В плату был загружен вот такой код:

void setup() < pinMode(6, OUTPUT); >void loop()

Как видите, мы подаем напряжение, ждем 5 миллисекунд и на следующие 5 миллисекунд отключаем его.

График напряжения на ножке (PIN) от времени

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

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

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

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

Эксперименты со скважностью

Здесь стоит поговорить о такой характеристике переменного сигнала как скважность. Этим термином обозначается отношение длительности включения и отключения напряжения (T) к отрезку времени, когда напряжение подается (t1).

График прямоугольного импульса и аргументы для расчета скважности

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

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

График напряжения на пине Arduino, при котором светодиод горит тусклее

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

void setup () < pinMode(6, OUTPUT); >void loop () < digitalWrite(6, HIGH); delay(1); // Всего одна миллисекунда! digitalWrite(6, LOW); delay(19); >

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

График напряжения на пине Arduino, при котором светодиод горит ярче

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

График непрерывной подачи напряжения на пин Arduino

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

Функции генерации переменного сигнала

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

Одна из них — tone(). С ее помощью получают звук заданной частоты.

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

Для широтно-импульсной модуляции используется функция analogWrite(). Она позволяет подавать нужное напряжение на указанный пин.

В отличие от tone(), функция analogWrite() работает на постоянной частоте 490Hz.

Запись функции выглядит следующим образом:

analogWrite(X, Y);

В скобках указаны два параметра, которые принимает функция. Х означает номер пина, на который необходимо подавать напряжение, Y — уровень напряжения.

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

Уровень напряжения функция понимает в «зашифрованном» виде. Принимаются значения от 0 до 255.

0 вольт — это просто 0, а 5 вольт, то есть максимум, соответствует цифре 255.

Пример использования функции analogWrite():

void setup() < pinMode(10, OUTPUT); >void loop() < analogWrite(10, 255); // Подаем напряжение 5 В на 10-й пин delay(500); analogWrite(10, 0); // Подаем напряжение 0 В на 10-й пин delay(500); analogWrite(10, 128); // Подаем напряжение 2,5 В на 10-й пин delay(1000); analogWrite(10, 50); // Подаем напряжение 1 В на 10-й пин delay(1500); >

Эта команда очень похожа на digitalWrite() при установленном режиме OUTPUT для выбранного пина. Отличие в том, что вместо HIGH, что означало просто включение пина на 5 вольт, здесь указывается уровень напряжения.

Курсы Робикс, в которых изучается этот материал

  1. Робикс: 1-й уровень
  2. Робикс: 2-й уровень. «Робот линии»

Дополнительные материалы к статье

  1. Описание функции analogWrite()
  2. Описание функции tone()
  3. Описание функции digitalWrite()

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

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