Как подключить светодиод к ардуино

RGB светодиод и Arduino

как подключить светодиод к ардуино

В этой статье рассмотрены основы использования RGB (Red Green Blue (красный, зеленый, синий)) светодиода с Arduino.

Мы используем функцию analogWrite для управления цветом RGB светодиода.

На первый взгляд, RGB светодиоды выглядят так же, как и обычные светодиоды, но на самом деле у них внутри установлено три светодиода: один красный, один зеленый и да, один синий. Управляя яркостью каждого из них, вы можете управлять цветом светодиода.

То есть, мы будем регулировать яркость каждого светодиода и получать нужный цвет на выходе, как будто это палитра художника или словно вы настраиваете частоты на своем плеере. Для этого можно использовать переменные резисторы. Но в результате схема будет достаточно сложной. К счастью, Arduino предлагает нам функцию analogWrite. Если задействовать на плате контакты, отмеченные символом «~», мы можем регулировать напряжение, которое подается на соответствующий светодиод.

Необходимые узлы

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

1 RGB светодиод 10 мм

3 резистора на 270 Ω (красная, фиолетовая, коричневая полоски). Вы можете использовать резистор с сопротивлением до 1 кОм, но не забывайте, что с повышением сопротивления, светодиод начинает светить не так ярко.

1 Breadboard

1 плата Arduino Uno R3 или ее аналог

Коннекторы

Схема подключения

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

Общий анод на RGB светодиоде – это второй по счету, самый длинный контакт. Этот контакт мы подключим к земле (gnd).

Для каждого светодиода нужен собственный резистор на 270 Ом, чтобы предотвратить возможность протекания чересчур больших токов. Эти резисторы устанавливаются в цепь между катодами (красный, зеленый и синий) и управляющими пинами на нашем Arduino.

Если вы используете RGB светодиодиод с общим анодом, вместо общего катода, самый длинный контакт на светодиоде подключается к пину +5 V вместо пина gnd.

Цвета

Немного теории: мы можем смешивать три основных цвета и видеть новые оттенки, так как в наших глазах три типа рецепторов (для красного, зеленого и синего цветов). В результате ваш глаз и мозг обрабатывает информацию о насыщенности этих трех цветов и преобразовывает их в другие оттенки спектра.

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

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

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

Так как черный цвет не что иное, как отсутствие света, получить его не получится. Ближайший оттенок черного – это полностью выключенные светодиоды.

Скетч Arduino

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

/*

Adafruit Arduino — RGB светодиод подробная инструкция на сайте:

arduino-diy.com

*/

int redPin = 11;

int greenPin = 10;

int bluePin = 9;

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

//#define COMMON_ANODE

void setup()

{

pinMode(redPin, OUTPUT);

pinMode(greenPin, OUTPUT);

pinMode(bluePin, OUTPUT);

}

void loop()

{

setColor(255, 0, 0); // красный

delay(1000);

setColor(0, 255, 0); // зеленый

delay(1000);

setColor(0, 0, 255); // синий

delay(1000);

setColor(255, 255, 0); // желтый

delay(1000);

setColor(80, 0, 80); // фиолетовый

delay(1000);

setColor(0, 255, 255); // аквамарин

delay(1000);

}

void setColor(int red, int green, int blue)

{

#ifdef COMMON_ANODE

red = 255 — red;

green = 255 — green;

blue = 255 — blue;

#endif

analogWrite(redPin, red);

analogWrite(greenPin, green);

analogWrite(bluePin, blue);

}

Попробуйте запустить этот скетч. Особенности скетча раскрыты ниже

Скетч начинается с указания пинов, которые используются для каждого отдельного цвета:

int redPin = 11;

int greenPin = 10;

int bluePin = 9;

Источник: http://arduino-diy.com/arduino-rgb-svetodiod

Vanyamba uses Linux — Как устроен Arduino

как подключить светодиод к ардуино

Рассмотрим перечисленные составляющие попунктно, двигаясь согласно диаграммы по часовой стрелке, начиная с разъёма USB-B. Итак,

Коннектор шины USB, в данном случае «папа» типа B. Предназначен для подключения Arduino по шине USB в качестве slave-устройства к различным USB-хостам (например, к компьютеру).

Микросхема-преобразователь, позволяющая организовать линию передачи данных формата USART по шине USB.

На разных платах Arduino эти микросхемы различаются. Например, в Duemilanove (на фото) используется чип FTDI USBUSART, а например в Uno и Mega 2560 это преобразование выполняет специально запрограммированный микроконтроллер ATmega8U2.

Светодиод, подключенный через токоограничительный резистор к выводу Digital 13. Можно сказать, что это главный мигательный светодиод Arduino, во всяком случае на моей Duemilanove скетч примера Blink мигает именно этим светодиодом.

Светодиоды индикации Transmitter Exchages и Receiver Exchanges, подключенные к выводам чипа USB-to-RS232. Когда светится светодиод TX, это означает, что Arduino передаёт данные хосту, и наоборот — при приёме данных Arduino от хоста светится светодиод RX. Таким образом маркировка TX означает «я передаю (Transmit) данные», а RX означает «я принимаю (Receive) данные».

Тринадцать цифровых контактов портов ввода-вывода D и B микроконтроллера ATmega328p, к которым добавлены контакты GND (земля) и AREF (Analog Reference Voltage — Аналоговое Сравнительное Напряжение), сгруппированные в две гребёнки типа 8×1 с шагом 2.54 мм (0.1 дюйма).

Выводы Digital 0..7 соответствуют порту ввода-вывода D, а выводы Digital 8..13 младшим пяти разрядам порта ввода-вывода B.

Красивый зелёненький светодиодик индикации шины питания +5 Вольт. Когда он светится, это означает, что схема включена, причём в правильной полярности включена. Если схема включена, а светодиодик почему-то не светится, то стоит принюхаться, по всем признакам должен присутствовать запах горелой изоляции.

Оснащать плату светодиодом индикации питания — это функция настолько полезная по моему мнению, что я все свои платы, даже сравнительно простые модули, обязательно данной функцией оснащаю. Хотя по идее их вообще должно быть два: «напряжение подано» и «плата успешно запитана», и двухцветные леды ST Microelectronics показали мне, что очень даже правильно делать именно так, другой вопрос — наличие таких светодиодов в свободной продаже, но это уже другой вопрос.

При нажатии и отпускании этой кнопки с говорящей подписью RESET (на Mega 2560) или ничего не говорящей подписью S1 (на Duemilanove) производится перезапуск микроконтроллера. При удержании низкого сигнала микроконтроллер можно перепрограммировать через выводы разъёма ICSP благодаря встроенной функции ISP (In-System Programming).

Шесть выводов разъёма ICSP представляют собой интерфейс SPI за исключением сигнала SS (Slave Select — Выбор Исполнительного Устройства). Посредством данного интерфейса можно программировать микроконтроллер Arduino, минуя загрузчик bootloader, либо если требуется прошить новую версию загрузчика или управляющие биты FUSE.

Микроконтроллер ATmega328p

Ядром Arduino как платы является микроконтроллер, в случае с Duemilanove это ATmega328p. Подробнее о том, как устроен сам микроконтроллер, можно прочитать в статье Микроконтроллер Arduino.

Младшие шесть разрядов порта ввода-вывода C микроконтроллера ATmega328p сгруппированы в контактную группу Analog In.

Название группы (по-русски Аналоговый Ввод) этих контактов может смутить, но дело в том, что эти выводы микроконтроллера совмещены со входами каналов аналого-цифрового преобразователя (АЦП) Arduino, так что любой из них может использоваться либо как обычный цифровой пин ввода-вывода, либо как входной вывод канала АЦП. Поэтому они промаркированы на плате как Analog In, что несколько сбивает с толку начинающего — можно ли их использовать для цифрового вывода.

Для цифрового можно, аналоговый — только ввод.

В этой контактной гребёнке сгруппированы напряжения питания, земля и сигнал сброса.

Сигнал +3.3 Вольт можно использовать только как reference voltage, поскольку происходит это напряжение с reference-вывода чипа FTDI USBRS-232. И хотя на платах c USB через ATmega8U2 для совместимости ставится LDO-регулятор, который способен обеспечить ток в 0.15 Ампер, хорошей практикой для шилдов Arduino является именно взять с Arduino +5 Вольт и через регулятор получить питающие +3.3 Вольт.

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

  • Vin — ввод и вывод
  • Gnd — земля
  • 5V — вывод; ввод только в случае, если не требуется гарантировать бесперебойное выполнение скетча в ситуации, когда USB было подключено, а затем снова отключено
  • 3V3 — вывод
  • RESET — ввод и вывод

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

Максимальное входное напряжение, подаваемое на этот разъём или контакт Vin, равно 20 Вольтам. Не забыть добавить диод.

Кварцевый резонатор 16МГц, выравнивающий частоту импульсов основной тактовой частоты микроконтроллера. Читал я в Сети, что его можно выпаять, впаять кристалл на 20 МГц, перепрошить загрузчик bootloader, и что вроде как работает, даже не греется. Но увы, дело тут не в перегреве, а во внутреннем исполнении микросхемы. Так что на +5В оно возможно и работает, а если батарейка сядет до +4В, будет ли работать — вот в чём печаль.

Источник: https://sites.google.com/site/vanyambauseslinux/arduino/kak-ustroen-arduino

Как подключить RGB светодиод к Arduino

как подключить светодиод к ардуино

RGB светодиод – это три светодиода разных цветов (Red – красный, Green – зелёный, Blue – синий), заключённые в одном корпусе. Давайте посмотрим, как подключить RGB светодиод к Arduino.

Нам понадобится:

1 Отличие RGB светодиодов с общим анодом и с общим катодом

RGB светодиоды бывают двух типов: с общим анодом («плюсом») и общим катодом («минусом») . На рисунке приведены принципиальные схемы эти двух типов светодиодов.

Длинная ножка светодиода – это всегда общий вывод питания. Отдельно расположен вывод красного светодиода (R), зелёный (G) и синий (B) располагаются по другую сторону от общего вывода, как показано на рисунке.

В данной статье мы рассмотрим подключение RGB светодиода как с общим анодом, так и с общим катодом.

RGB светодиоды с общим анодом и с общим катодом

2 Подключение RGB светодиода с общим анодомк Arduino

Схема подключения RGB светодиода с общим анодом показана на рисунке. Анод подключаем к «+5 В» на плате Arduino, три другие вывода – к произвольным цифровым пинам.

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

Обратите внимание, что мы подключаем каждый из светодиодов через свой резистор, а не используем один общий. Желательно делать именно так, потому что каждый из светодиодов имеет свой КПД. И если подключить их все через один резистор, светодиоды будут светиться с разной яркостью.

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

3Управление RGB светодиодами с помощью Arduino

Перепишем классический скетч blink. Будем включать и отключать по очереди каждый из трёх цветов. Обратите внимание, что светодиод загорается, когда мы подаём низкий уровень (LOW) на соответствующий вывод Arduino.

// задаём номера выводов: const int pinR = 12; const int pinG = 10; const int pinB = 9; void setup() { // задаём назначение выводов: pinMode(pinR, OUTPUT); pinMode(pinG, OUTPUT); pinMode(pinB, OUTPUT); }void loop() { digitalWrite(pinR, LOW); //зажигаем канал Red delay(100); digitalWrite(pinR, HIGH); //выключаем Red delay(200); digitalWrite(pinG, LOW); //зажигаем канал Green delay(100); digitalWrite(pinG, HIGH); //выключаем Green delay(200); digitalWrite(pinB, LOW); //зажигаем канал Blue delay(100); digitalWrite(pinB, HIGH); //выключаем Blue delay(200); }

4 Собрать схемуна макетной плате

Посмотрим в действии на мигание RGB светодиодом. Светодиод по очереди зажигается красным, зелёным и синим цветами. Каждый цвет горит 0,1 секунду, а затем гаснет на 0,2 секунды, и включается следующий. Можно зажигать каждый канал отдельно, можно все одновременно, тогда цвет свечения будет меняться.

RGB светодиод подключён к Arduino. Схема собрана на макетной плате

5Подключение RGB светодиода с общим катодомк Arduino

Если вы используете RGB светодиод с общим катодом, то подключите длинный вывод светодиода к GND платы Arduino, а каналы R, G и B – к цифровым портам Arduino. При этом нужно помнить, что светодиоды загораются при подаче на каналы R, G, B высокого уровня (HIGH), в отличие от светодиода с общим анодом.

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

Если не менять вышеприведённый скетч, то каждый цвет светодиода в этом случае будет гореть 0,2 секунды, а пауза между ними составит 0,1 секунду.

Полезный совет

Если вы хотите управлять яркостью светодиода, то подключайте RGB светодиод к цифровым выводам Arduino, которые имеют функцию ШИМ (PWM). Такие выводы на плате Arduino обычно помечены знаком тильда (волнистая линия), звёздочкой или обведены кружочками.

Источник: https://soltau.ru/index.php/arduino/item/347-kak-podklyuchit-rgb-svetodiod-k-arduino

Урок 02. Управление светодиодами

Для ограничения тока через светодиод необходим резистор

Примечание 1: последовательность подключения светодиода и резистора в схеме не имеет значения, можно подключить и так: +5 В, резистор 300 Ом, светодиод, 0 В

Примечание 2: +5 В в схеме подается с одного из цифровых пинов (D0D13), а 0 В – пин земли Gnd

Макетная плата

Используемый для курса стенд содержит макетную плату, все верхние контакты которой подключены к пину +5 В (верхние на рисунке), нижние контакты – к пину Gnd (0 В, нижние на рисунке) Arduino. Эти контакты используются в схемах и для питания внешних датчиков и модулей.

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

Практическое занятие 1. Простой светофор

Нужные компоненты:

  • три светодиода трех разных цветов (красный, желтый и зеленый) с припаянными к ним резисторами
  • красный, желтый и зеленый соединительные провода со штырьками на обоих концах

Сборка:

Шаг 1: подключите светодиоды к макетной плате в соответствии с приведенным рисунком

Примечание: к цифровым выходам контроллера подключается контакт светодиода + (который с резистором)

Шаг 2: проводным соединителем штырек-штырек соедините контакт макетной платы с цифровым пином Arduino: красного светодиода – с пином 2, желтого – с пином 9, зеленого – с пином 12. Используйте провода тех же цветов, что и цвета светодиодов

Шаг 3: подключите второй контакт светодиодов (минус, без резистора, прямой на картинке) к земле. Соедините отверстие под этим контактом с нижним рядом отверстий. Для соединения с землей используйте провода синего или черного цвета

Шаг 4: Напишем программу для управления светофором. Для начала – просто включение светодиодов по очереди. Алгоритм работы:

  • включить красный светодиод
  • подождать одну секунду
  • выключить красный светодиод
  • включить желтый светодиод
  • подождать одну секунду
  • выключить желтый светодиод
  • включить зеленый светодиод
  • подождать одну секунду
  • выключить зеленый светодиод

Шаг 5: Напишите в среде Arduino IDE программу, написанную по данному алгоритму (выделенный жирным текст, комментарии писать не обязательно)

int led_red = 2;                       // красный светодиод подключен к пину 2

int led_yellow = 9;                // желтый светодиод подключен к пину 9

int led_green = 12;               // зеленый светодиод подключен к пину 12

void setup() {

// прописываем пины, к которым подключены светодиоды, как выходные

pinMode(led_red, OUTPUT);

pinMode(led_yellow, OUTPUT);

pinMode(led_green, OUTPUT);

}

void loop() {

digitalWrite(led_red, HIGH);                   // включить красный светодиод

delay(1000);                                                // подождать одну секунду

ЭТО ИНТЕРЕСНО:  Как поменять лампочки на панели приборов приора

digitalWrite(led_red, LOW);                    // выключить красный светодиод

digitalWrite(led_yellow, HIGH);            // включить желтый светодиод

delay(1000);                                                // подождать одну секунду

digitalWrite(led_yellow, LOW);               // выключить желтый светодиод

digitalWrite(led_green, HIGH);               // включить зеленый светодиод

delay(1000);                                                // подождать одну секунду

digitalWrite(led_green, LOW);                // выключить зеленый светодиод

}   // начать цикл loop снова

Шаг 6: Загрузите написанную программу в контроллер и убедитесь, что светодиоды зажигаются в соответствии с написанным алгоритмом

Шаг 7: Сохраните написанную программу в папку Мои документы / Arduino / Learning / Ваша фамилия латинскими буквами под именем Svetofor_Simple

Примечание 1: сохранение выполняется командой Файл / Сохранить как. Открывается папка Arduino, в ней надо открыть папку Learning, в ней создать папку вида Ivanov, открыть ее, ввести имя файла (Svetofor_Simple) и нажать Сохранить

Примечание 2: так как тексты программ будут использоваться в дальнейших занятиях и для обеспечения возможности вновь просмотреть написанные программы обязательно сохраняйте написанные программы в папку Learning / Ваша фамилия

Практическое занятие 2. Светофор с миганием

Напишем более сложный алгоритм работы и изменим программу таким образом, чтобы поведение светодиодов было похоже на настоящий светофор

  • включить красный светодиод
  • подождать три секунды
  • помигать красным светодиодом 4 раза
  • включить желтый светодиод
  • подождать три секунды
  • выключить желтый светодиод
  • включить зеленый светодиод
  • подождать три секунды
  • помигать зеленым светодиодом 4 раза

В этом случае задачу «помигать красным светодиодом 4 раза» можно решить «в лоб» таким способом:

digitalWrite(led_ red, HIGH);                    // включить светодиод

  delay(500);                                                  // подождать полсекунды

digitalWrite(led_ red, LOW);                   // выключить светодиод

  delay(500);                                                  // подождать полсекунды

  digitalWrite(led_ red, HIGH);                  // включить светодиод

  delay(500);                                                  // подождать полсекунды

digitalWrite(led_ red, LOW);                   // выключить светодиод

  delay(500);                                                  // подождать полсекунды

  digitalWrite(led_ red, HIGH);                  // включить светодиод

  delay(500);                                                  // подождать полсекунды

digitalWrite(led_ red, LOW);                   // выключить светодиод

  delay(500);                                                  // подождать полсекунды

  digitalWrite(led_ red, HIGH);                  // включить светодиод

  delay(500);                                                  // подождать полсекунды

digitalWrite(led_ red, LOW);                   // выключить светодиод

  delay(500);                                                  // подождать полсекунды

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

for (начальное значение переменной счетчика, конечное значение переменной счетчика, прибавление счетчика){

код, который нужно повторить несколько раз

}

С использованием цикла for код, выполняющий задачу «помигать красным светодиодом 4 раза» будет выглядеть так:

for(inti = 1 ; i

Источник: http://xn--80abmmkqebaqzb4b.xn----8sbeb4bxaelofk.xn--p1ai/obrazovatelnaya-robototehnika/arduino/urok-02-upravlenie-svetodiodami/

Работаем с множеством светодиодов

05.Control: ForLoopIteration
05.Control: Arrays
Бегущие огни
07.Display: barGraph (Световая шкала и потенциометр)
Модуль 2-цветного светодиода KY-011
Модуль 2-цветного светодиода KY-029
Семицветный светодиодный модуль KY-034

Мигать одним светодиодом не слишком интересно. В этом уроке мы рассмотрим работу с множеством светодиодов. Если проявить фантазию, то можно создавать интересные эффекты.

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

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[] = {2, 7, 4, 6, 5, 3}; на int ledPins[] = {2, 3, 4, 5, 6, 7};, то получите точно такое же поведение светодиодов из предыдущего примера с циклом for, когда светодиоды загораются и гаснут по очереди. Но использование массива позволяет поменять начальное положение светодиодов, не меняя остальной код. И вы можете только в одном месте менять начальные позиции для запуска волны. Например, зададим массив через одного: {2, 4, 6, 3, 5, 7}.

Бегущие огни

Ещё один вариант бегущих по порядку огней. На этот раз уместим код в один цикл for, добавив переменную, следящую за направлением движения.

const int ARRAY_SIZE = 6; int ledPin[] = {2, 3, 4, 5, 6, 7};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.

Источник: http://developer.alexanderklimov.ru/arduino/leds.php

Мигание светодиодом на Arduino UNO

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

Кроме МК и его обвязки на плате размещён стабилизатор питания, порты ввода-вывода, линейки штыревых разъёмов. Полная её комплектация зависит от модели и производителя.

Расширение возможностей процессорной платы осуществляют методом жёсткого штыревого соединения с совместимыми платами.

Немного о программирование и популярности Arduino

Программная часть представлена общедоступной оболочкой IDE Arduino, работающей под Windows, Mac OS и Linux. Внутри оболочки можно писать и компилировать программы, а также отправлять их на внешние устройства. Упрощенная версия языка C++ облегчает новичкам написание программ. Перенос программы в Arduino производят, как правило, посредством USB соединения при помощи встроенного загрузчика.

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

Что потребуется?

Чтобы сделать мигающий светодиод с помощью контроллера Arduino нужно около минуты времени и иметь в наличии:

  • светодиод с диаметром корпуса 3 или 5 мм любого свечения;
  • постоянный резистор номиналом 240–470 Ом, при питающем напряжении 5 В;
  • соединительные провода;
  • саму плату Arduino (в примере будет использоваться версия UNO).

Для удобства подключения можно задействовать монтажную плату (breadboard).

В реализации более сложных электронных схем, монтажная плата – это незаменимый помощник.

Код (скетч) мигания светодиодом для Arduino IDE

void setup () {pinMode (13, OUTPUT); // Назначение 13-го вывода выходом}void loop () {digitalWrite (13, HIGH); // Включение 13 выводаdelay (1000); // Время задержки на 1000 мс (1 секунда)digitalWrite (13, LOW); // Выключение 13 выводаdelay (1000); // Время задержки на 1000 мс

}

Представленный скетч назначает рабочим 13-й вывод Arduino и задает мигание светодиода с периодом в 2 секунды.

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

Источник: https://ledjournal.info/shemy/migayushhij-svetodiod-arduino.html

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

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

Резистор и светодиод подключаем по схеме

1. Подключаем минус(GND) питания Ардуино к минусовой шине макетной платы. Для этого устанавливаем один конец проволочной перемычки в гнездо GND на плате Ардуино, а второй конец перемычки устанавливаем в отверстие вдоль синей линии макетки.

2. Подключаем светодиод. Ножки светодиода вставляем в отверстия свободного поля так, что бы длинная ножка находилась в отверстии верхнего свободного поля, а короткая в отверстии нижнего поля. К короткой ножке подключаем ножку резистора, вторую ножку резистора устанавливаем в отверстие вдоль синей линии. Затем проволочной перемычкой соединяем АНОД светодиода и 13 контакт платы Ардуино.
 

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

После проверки схемы подключаем плату к компьютеру. Запускаем среду разработки Arduino IDE. Копируем текст программы в среду разработки и загружаем в Ардуино.

 

/* Программа для мигающего светодиода */ // Светодиод подключаем к контакту 13 платы Ардуино // устанавливаем начальную команду, которая будет выполняться при включении питания void setup() {               

  // определяем выбранный нами контакт платы Ардуино, как выход.

  pinMode(13, OUTPUT);    

}

// Теперь определяем, что и как будет выполнять наша программа пока подключено питание к плате Ардуино:

void loop() {

  digitalWrite(13, HIGH);   // устанавливаем на нашем 13-м контакте высокий уровень (5   

  //Вольт)

  delay(1000);               // ждем одну секунду

  digitalWrite(13, LOW);    // устанавливаем на нашем 13-м контакте высокий уровень (0

  //Вольт)

  delay(1000);               // ждем одну секунду

}
 

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

1/* */   Текст в таких скобках не является какой-либо командой и не влияет на работу программы. В этих скобкам можно писать все, что угодно. Обычно в таких скобках пишут многострочные комментарии. Т.е. описание программы, дату создания и др.

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

3. Процедура setup().

Эта процедура выполняется один раз в начале работы программы. Последовательно выполняется каждая команда, заключенная между фигурными скобками этой процедуры. Каждая команда должна завершаться символом « ; ».

В нашей программе процедура setup() содержит только команду pinMode(13,OUTPUT), которая устанавливает состояние контакта 13, как ВЫХОД. Т.е. на этом контакте будут появляться электрические сигналы, создаваемые платой Ардуино.

4. Процедура loop().

После выполнения команд процедуры setup, процессор переходит к выполнению команд процедуры loop(). Особенность этой процедуры в том, что команды этой процедуры выполняются в бесконечном цикле. Т.е. после выполнения последней команды, процессор приступает к выполнению первой команды. И так, пока плата Арудино подключена к питанию.

Попробуйте в программе записать другое время задержки. Вместо 1000 поставьте, например, 500. И вместо числа 13 поставьте, например значение 8.

Соответственно и светодиод подключите теперь к контакту 8.

Изменим немного нашу программу. Введем понятие ПЕРЕМЕННАЯ.

Int ledpin = 13;

void setup() {               

  pinMode(ledpin, OUTPUT);    

}

void loop() {

  digitalWrite(ledpin, HIGH);  

  //Вольт)

  delay(1000);              

  digitalWrite(ledpin, LOW);   

  delay(1000); 

}

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

Что бы ввести переменную в программу её необходимо ОБЪЯВИТЬ.

Для этого мы пишем int ledpin = 13;

Слово int означает, что в качестве переменной мы будем использовать целое число.

Ledpin – это имя нашей переменной. Его мы придумываем сами.

13 – это сама переменная.

Программа стала удобнее для работы с ней.

Источник: http://startelectronics.ru/goods/Podklyuchenie-svetodioda

ESP8266. Часть 3. Дистанционное включение светодиода с помощью Arduino

Сейчас мы начнем учиться управлять светодиодами (или чем-нибудь еще) удаленно через WiFi. Кстати, кто-то однажды сказал: «Если вы заставите мигать светодиод, то  вы сможете делать все». В этом важность третьей и последней инструкции о ESP8266.

Тем,  кто присоединился к нам на этой статье, я рекомендую прочесть два моих предыдущих поста:

ESP8266 Часть 1 – Последовательный WIFI модуль для Arduino

ESP8266 Часть 2 – Arduino вебсервер

Основное отличие этой статьи состоит в том, что вместо создания веб-страницы Arduino, на которой будут отображаться собранные данные, теперь страница HTML будет размещена на веб-сайте и сможет посылать данные в Arduino. На этой странице пользователь сможет вводить команды и посылать их через WiFi в Arduino для управления «вещами».

Шаг 1: Схема

Схема очень  проста. Соединение ESP8266  с Arduino точно такое же, как в предыдущих публикациях, только добавлены 3 светодиода к GPIO (в этот раз я использую плату UNO вместо MEGA, для того чтобы показать, что все, что мы изучили ранее, одинаково работает на обоих устройствах).

  • GPIO 11: голубой светодиод
  • GPIO 12: красный светодиод
  • GPIO 11: зеленый светодиод

Шаг 2: HTML код

Основная часть HTMLкода используется для генерации «кнопок»: “ON” и “OFF”. Обратите внимание, что для каждой кнопки (всего их 6, по две для каждого GPIO), генерируется специальный “id”.

Например, если кнопка “ON”, связанная с GPIO 11,  нажата, то сгенерированный ID– “111”, т.е. первые две цифры для идентификации GPIO (в нашем случае «11»), а третья цифра для записи состояния, в нашем случае «1» для «ON». Если это кнопка «OFF», то ID будет 110.

В этом случае пин цифрового выхода № 11 соединен с голубым светодиодом.

Сгенерировав  “ID”, функция на странице отвечает за его отправку на IPадрес ESP8266.  Примите во внимание, что адрес, который устанавливается для ESP8266, должен быть включен в строку ==> $ .get ( » http://10.0.1.14:80/” ; {pin: p});

Первые несколько раз, когда я тестировал программу, было множество проблем, и самое важное, что я заметил, это невозможность послать более 5 команд на светодиоды. Это происходило потому, что каждый раз, когда отправляются данные, ESP8266 открывал новое соединение (CONNECT 0, 1, 2, 3, 4), а их не может быть более 5.

Также я выяснил, что когда перезагружаешь страницу, счетчик соединений сбрасывается на 0. Решением было добавление нового HTML кода, который бы инициировал автоматическую перезагрузку страницы (код типа «META»).  Я решил делать перезагрузку каждые 15 секунд, что не должно слишком раздражать пользователя.  Это сработало без проблем:

ЭТО ИНТЕРЕСНО:  Почему не горят габариты

 

Код очень похож на предыдущий:

Инициализация производит установку GPIO, «перезагрузку» и инициализацию ESP8266 и т.д.,  используя те же функции, которые были определены в предыдущей публикации.

Считывая «id», например «111», код отделяет первые две цифры и создает переменную «pinNumber». Третья цифра показывает состояние светодиода» statusLed». Функция digitalWrite посылает светодиоду статус, в нашем случае, например, «1» на связанный с ним GPIO (или “pinNumber”), в нашем примере — это 11.

Источник: https://tpai.ru/blog/perevody-statej/esp8266-chast-3-distancionnoe-vklyuchenie-svetodioda-s-pomosshyu-arduino

Arduino. Знакомство с Arduino Nano CH340G

Знакомство с Arduino Nano. Давно хотел начать программировать микроконтроллеры. Для старта выбор пал на Arduino Nano.

В общем понимании Arduino это платформа, котрую можно запрограммировать. На самом деле немного сложнее,  есть аппаратаная и программная части:

  • Апаратная часть. Набор различных плат основанных в основном на МК семейства ATmega. Платы различаются количесвом портов ввода-вывода, их функционалом. Продаются под торговой маркой Arduino;
  • Программная часть. IDE с одноименным названием, которая позволяет кроме написания кода производить его загрузку на борт МК;
  • Сообщество. Выше не указывал этой составляющей, но популярность этой платформы породило большое сообщество людей работающих с этой платформой. В профильных сообществах и личных блогах можно найти заготовки кода, инструкции по созданию конечных устройств, и помощь в  возникших вопросах.

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

Оригинальная плата стоит больше, чем для начала хотелось бы потратить, потому на aliexpress.com был заказан клон с использованием более дешевой микросхемы CH340G.

Установка ПО и драйверов

Для ОС семейства Linux установка драйверов не требуется, а вот для ОС Windows драйвер может потребоваться.
У меня стоит Kubuntu 15.04 и Windows 10, устройство определилось без проблем и отдельно драйвера устанавливать не пришлось.

Программное обеспечение будем использовать оригинальное от Arduino. ПО бесплатно и свободно для скачивания.

Процесс установки проводил по инструкции от Arduino, но некоторые шаги пропустил из-за ненадобности выполнения:

  1. Скачиваем ПО вот здесь и устанавливаем на компьютер;
  2. Подключаем Arduino Nano к компьютеру посредством USB-кабеля, после подключения на плате загорится зеленый светодиод (PWR);
  3. Если устройство не обнаружилось или обнаружилось как неизвестное устройство, то необходимо установить драйвер. Как писал выше у меня оборудование установилось без плясок и определилось как USB-SERIAL CH340. Описание установки драйвера опушу, очень много материала в интернете;
  4. Запускаем приложение Arduino и переходим в меню «Инструменты — Порт», и указываем необходимый порт, для меня это СОМ3.

Hello World!!!

В качестве первой программы будем использовать мигание светодиодом. На Arduino Nano есть встроенный светодиод (L), который подключен к выходу D13.

Можно мигать как встроенным, так и подключить внешний светодиод. Для подключения внешнего светодиода, необходимо к выходу D13 подключить резистор 220 Ом, к резистору подключаем анод светодиода, катод подключаем к выходу GND (Земля).

Внимание!!! Не подключайте светодиод без сопротивления, Arduino этого не переживет!!!

Теперь подключаем Arduino к компьютеру, переходим в меню «Файл — Образцы — 1.Basics — Blink«, в окне появится код примера мигания светодиодом:

Источник: https://guesto.ru/diy-znakomstvo-s-arduino-nano/

Arduino Урок 2 – Подключаем кнопку и светодиод

В предыдущем уроке мы узнали как подключать Arduino и выполнять простешую программу. В этом уроке мы научимся управлять нашим микроконтроллером с помощью обычной кнопки. Для этого нам потребуется обычная кнопка и светодиод.

Подключение кнопки

Сперва подключим кнопку к Arduino через любой доступный порт (pin). Можно использовать как аналоговый, так и цифровой порт. Для этого подадим на вход нашей кнопки 5 вольт, а выход соединим с портом Arduino, пусть это будет порт #2.

Так же, следует понимать, когда кнопка не нажата, связь между портами “5V” и “2” будет разомкнута. Из-за этого Arduino не сможет корректнто считывать информацию из порта “2”, так как этот pin будет висеть в воздухе. Решается эта проблема очень просто. Для этого нужно дополнительно подключить выход из кнопки на землю через подтягивающий резистор как это показано на следующей схеме.

Таким образом, при нажатии на кнопку на порт “2” будет поступать 5 вольт напряжения, а когда не нажата порт будет соединён с землёй.

Добавляем светодиод

Давайте подключим светодиод который будет загораться при нажатии на нашу кнопку. Сделать это очень просто. Достаточно подключить анод светодиода (длинная ножка) в порт “13”. Далее в программе мы будем включать светодиод просто подавая 5 вольт на этот порт. Катод светодиода (короткая ножка) подключаем на землю через разъём “GND”. Но не забываем про резистор, так как 5 вольт для одного светодиода слишком много и светодиод может перегореть.

Что бы правильно подобрать резистор с нужным нам сопротивлением можно воспользоваться специальной таблицей:

Цветовая характеристика светодиода Напряжение
Инфракрасный до 1.9 В
Красный от 1.6 до 2.03 В
Оранжевый от 2.03 до 2.1 В
Желтый от 2.1 до 2.2 В
Зелёный от 2.2 до 3.5 В
Синий от 2.5 до 3.7 В
Фиолетовый от 2.8 до 4 В
Ультрафиолетовый от 3.1 до 4.4 В
Белый от 3 до 3.7 В

Рассчитать необходимое сопротивление резистора можно по следующей формуле: 

R=(Uист-Uд)/Iд, где Uист – напряжение источника питания, – напряжение диода, – ток диода (обычный светодиод потребляет около 20 миллиампер).

Пример рассчёта для красного светодиода:

R = (5V – 2.03V) / 20mA = 0,1485. Можем округлить до 150 Ом. С таким резистором крассный светодиод будет работать с максимальной яркостью. Меняя сопротивление резистора мы можем сделать свечение нашего светодиода более или менее ярким.

Пишем программу

Наша схема готова, осталось написать программу. Запускаем Arduino IDE и вставляем следующий код:

const int buttonPin = 2; // номер порта нашей кнопкиconst int ledPin =    13; // номер порта светодиодаvoid setup() {    // устанавливаем порт светодиода на выход    pinMode(ledPin, OUTPUT);    // устанавливаем порт кнопки на вход    pinMode(buttonPin, INPUT);}void loop() {    // читаем состояние порта кнопки и записываем в переменную    int buttonState = digitalRead(buttonPin);    // делаем простую проверку нашей переменной, если на входе в порт кнопки присутствует напряжение — включаем светодиод, иначе — выключаем    if (buttonState == HIGH) {        // подаем 5 вольт на порт наешго светодиода        digitalWrite(ledPin, HIGH);        } else {        // выключаем светодиод        digitalWrite(ledPin, LOW);        }

}

Подключаем нашу Arduino и перепрошиваем её через меню «Скетч → » или нажав на комбинацию Control+U. Дожидаемся сообщения « завершена».

Проверка работы устройства

Если Вы сделали всё правильно то при нажатии на кнопку можно увидеть как зажигается светодиод. Если же кнопку отпустить светодиод выключится.

Источник: https://heliosun.com.ua/arduino-urok-2-podklyuchaem-knopku-i-svetodiod/

Урок 1. Мигающий светодиод на Arduino

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

Светодиод — это полупроводниковый прибор, трансформирующий электроток в видимое свечение.

И на основе свечения светодиода мы будем работать и рассматривать основу программирования Arduino. Перейдем непосредственно к практике Для начала нам нужно приготовить необходимый набор предметов для работы!

Для начала работы нам понадобятся такие компоненты

  • плата Arduino
  • Breadboard (макетная плата для удобного подключения приборов к Arduino)
  • Провода
  • светодиод
  • резистор

Также вам потребуется программа Arduino IDE, которую можно скачать с официального сайта Arduino.

Данные комплектующие можно приобрести на официальном сайте или в интернет-магазине AliExpress или Амперка.

Спросите вы, что такое Breadboard ?

Breadboard— макетная (монтажная) беспаечная плата. Breadboard представляет из себя сетку из гнезд, которые обычно соединяются так:

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

Не забудьте проверить «+» и «-» у светодиода. Минус у светодиода можно отличить двумя способами :

  • У «минуса» на светодиоде по стандарту ножка вывода длиннее чем у плюса.
  • Если вы внимательно всмотритесь в светодиод, то можете увидеть своеобразный флажок, так вот, где флажок там и «минус» светодиода.

После правильного подключения перейдем к этапу программирования.

/*
Зажигаем светодиод на одну секунду, затем выключаем его на
одну секунду в цикле.

*/
int led = 8;
/*объявление переменной целого типа, содержащей номер порта к которому мы подключили провод */
void setup() {
/* Инициализируем объявление используемого порта вход/выход в режиме выхода.

*/
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH); // зажигаем светодиод
delay(1000); // ждем секунду
digitalWrite(led, LOW); // выключаем светодиод
delay(1000); // ждем секунду
}

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

Перейдем к пояснению нашего скетча (кода)

С начала в нашем скетче мы объявили переменную int led = 8; . Мы таким образом заявили, что хотим иметь ячейку памяти, к которой будем обращаться по имени led и изначально, при старте Arduino, в ней должно лежать значение 8 пина. Перед именем переменной в определении указывается тип данных для этой переменной. В нашем случае — это int , что означает «целое число» (int — сокращение от английского «integer»: целочисленный).

Процедура setup выполняется один раз при запуске микроконтроллера. Обычно она используется для конфигурации портов микроконтроллера и других настроек. В нашем случае мы указали, что наш светодиод на 8 выходе . «pinMode(led, OUTPUT);» Хотелось бы сказать, что Arduino выполняет с начала действие setup , а далее выполняет действие другой процедуры, про которую мы сейчас поговорим.

После выполнения setup запускается процедура loop, которая выполняется в бесконечном цикле . Именно этим мы пользуемся в данном примере, чтобы маячок мигал постоянно.

Процедуры setup и loop должны присутствовать в любой программе (скетче), даже если вам не нужно ничего выполнять в них — пусть они будут пустые, просто не пишите ничего между фигурными скобками. Запомните, что каждой открывающей фигурной скобке { всегда соответствует закрывающая } .

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

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

Функция digitalWrite(pin, value) не возвращает никакого значения и принимает два параметра: pin — номер цифрового порта, на который мы отправляем сигнал value — значение, которое мы отправляем на порт.

Для цифровых портов значением может быть HIGH (высокое, единица) или LOW (низкое, ноль) Если в качестве второго параметра вы передадите функции digitalWrite значение, отличное от HIGH , LOW, 1 или 0, компилятор может не выдать ошибку, но считать, что передано HIGH.

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

Задачи для самостоятельного решения, для укрепления материала

1) Измените скетч так, чтобы светодиод светился 3 секунды, а пауза между свечением была 0.5 секунды.

2) Измените скетч так, чтобы светодиод ,при включении Arduino, горел непрерывно 4 секунды (подсказка: сделайте это с помощью процедуры setup ), а потом продолжал мигать в интервале, который мы должны были задать в первом задании .

Источник: http://helpduino.ru/svetodiod.html

Урок 1 — Подключение кнопки и светодиода к плате Arduino

В блоке уроков Светодиоды, Резисторы, Arduino . Мы научились управлять светодиодом с помощью платы Arduino. Но как сделать включение светодиода при нажатии кнопки?

В данном уроке мы рассмотрим самый простой способ управления светодиодом.

Для урока нам понадобиться:

В уроке Мигаем светодиодом на Arduino мы уже рассмотрели программу и схему подключения светодиода. Добавим к ней кнопку и у нас получиться:

Скетч получится довольно простой.

int led_pin=3; // пин подключения int button_pin = 4; // пин кнопки void setup() { pinMode(led_pin, OUTPUT); // Инициализируем цифровой вход/выход в режиме выхода. pinMode(button_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа. } void loop() { if (digitalRead(button_pin) == HIGH) { // Если кнопка нажата digitalWrite(led_pin, HIGH);// зажигаем светодиод } else { //Иначе digitalWrite(led_pin, LOW);// выключаем светодиод } }

Данный код практически не применим в практике, но нам для примера будет достаточно.

pinMode(button_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа.

В данной строчке пин button сконфигурирован как вход, для дальнейшего приема на него сигнала.

if (digitalRead(button_pin) == HIGH) { // Если кнопка нажата

Считываем цифровое значение с pin button. Если получаем 5В, это значит HIGH и 0В LOW.

Конструкция if..else предоставляет больший контроль над процессом выполнения кода, чем базовый оператор if, позволяя осуществлять несколько проверок, объединенных вместе.

if (digitalRead(button_pin) == HIGH) //Если на пин button приходит сигнал HIGH то выполняем действие А { // действие A } else //Иначе. В нашем случае если на пин button приходит LOW, выполняем действие В { // действие B }

Если вам что то не понятно посмотрите уроки в блоке: Светодиоды, Резисторы, Arduino

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

Источник: https://portal-pk.ru/news/48-urok-1---podklyuchenie-knopki-i-svetodioda-k-plate-arduino.html

Подключение адресной светодиодной ленты WS2812B к Arduino

Приветствую всех. Мы продолжаем знакомить Вас со светодиодными лентами. На этот раз мы рассмотрим адресную RGB светодиодную ленту WS2812B.

Лента основана на светодиодах WS2812B в корпусе LED 5050, куда в корпус производители поместили не только три встроенных светодиода (Красный, Зеленый, Синий), но и управляемый ШИМ драйвер, управляющий их яркостью.

Благодаря этому мы можем получить произвольный цвет, изменяя яркость встроенных светодиодов, а так же управлять отдельно взятым пикселем на ленте. Собственно, три встроенных разноцветных светодиода вместе с ШИМ драйвером и образуют светодиод WS2812B.

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

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

Технические характеристики

Теперь давайте немного пройдемся по техническим характеристикам из datasheet который мне удалось раскопать в интернете.

  • Светодиод WS2812B работает от напряжения 5В (±0.5).
  • Ток ~20мА на один встроенный светодиод, то есть ~60мА на пиксель в целом.
  • Рабочая температура от -20 до +80 ℃.

Остальное можете посмотреть самостоятельно в даташите.

Подключение

Подключается светодиодная лента довольно-таки просто, необходимо подать на +5V и GND, плюс (+) и минус (-) от 5В блока питания, а контакт DIN соединить с портом Arduino, как правило, по умолчанию используется 6-й порт Arduino, но вы вправе выбрать и любой другой свободный порт. Так же рекомендуется соединить земли Arduinoи блока питания, как нарисовано на рисунке ниже.

ЭТО ИНТЕРЕСНО:  Как сделать освещение в гараже

Будьте внимательны, лента на светодиодах WS2812B имеет направление, с одной стороны она имеет контакты DIN, +5V, GND, а с другой стороны DO, +5V, GND, подключать необходимо именно вход, то есть DIN, иначе лента не будет работать. Так же на ленте нарисованы стрелки, указывающие на направление.

Протокол

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

Каждый светодиод WS2812B имеет один вход (DIN) и один выход (DO). Выход каждого светодиода подключается ко входу следующего. Подавать сигналы же надо на вход самого первого светодиода, таким образом, он запустит цепь, и данные будут поступать от первого ко второму, от второго к третьему и т. д.

Команды светодиодам передаются пачками по 24 бита (3 байта, один байт на каждый цвет, первым передается байт для зеленого, потом для красного, и заканчивает байт для синего светодиода. Порядок бит — от старшего к младшему). Перед каждой пачкой идет пауза в 50 мкс. Пауза больше 100 мкс воспринимается как окончание передачи. Все биты, будь то 0 или 1, имеют фиксированное время 1.25 мкс.

Бит 1 кодируется импульсом в 0.8 мкс, после чего идет пауза в 0.45 мкс. Бит 0 кодируется импульсом в 0.4 мкс, после чего идет пауза в 0.85 мкс. Собственно, наглядная диаграмма на фото ниже. Так же допускаются небольшие погрешности в 0-150 нс на каждый фронт. Ну и следует учесть, что подобное необходимо повторить для каждого светодиода на ленте, после чего сделать паузу минимум в 100 мкс.

Потом можно повторить передачу.

Глядя на все эти цифры, становится ясно, что сделать все это, используя стандартные функции digitalWrite, delay и тому подобные — попросту невозможно, ввиду их долгой работы и неточности. Реализовать подобный протокол можно только использовав специальные библиотеки вроде CyberLib или написав собственную на чистом Си или, того хуже для нынешнего программиста, на Ассемблере.

Но не все так плохо, как кажется. Светодиоды WS2812B довольно таки популярны в Arduino сообществе, а это значит, что нам не придётся вдаваться в такие сложности, и достаточно выбрать одно из понравившихся решений.

Библиотеки

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

  • Библиотека FastLED, разрабатывается Даниэлем Гарсиа и Марком Кригсманом. Имеет свой сайт, справочную систему и большое сообщество в ~5000 человек. Библиотека написана на чистом Си, без использования Wiring. FastLED поддерживает все виды Arduino (и не только), а так же умеет работать с кучей различных протоколов и интерфейсов. В том числе и протокол для управления лентами на светодиодах WS2812B.
  • Библиотека Adafruit NeoPixel (Полное описание на нашем сайте), разрабатывается компанией Adafruit Industries. Предназначена для работы со светодиодными лентами и неопиксельными кольцами, продаваемыми в их интернет магазине. Библиотека написана на Си и Ассемблере с небольшим использованием Wiring. Эдакая солянка. Поддерживает все виды Arduino. Содержит меньший функционал по сравнению с FastLED, немного медленней, но имеет более компактный вид, только основное для работы.

Теперь давайте напишем наш излюбленный пример Blink, используя обе эти библиотеки, и затем сравним их.

Пример Blink используя ленту WS2812B (с 30 светодиодами) и библиотеку FastLED

// Подключаем библиотеку FastLED. #include «FastLED.h» // Указываем, какое количество пикселей у нашей ленты. #define LED_COUNT 30 // Указываем, к какому порту подключен вход ленты DIN. #define LED_PIN 6 // Создаем переменную strip для управления нашей лентой. CRGB strip[LED_COUNT]; void setup() {   // Добавляем ленту.

  FastLED.addLeds(strip, LED_COUNT); } void loop() {   // Включаем все светодиоды.   for (int i = 0; i < LED_COUNT; i++)   {     strip[i] = CRGB::Red; // Красный цвет.   }   // Передаем цвета ленте.   FastLED.show();   // Ждем 500 мс.   delay(500);   // Выключаем все светодиоды.

  for (int i = 0; i < LED_COUNT; i++)   {     strip[i] = CRGB::Black; // Черный цвет, т.е. выключено.   }   // Передаем цвета ленте.   FastLED.show();   // Ждем 500 мс.   delay(500); }Скетч использует 3758 байт (11%) памяти устройства. Всего доступно 32256 байт.

Глобальные переменные используют 187 байт (9%) динамической памяти, оставляя 1861 байт для локальных переменных. Максимум: 2048 байт.

Пример Blink используя ленту WS2812B (с 30 светодиодами) и библиотеку Adafruit NeoPixel

Источник: http://arduino.on.kg/podklyuchenie-adresnoy-svetodiodnoy-lenty-WS2812B-k-Arduino

Схема подключения и управление светодиодной лентой с помощью Arduino

› Все про освещение ›

09.01.2019

С помощью него можно получить множество различных оттенков света. Управление RGB-светодиодом осуществляется с помощью микроконтроллера (MK), например, Arduino (рис.2).

Конечно, можно обойтись простым блоком питания на 5 вольт, резисторами в 100-200 Ом для ограничения тока и тремя переключателями, но тогда управлять свечением и цветом придется вручную. В таком случае добиться желаемого оттенка света не получится (рис.3-4).

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

Лента на базе WS2812B

Лента на чипе WS2812B является более совершенной, чем ее предшественник WS2811. ШИМ драйвер в адресной ленте компактен, и размещается прямо в корпусе светоизлучающего диода.

Основные преимущества ленты на основе WS2812:

  • компактные размеры
  • легкость управления
  • управление осуществляется всего по одной линии + провода питания
  • количество включенных последовательно светодиодов не ограничено
  • невысокая стоимость – покупка отдельно трех светодиодов и драйвера к ним выйдет значительно дороже

Лента оснащена четырьмя выходами:

  • питание
  • выход передачи данных
  • общий контакт
  • вход передачи данных.

Максимальный ток одного адресного светодиода равняется 60 миллиамперам. Рабочие температуры лежат в пределах от -25 до +80 градусов. Напряжение питания составляет 5 В +-0,5.

ШИМ драйверы ленты 8-мибитные – для каждого цвета возможно 256 градация яркости. Для установки яркости нужно 3 байта информации – по 8 бит с каждого светодиода. Информация передается по однолинейному протоколу с фиксированной скоростью.

Нули и единицы кодируются высоким и низким уровнем сигнала по линии.

Управление RGB лентой с помощью Andurino

Кроме однокристальных светодиодов, Ардуино может работать и с цветными LED. Подключив выводы каждого цвета к аналоговым выходам Ардуино можно произвольно изменять яркость каждого кристалла, добиваясь необходимого цвета свечения.

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

Аналогично построено и управление RGB лентой Arduino:

Аrduino RGB контроллер лучше собирать на полевых транзисторах.

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

Скетч управления яркостью светодиодной ленты Arduino

int led = 120;
устанавливаем средний уровень яркости

void setup() {
pinMode(4, OUTPUT);
устанавливаем 4й аналоговый порт на вывод
pinMode(2, INPUT);

pinMode(4, INPUT);
устанавливаем 2й и 4й цифровой порт на ввод для опроса кнопок
}
void loop(){

button1 = digitalRead(2);

button2 = digitalRead(4);
if (button1 == HIGH)
нажатие на первую кнопку увеличит яркость
{
led = led + 5;

analogWrite(4, led);
}
if (button2 == HIGH)
нажатие на вторую кнопку уменьшит яркость
{
led = led — 5;

analogWrite(4, led);
}

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

Устройство и назначение RGB светодиода

Для отображения всей палитры оттенков вполне достаточно три цвета, используя RGB синтез (Red – красный, Green – зеленый, Blue – синий). RGB палитра используется не только в графических редакторах, но и в сайтостроении . Смешивая красный, зеленый и синий цвет в разной пропорции можно получить практически любой цвет.

RGB светодиоды объединяют три кристалла разных цветов в одном корпусе. Использование RGB светодиодов и RGB LED ленты позволяет создать осветительный прибор или освещение интерьера с любым оттенком цвета. Преимущества RGB светодиодов в простоте конструкции и высоком КПД светоотдачи.

RGB LED имеет 4 вывода — один общий (анод или катод имеет самый длинный вывод) и три цветовых вывода. К каждому цветовому выходу следует подключать резистор. Кроме того, RGB LED может сразу монтироваться на плате и иметь встроенные резисторы — этот вариант более удобный для занятий в кружке .

Фото. Распиновка RGB светодиода и модуль с RGB светодиодом для Ардуино

Распиновка RGB светодиода указана на фото выше. Заметим также, что для многих полноцветных светодиодов необходимы светорассеиватели, иначе будут видны составляющие цвета. Далее подключим RGB светодиод к Ардуино и заставим его светится всеми цветами радуги с помощью «широтно импульсной модуляции».

Управление RGB светодиодом на Ардуино

// Присваиваем имя RED для пина 11// Присваиваем имя GREEN для пина 12// Присваиваем имя BLUE для пина 13// Используем Pin12 для вывода// Используем Pin13 для вывода// Включаем красный свет// Включаем зеленый свет// Устанавливаем паузу для эффекта// Включаем синий свет

// Устанавливаем паузу для эффекта

Пояснения к коду:

  1. С помощью директивы #define мы заменили номер пинов 11, 12 и 13 на соответствующие имена RED , GREEN и BLUE . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
  2. В процедуре void setup() мы назначили пины 11, 12 и 13, как выходы;
  3. В процедуре void loop() мы поочередно включаем все три цвета на RGB LED.

На что обратить внимание:

  1. Пины 11, 12 и 13 мы использовали, как цифровые выходы digitalWrite .
  1. Измените скетч, чтобы на светодиоде включались одновременно два разных цвета.

Как подключить светодиод к Arduino Uno

Для теста нам понадобится:

  • Arduino Uno
  • макетная плата
  • светодиод
  • резистор для светодиода
  • соединительные провода

Все соединяем, согласно указанной схеме.

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

Как можно видеть, мы использовали два контакта Arduino. Первый из них pin13 будет служить для управления светодиодом, второй – минус схемы.

Следует обратить внимание на. Анод (+) светодиода нужно подключить через резистор к pin13

Катод (-) светодиода подключаем к минусу платы. После проверки правильности соединения мы можем перейти к написанию нашей первой программы.

Наша первая программа позволит поочередно включать и выключать светодиод. Частота мигания светодиода составит около 1Гц.

const int ledPin = 13; // номер контакта для светодиодаvoid setup(){pinMode(ledPin, OUTPUT);}void loop(){digitalWrite(ledPin, HIGH); // устанавливаем высокое состояние на pin13delay(500); //остановка 0,5 сек (500ms)digitalWrite(ledPin, LOW); // устанавливаем низкое состояние на pin13delay(500); // остановка 0,5 сек (500ms)}

Программа начинается с объявления используемого контакт (ledPin). С этого момента везде, где мы будем ссылаться на «ledPin», будет ссылка на pin13 Arduino.

Затем в функции setup() мы указываем, что наш pin13 будет использоваться как выход.

Функция pinMode(pin, mode) позволяет определить, будет ли использоваться наш контакт как вход или как выход. Первый параметр функции это номер контакта, второй предопределенное значение INPUT (вход) или OUTPUT (выход).

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

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

Функция digitalWrite(pin, value) позволяет изменять статус каждого из контактов. Цифровые выходы могут иметь низкий (LOW) или высокий (HIGH) логический уровень. LOW (лог.0) — электрически замкнут на минус, а HIGH (лог.1) — около 5 В.

Номер порта в функции digitalWrite () может быть указан непосредственно в виде числа (в нашем случае 13) или обозначен так, как мы прописали его в функции pinMode () (т.е ledPin).

Последним элементом программы является функция delay(), которая останавливает выполнение программы на определенное время. Время задается в миллисекундах. Одна секунда это 1000 мс.

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

Итак, pin13 Arduino устанавливается как выход. Следующим шагом идет установка высокого состояния на Pin13 и приостановка дальнейшего выполнения кода на 0,5 сек. Затем Pin13 устанавливается в низкое состояние и исполнение кода приостанавливается на 0,5 сек. Согласно философии написания программ в Arduino IDE, функция loop () выполняется в бесконечном цикле, что вызовет визуальное мигание светодиода.

После того, как вы написали программу, скомпилируйте ее и отправьте в Arduino. Если все шаги были выполнены правильно, светодиод должен начать мигать с частотой примерно в 1 Гц.

При отсутствии положительного результата необходимо еще раз проверить правильность соединений и программный код.

Урок 1. arduino и мигающий светодиод

Принципиальная схема к уроку 1. Arduino и Мигающий светодиод

LEDs (light-emitting diodes) — по русски Светоизлучающий диод, используется во многих электронных устройствах. При прохождении через его кристалл ток вызывает свечение, которое усиливается оптическим колпачком-линзой.

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

Делятся светодиоды на две группы — Монохромные (одноцветные) и RGB (многоцветные).

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

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

Плата Arduino UNO — 1 шт.

Резистор 330ом. (можно использовать подходящие от 200 ом до 550 ом) — 1 шт.На корпусе резистора нанесены цветовые полоски, они указывают его номинал, мощность и т.д*

На резисторе 330 ом. полоски должны быть Оранжевая, Оранжевая, Коричневая.

Светоизлучающий диод — 1 шт.

Макетная плата — 1 шт.

Соединительные провода.

Вы должны собрать проект по электрической принципиальной схеме на первом рисунке.  В качестве подсказки и полноты понимания у вас есть следующий рисунок, который вам поможет разобраться куда, как и что подключается. Какме цветом брать провода, как правильно вставить детали.

Схема соединений урока №1. Arduino и Мигающий светодиод

Скачайте и распакуйте архив с программой урока, подсоедините ардуино к компьютеру с помощью USB шнура, запустите скетч урока № 1, дважды щелкнув по файлу lesson_01.

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

Внимательно прочитайте весь sketch от начала до конца, а затем загрузите программу в Arduino с помощью кнопки ЗАГРУЗИТЬ, или UPLOAD, в зависимости от языка программы.

Набор для экспериментов ArduinoKit
Код программы для опыта №1: sketch 01

Что-то подобное должно получиться у вас:

В результате, после заливки программы в ардуино вы должны увидеть подмигивающий светодиод, который как бы говорит «Привет, Мир!». Если этого не произошло и светодиод не светится, вам необходимо проверить правильность соединения проводов. Правильность полярности светодиода +, -. Правильность полярности шин питания.

Источник: https://labstyle.ru/podklucenie-svetodioda-k-arduino/

Понравилась статья? Поделиться с друзьями:
Школа электрика
Как отремонтировать светодиодную лампу

Закрыть