Arduino.ru
В этом примере показано как с помощью контроллера Arduino заставить мигать светодиод.
Необходимые компоненты
- контроллер Arduino
- светодиод
- резистор 220 Ом
Подключение
Мы подключаем резистор сопротивлением 220 Ом к выходу номер 13 (pin 13), к резистору в свою очередь подключаем анод (обычно длинная ножка) светодиода. Катод подсоединяем к земле (Grd). Затем подключаем контроллер через USB кабель к компьютеру и загружаем приведенный ниже код на котроллер Arduino.
Большинство плат Arduino имеют встроенный SMT (Surface-mount techology)светодиод, подключенный к выходу 13. Если вы запустите код на таких платах без подключения внешниего светодиода, то вы должны увидеть мигание встроенного светодиода на плате.

Схема

Код
В коде мы первой строк задаем режим выхода для вход/выхода (pin) 13:
В основном цикле (loop) программы зажигаем светодиод:
На выходе 13 появляется напряжение 5 В. Светодиод зажигается. Затем мы выключаем светодиод:
Изменив напряжение на выходе на 0 вольт, мы выключили светодиод. Для того чтобы человеческий глаз успевал замечать переключение светодиода введем задержку с помощью функции delay() .
/* Зажигаем светодиод на одну секунду, затем выключаем его на одну секунду в цикле. */ void setup() < // Инициализируем цифровой вход/выход в режиме выхода. // Выход 13 на большинстве плат Arduino подключен к светодиоду на плате. pinMode(13, OUTPUT); >void loop() < digitalWrite(13, HIGH); // зажигаем светодиод delay(1000); // ждем секунду digitalWrite(13, LOW); // выключаем светодиод delay(1000); // ждем секунду >
Смотрите также
Как сделать чтобы светодиоды последовательно загорались при повышении напряжения?
Нужно сделать так, чтобы при 4в горел 1 светодиод, при 6в загорался еще один т. е. уже 2 светодиода, при 8в- 3, при 10в- 4 и при 12в- 5. Я в этом не силен, поэтому обращаюсь сюда. Микросхем у меня нет, только разные резисторы конденсаторы диоды и транзисторы.
Голосование за лучший ответ
это можно реализовать пороговой схемой на нескольких транзисторах
Только стабилитрон придется изменить
grew .Ученик (106) 6 лет назад
Стабилитрон это vd1 на схеме? А как именно изменить?
. . Гуру (4030) На нужное тебе напряжение Тот что я дал на картинке был сделан для мотоцикла 6В
Индикатор уровня напряжения можно купить, если не силен.
схема одной ячейки
Нет микросхем — так купи. Они копейки стоят.
Продается целый класс микросхем для столбиковых индикаторов, в аудио-разделах магазинов. Также, можно и самому соорудить схему на сколько угодно уровней, с помощью компараторов или операционных усилителей. Они продаются по три рубля за ведро. Самому строить, конечно, дольше — зато можно настроить КАЖДЫЙ порог на нужные тебе напряжения с большой точностью — и использовать все это в роли красивого измерительного прибора.
Подключение светодиодов к бортовой сети автомобиля

Применение светодиодов в автомобиле является сегодня привлекательным, популярным, и достаточно выгодным тюнингом. Они ярко светят и потребляют, при этом, очень мало энергии. Но чтобы светодиоды нормально работали в бортовой сети автомобиля, быстро не перегорали и не мерцали, их необходимо корректно подключать.
Характеристики светодиодов
Для начала следует твердо усвоить, как работает светодиод и какими ключевыми характеристиками обладает. Это упростит понимание нижеизложенного материала и исключит часто допускаемые автолюбителями ошибки.
Стандартный светодиод имеет всего два важных параметра:
1. Падение напряжения (В).
2. Ток питания (мА).
Первая характеристика указывает на то, какое напряжение будет падать на работающем светодиоде. Этот параметр никак не означает, что для его питания необходимо точно столько же вольт. Стандартный светодиод с падением напряжения 3,2 В вполне можно подключить и к 12 В и даже к 220 В, но не ниже, чем к 3,2 В. Светодиод напряжением не питается, а его параметр 3,2 В означает, что после него напряжение в сети понизится на 3,2 В.
Светится светодиод как раз благодаря тому, что через него протекает ток. И его сила обязательно должна быть в пределах указанного для конкретного изделия значения. Например, все тот же стандартный маломощный светодиод потребляет 20 мА. Это значит, что если ток, который через него проходит, будет значительно большим, то он выйдет из строя.
Следовательно, для нормальной работы светодиода необходимо обеспечить стабильный ток в известных пределах. А вот чтобы его свечение не было мерцающим, необходимо стабилизировать имеющееся в сети напряжение.
Стабилизаторы напряжения
Стабилизаторы напряжения предназначены для поддержки одного и того же напряжения в сети. Они бывают линейные и импульсные. Линейные стабилизаторы способны только понижать имеющееся напряжение и удерживать его на каком-то одном значении. Если на них подавать меньшее напряжение, чем то, на которое они рассчитаны, то и на выходе будем получать пропорционально меньше.
Импульсные стабилизаторы способны как понижать имеющееся в сети напряжение, так и повышать его до требуемого на выходе значения. Например, в бортовой сети автомобиля напряжение «скачет» от 12 В до 14,5 В. Соответственно, если нам нужно на выходе получать стабильные 13 В, то необходим именно импульсный стабилизатор.
Стабилизаторы и ограничители тока
Стабилизатор стабилизирует проходящий в цепи ток до одного нужного значения, ограничитель, соответственно, ограничивает его. Простейший ограничитель тока, который можно использовать для подключения светодиодов в автомобиле – это резистор. Его номинал рассчитывается индивидуально, исходя из характеристик и количества светодиодов и имеющегося в сети напряжения.
Стабилизатор работает автоматически. Он рассчитан на какое-то определенное значение стабилизации силы тока, которое он поддерживает независимо от скачков напряжения в сети. В отношении светодиодов такие приборы еще называются драйверами.
Порядок подключения светодиодов к бортовой сети автомобиля
Самый простой способ подключить светодиод к сети автомобиля – применение токоограничивающего резистора. Его номинал рассчитывается по приведенному ниже алгоритму с наглядным примером.
Допустим, необходимо подключить светодиод с падением напряжения 3,2 В и током питания 20 мА. Максимальное напряжение в сети автомобиля 14,5 В. Нам нужно получить ток 20 мА из разницы напряжений сети автомобиля и падения на светодиоде, что в примере соответствует 14,5-3,2=11,3 В. Согласно закону Ома необходимое сопротивление равно R=11,3/0,02=565 Ом. Где 0,02 – это ток 20 мА выраженный в амперах.
Для подключения двух или трех светодиодов последовательно падение напряжения на них суммируется и расчет выполняется аналогично. Более трех светодиодов последовательно в одну цепочку подключить не получится, так как не хватит напряжения бортовой сети.
Для подключения нескольких светодиодов или их групп параллельно необходимо рассчитывать и устанавливать токоограничивающие резисторы на каждую ветку.
Более простой способ – применение стабилизаторов тока или так называемых драйверов. Они подбираются в соответствии с напряжением бортовой сети и требуемой силы тока на выходе. При этом, не стоит использовать драйверы для мощных светодиодов, подключая к ним в параллель несколько веток маломощных светодиодов. Это вскоре приведет к выходу из строя одной из веток, и ток с нее добавится к другим веткам. Последствие – выход из строя остальных светодиодов.
В завершение стоит отметить, что даже при использовании драйвера для светодиодов последние будут постоянно изменять яркость свечения в зависимости от оборотов двигателя и от того, работает он или нет. Чтобы добиться одновременно и долговечной работы светодиодов, и равномерности их свечения, перед драйвером в цепь добавляется стабилизатор напряжения, желательно импульсный.
Работаем с множеством светодиодов
Мигать одним светодиодом не слишком интересно. В этом уроке мы рассмотрим работу с множеством светодиодов. Если проявить фантазию, то можно создавать интересные эффекты.
Сам принцип работы со светодиодами не меняется, мы также задаём номера выводом и подаём нужные сигналы. Но проблема заключается в том, что придётся писать однотипный код для каждого светодиода. И когда светодиодов наберётся большое количество и вы решите поменять логику, то придётся искать и менять код у каждого светодиода. Это не очень удобно. Поэтому для облегчения рутинной работы используют циклы, массивы, коллекции.
05.Control: ForLoopIteration
Для знакомства с циклом for в Arduino IDE есть пример File | Examples | 05.Control | ForLoopIteration.
Для эксперимента нам понадобятся шесть светодиодов. Соответственно, к ним нужно добавить шесть резисторов. Соединяем их как на рисунке. Задействуем цифровые выводы 2, 3, 4, 5, 6, 7.

Цель скетча — поочерёдно зажигать и гасить светодиоды в одном направлении, а затем в другом.
int timer = 100; // интервал между миганиями светодиодов void setup() < // проходимся в цикле по каждому светодиоду от 2 до 7 и влючаем нужный режим for (int thisPin = 2; thisPin < 8; thisPin++) < pinMode(thisPin, OUTPUT); >> void loop() < // опять проходимся в цикле по каждому светодиоду for (int thisPin = 2; thisPin < 8; thisPin++) < // включаем digitalWrite(thisPin, HIGH); delay(timer); // выключаем digitalWrite(thisPin, LOW); >// ещё раз проходимся в цикле, но в обратном порядке от 7 до 2 for (int thisPin = 7; thisPin >= 2; thisPin--) < // включаем digitalWrite(thisPin, HIGH); delay(timer); // выключаем digitalWrite(thisPin, LOW); >>
Доказательство, что код работает.
05.Control: Arrays
Обращаться к каждому светодиоду можно не только по очереди в цикле, но и через массив. Использование массивов даёт больше гибкости. Посмотрим на примере File | Examples | 5.Control | Arrays. Схема остаётся прежней из предыдущего примера.
Массив объявляется с помощью квадратных скобок, а затем к переменной массива обращаются, указывая в квадратных скобках индекс массива, который начинается с 0. Таким образом, чтобы обратиться к первому элементу массива, следует писать ledPins[0] и т.д. Комментарии к скетчу смотрите в предыдущем примере.
int timer = 100; int ledPins[] = < 2, 7, 4, 6, 5, 3 >; // массив в случайном порядке int pinCount = 6; // количество светодиодов (размер массива) void setup() < for (int thisPin = 0; thisPin < pinCount; thisPin++) < pinMode(ledPins[thisPin], OUTPUT); >> void loop() < for (int thisPin = 0; thisPin < pinCount; thisPin++) < digitalWrite(ledPins[thisPin], HIGH); delay(timer); digitalWrite(ledPins[thisPin], LOW); >// loop from the highest pin to the lowest: for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) < digitalWrite(ledPins[thisPin], HIGH); delay(timer); digitalWrite(ledPins[thisPin], LOW); >>
Если вы замените строку int ledPins[] = ; на int ledPins[] = ;, то получите точно такое же поведение светодиодов из предыдущего примера с циклом for, когда светодиоды загораются и гаснут по очереди. Но использование массива позволяет поменять начальное положение светодиодов, не меняя остальной код. И вы можете только в одном месте менять начальные позиции для запуска волны. Например, зададим массив через одного: .
Бегущие огни
Ещё один вариант бегущих по порядку огней. На этот раз уместим код в один цикл for, добавив переменную, следящую за направлением движения.
const int ARRAY_SIZE = 6; int ledPin[] = ; int ledDelay = 500; int direction = 1; int currentLed = 0; unsigned long changeTime; void setup() < for (int i = 0; i < ARRAY_SIZE; i++) < pinMode(ledPin[i], OUTPUT); >changeTime = millis(); > void loop() < if ((millis() - changeTime) >ledDelay) < changeLed(); changeTime = millis(); >> void changeLed() < // выключаем все светодиоды for (int i = 0; i < ARRAY_SIZE; i++) < digitalWrite(ledPin[i], LOW); >// включаем текущий LED digitalWrite(ledPin[currentLed], HIGH); // увеличиваем значение currentLed += direction; // меняем направление, если достигли конца if (currentLed == ARRAY_SIZE - 1) < direction = -1; >if (currentLed == 0) < direction = 1; >>
Три примера показывают, что реализовать проект можно разными способами. Не существуют универсальных решений, каждый решает свою задачу индивидуально, опираясь на свой опыт и практику.
07.Display: barGraph (Световая шкала и потенциометр)
Рассмотрим пример с использованием светодиодной шкалы и потенциометра — Examples | 07.Display | barGraph. Если световой шкалы нет, то замените на 10 обычных светодиодов.
Изменяя вручную напряжение при помощи потенциометра, мы будем выводить информацию на световую шкалу.
Добавим на схему потенциометр. Средняя ножка ведёт на аналоговый вывод A0, а остальные две на 5 V и GND.

// константы const int analogPin = A0; // порт для потенциометра const int ledCount = 10; // число светодиодов на светодиодной шкале int ledPins[] = < 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 >; // массив портов, к которым привязаны светодиоды void setup() < // проходим через все элементы массива и устанавливаем режим для вывода for (int thisLed = 0; thisLed < ledCount; thisLed++) < pinMode(ledPins[thisLed], OUTPUT); >> void loop() < // считываем сигнал с потенциометра int sensorReading = analogRead(analogPin); // трансформируем результат в диапазон от 0 до 10 (по числу светодиодов) int ledLevel = map(sensorReading, 0, 1023, 0, ledCount); // проходим через массив светодиодов for (int thisLed = 0; thisLed < ledCount; thisLed++) < // если индекс элемента массива меньше чем ledLevel, // включаем порт для данного элемента: if (thisLed < ledLevel) < digitalWrite(ledPins[thisLed], HIGH); >// Выключаем все порты, которые выше чем ledLevel: else < digitalWrite(ledPins[thisLed], LOW); >> >
Данный пример интересен функцией map(), предназначенной для пропорционального перевода значений одного диапазона в значения другого диапазона. Мы знаем, что потенциометр может выводить результаты от 0 до 1023, а у нас всего десять светодиодов. Функция нам и поможет в преобразовании.
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
Все значения будут равномерно распределены от 0 до 10 (приблизительно 102 единицы потенциометра на одну единицу). Представим себе, что у нас потенциометр показывает значение 110 единиц, что соответствует значению 1 после применения функции. Первый светодиод в массиве имеет значение 0, т.е. меньше 1. Первый светодиод загорится, а остальные погаснут (если горели до этого). Поворачивая ручку потенциометра, мы увеличиваем значения и соответственно увеличиваем число включённых светодиодов. Поворачивая ручку потенциометра в обратную сторону, мы уменьшаем число включённых светодиодов. Чтобы следить за результатами, добавьте в код наблюдение за последовательным портом Serial
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount); Serial.println(sensorReading); delay(1); .
Модуль 2-цветного светодиода KY-011
Модуль выглядит как один светодиод, но на самом деле состоит из двух светодиодов разных цветов (красный и зелёный). и имеет три вывода. Применяется для индикации режима работы прибора, показа фаз протекания контролируемого процесса и позволяет экономить площадь передней панели прибора. Красно-зелёный светодиод имеет четыре состояния: красное свечение, зелёное, оранжевое и выключен. Оранжевое свечение будет при одновременном включении красного и зелёного полупроводников. Пример реализации: зелёный свет – прибор готов к работе, красный – ожидание, оранжевый — промежуточный.

Контакт S предназначен для соединения с общим проводом схемы, отрицательный полюс питания, средний контакт – красный источник света. При работе с модулем следует использовать резисторы (напр, 330Ω).
На практике при одновременном включении не выводится чистый оранжевый цвет, нужно немного поиграться с разными значениями напряжения.
Скетч, в котором используем все доступные значения.
int redPin = 9; // pin for red led int greenPin = 10; // pin for green led int val; void setup() < pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); >void loop()
Модуль 2-цветного светодиода KY-029
Модуль KY-029 с общим катодом похож на модуль KY-011, только вместо светодиода на 5 мм используется двухцветный светодиод на 3 мм (зелёный и красный).

У модуля три вывода: — (GND) — общий катод светодиодов, средний контакт — анод (+) красного светодиода, «S» — анод (+) зелёного светодиода.
KY-029 | Arduino ---------------- - | GND N/A | D S | D
Скетч используйте от модуля KY-011.
Семицветный светодиодный модуль KY-034
Модуль состоит из печатной платы, трёх выводов, сопротивления 10кОм (код SMD-резистора 103) и семицветного светодиода.

Семицветный мигающий светодиод имеет всего два контакта (плюс и минус). Достаточно добавить источник питания и светодиодный модуль будет мигать всеми цветами радуги в разных комбинациях. Происходит эта магия за счёт миниатюрной микросхемы, которая встроена в светодиод.
Программирования не требуется. Просто подключаем вывод — к GND и S к 5V. При желании можете подключить не к питанию, а к цифровому пину Arduino и управлять включением и выключением светодиода (например, скетч Blink).
Входит в состав набора Набор из 37 датчиков