Как подключить rgb светодиод к arduino

НАСТРОЙКИ

Чип ленты выбирается дефайном . Доступны:

#define TLED_CHIP LED_WS2811
#define TLED_CHIP LED_WS2812
#define TLED_CHIP LED_WS2813
#define TLED_CHIP LED_WS2815
#define TLED_CHIP LED_WS2818
#define TLED_CHIP LED_WS6812
#define TLED_CHIP LED_APA102
#define TLED_CHIP LED_APA102_SPI

Порядок цветов выбирается дефайном :

#define TLED_ORDER ORDER_RGB
#define TLED_ORDER ORDER_RBG
#define TLED_ORDER ORDER_BRG
#define TLED_ORDER ORDER_BGR
#define TLED_ORDER ORDER_GRB
#define TLED_ORDER ORDER_GBR

В большинстве случаев порядок цветов совпадает с указанным в документации, но можно нарваться на подделку (если покупать не по моим ссылкам, а искать самую дешёвую ленту). Вот стандартная “расцветовка”:

  • LED_WS2811 – ORDER_GBR
  • LED_WS2812 – ORDER_GRB
  • LED_WS2813 – ORDER_GRB
  • LED_WS2815 – ORDER_GRB
  • LED_WS2818 – ORDER_RGB
  • LED_WS6812 – ORDER_RGB
  • LED_APA102 – ORDER_BGR
  • LED_APA102_SPI – ORDER_BGR

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

// #define TLED_CLI CLI_OFF  // прерывания не запрещаются
// #define TLED_CLI CLI_LOW  // запрещаются на время передачи байта (стоит по умолчанию)
// #define TLED_CLI CLI_AVER // запрещаются на время передачи светодиода (3 байта)
// #define TLED_CLI CLI_HIGH // запрещаются на время передачи всей ленты

Управление яркостью можно отключить целях уменьшения веса кода (экономия около 60 байт). Делаем одинокий дефайн и перестаёт работать. В то же время яркость светодиодов спокойно регулируется при генерации эффектов, общая яркость она и не нужна особо.

// #define TLED_STATIC_BRIGHT

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

1 пин ленты

// по умолчанию задефайнен PORTB (для ATtiny)
// можно указать свой порт, если у тиньки больше 8 ног или это вообще атмега
// #define TLED_PORT PORTB
// #define TLED_DDR DDRB

Сам пин указывается при инициализации объекта:

#include "tinyLED.h"
tinyLED< 3> strip;  // например пин 3

2 пин ленты, софт SPI

// программный SPI, например LED_APA102
// по умолчанию PORTB
// можно указать свой порт, если у тиньки больше 8 ног или это вообще атмега
// #define TLED_CLK_PORT PORTB
// #define TLED_CLK_DDR DDRB
// #define TLED_DAT_PORT PORTB
// #define TLED_DAT_DDR DDRB

Сами пины указываются при инициализации объекта:

#include "tinyLED.h"
tinyLED< 3, 4> strip; // < DATA, CLOCK > для 2-пин лент

2 пин ленты, аппаратный SPI

При выборе в качестве модели ленты в код автоматически подключается библиотека SPI.h. Она есть не для всех МК, так что не везде будет работать! Лента подключается к аппаратным выводам SPI микроконтроллера, например на Nano это D13 (CLK) и D11 (DATA). Дефайны пинов указывать не нужно, как и номера пинов при инициализации:

tinyLED strip;

Но добавляется настройка скорости SPI:

// #define TLED_SPI_CLOCK 8000000

По умолчанию стоит 8000000, можно менять как надо. Это всё.

Ардуино и адресная светодиодная лента

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

Теперь, когда мы рассмотрели схему с обычной светодиодной лентой, перейдем к адресным светодиодным лентам  SPI RGB лента.

Светодиодная лента Ардуино – Яркие идеи.

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

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

● Светодиодная лента 5v WS2811/12/12B; Все три модели имеют встроенные микросхемы и работают одинаково.

● 1 x Arduino Uno или аналогичная совместимая плата;

● 1 x резистор 220-440 Ом;

● 1 x конденсатор microFarad 100-1000 (все, что между этими двумя значениями, отлично подойдет);

● Макет и монтажные провода;

● Блок питания 5 В.

Настройте схему, как показано на рисунке:

Обратите внимание, что конденсатор должен быть правильной ориентации. Вы можете понять, какая сторона прикрепляется к рейке земля, ища знак минуса (-) на корпусе конденсатора

На этот раз мы задействуем Arduino, используя источник питания 5 В. Это позволит устройству работать автономно

Вы можете понять, какая сторона прикрепляется к рейке земля, ища знак минуса (-) на корпусе конденсатора. На этот раз мы задействуем Arduino, используя источник питания 5 В. Это позволит устройству работать автономно.

Во-первых, убедитесь, что ваша плата может работать с 5 В, прежде чем присоединить ее к источнику питания. Почти все платы работают на 5V через USB-порт, но штыри питания на некоторых могут иногда пропускать регуляторы напряжения и превращать их в поджаренные тосты.

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

Светодиодная лента Ардуино – Бегущий огонь или световая волна

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

Присоедините свой Arduino к компьютеру и откройте Arduino IDE. Убедитесь, что у вас правильный номер платы и порта, выбранный в меню «Сервис»> «Сервис и инструменты»> «Порт».

Мы будем использовать библиотеку FastLED для тестирования нашей установки. Вы можете добавить библиотеку, нажав на Эскиз> Включить библиотеку> Управление библиотеками и поиск FastLED. Нажмите «Установить», и библиотека будет добавлена в среду IDE.

В разделе «Файл»> «Примеры»> «FastLED» выберите эскиз DemoReel100. В этом эскизе задействованы различные эффекты, которые можно сделать с помощью светодиодных полос WS2812, и невероятно легко настроить.

Все, что вам нужно изменить, — это переменная DATA_PIN, чтобы она соответствовала значку 13 и переменной NUM_LEDS для определения количества светодиодов, находящихся в полосе, которую вы используете. В этом случае я применяю только небольшую линию из 10 светодиодов, вырезанных из более длинной полосы.

Используйте большее количество для красивейшего светового шоу!

Загрузите эскиз на свою плату, отсоедините USB-кабель и включите источник питания 5 В.

Наконец, подключите VIN Arduino к линии электропередач и наслаждайтесь представлением.

Светодиодная лента Ардуино – Безграничные возможности

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

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

ГРАДИЕНТЫ

В библиотеке реализован инструмент для создания градиентов любого размера (количество цветных сегментов) и длины:

mGradient< 4 > myGrad;  // создать градиент с именем myGrad на 4 точки
// указываем цвет каждой точки
myGrad.colors = mBlack;
myGrad.colors = mRed;
myGrad.colors = mYellow;
myGrad.colors = mWhite;
// создали градиент чёрный-красный-жёлтый-белый с одинаковым расстоянием между точками

// при помощи .get(позиция, размер) можно получить цвет в заданном месте градиента при указанной длине

// заливаем всю ленту
for (int i = 0; i < NUMLEDS; i++) {
  strip.set(i, myGrad.get(i, NUMLEDS)); // получаем последовательно все цвета
}
strip.show();

GPIO

Начнем с пинов, которых больше всего, это GPIO, с англ. General Purpose Input-Output, входы-выходы общего назначения, на плате они подписаны как D0–D13 и A0–A5. По картинке распиновки они называются PD*, PB* и PC*, (вместо звёздочки – цифра) отмечены тёмно-бежевым цветом. Почему “официально” они называются PD/PB/PC? Потому что пины объединены в пОрты по несколько штук (не более 8), на примере Нано есть три порта: D, B и C, соответственно пины так и подписаны: PD3 – Port D 3 – третий выход порта D. Это цифровые пины, способные выдавать логический сигнал (0 или VCC) и считывать такой же логический сигнал. VCC это напряжение питания микроконтроллера, при обычном использовании обычной платы Ардуино это 5 Вольт, соответственно это 5 вольтовая логика: 0V – сигнал низкого уровня (LOW), 5V – высокого уровня (HIGH). Напряжение питания микроконтроллера играет очень большую роль, об этом мы ещё поговорим. GPIO имеют несколько режимов работы: вход (INPUT), выход (OUTPUT) и вход с подтяжкой к питанию встроенным в МК резистором на 20 кОм (INPUT_PULLUP). Подробнее о режимах поговорим в отдельном уроке.

Все GPIO пины в режиме входа могут принять сигнал с напряжением от 0 до 5 вольт (на самом деле до 5.5 вольт, согласно даташиту на микроконтроллер). Отрицательное напряжение или напряжение, превышающее 5.5 Вольт приведёт к выходу пина или даже самого МК из строя. Напряжение 0-2.5 вольта считается низким уровнем (LOW), 2.5-5.5 – высоким уровнем (HIGH). Если GPIO никуда не подключен, т.е. “висит в воздухе”, он принимает случайное напряжение, возникающее из за наводок от сети (провода 220в в стенах) и электромагнитных волн на разных частотах, которыми пронизан современный мир.

GPIO в режиме выхода (OUTPUT) являются транзисторными выходами микроконтроллера и могут выдать напряжение 0 или VCC (напряжение питания МК). Стоит отметить, что микроконтроллер – логическое, а не силовое устройство, его выходы рассчитаны на подачу сигналов другим железкам, а не на прямое их питание. Максимальный ток, который можно снять с GPIO выхода ардуино – 40 мА. Если попытаться снять больше – пин выйдет из строя (выгорит выходной транзистор и всё). Что такое 40 мА? Обычный 5мм одноцветный светодиод потребляет 20 мА, и это практически единственное, что можно питать напрямую от Ардуино. Также не стоит забывать о максимальном токе со всех пинов, он ограничен 200 мА, то есть не более 10 светодиодов можно запитать от платы на полную яркость…

ЦВЕТОВАЯ ГЛУБИНА

Цветовая глубина задаёт количество байт, которые занимает цвет одного светодиода и может быть от 1, 2 и 3 байта (8, 16 и 24 бита на один светодиод соответственно). Все остальные библиотеки используют 24-битную глубину цвета, в microLED её можно уменьшить для экономии памяти. При уменьшении цветовой глубины пропорционально уменьшается вес ленты в оперативной памяти, но в то же время ухудшается цвет: на эффектах с плавными переходами цвета будут заметны границы между оттенками. Настройка цветовой глубины задаёт работу всей библиотеки и делается при помощи дефайна до подключения библиотеки:

#define COLOR_DEBTH 2 
#include < microLED.h >

По умолчанию (если не указывать дефайн) глубина настроена на 24 бита (COLOR DEBTH 3). Понижать глубину рекомендуется только в целях экономии памяти.

Питание “мощных” схем

Резюмируя и повторяя всё сказанное выше, рассмотрим варианты питания проектов с большим потреблением тока.

Питать мощный проект (светодиоды, двигатели, нагреватели) от 5V можно так: Arduino и потребитель питаются вместе от 5V источника питания:

Питать мощный потребитель от USB через плату нельзя, там стоит диод, да и дорожки питания тонкие:

Что делать, если всё-таки хочется питать проект от USB, например от powerbank’а? Это ведь удобно! Всё очень просто:

Если есть только блок питания на 12V, то у меня плохие новости: встроенный стабилизатор на плате не вытянет больше 500 мА:

Но если мы хотим питать именно 12V нагрузку, то проблем никаких нет: сама плата Arduino потребляет около 20 мА, и спокойно будет работать от бортового стабилизатора:

Принцип управления нагрузкой через Ардуино

Плата Ардуино имеет два типа портов вывода: цифровой и аналоговый (ШИМ-контроллер). У цифрового порта возможно два состояния – логический ноль и логическая единица. Если подключить к нему светодиод он либо будет светиться, либо не будет.

Аналоговый выход представляет собой ШИМ-контроллер, на который подаётся сигнал частотой около 500Гц с регулируемой скважностью. Что такое ШИМ-контроллер и принцип его работы можно найти в интернете

Через аналоговый порт  возможно не только включать и выключать нагрузку, а и изменять напряжение (ток) на ней.

Синтаксис команд

Цифровой вывод:

pinMode(12, OUTPUT); — задаём порт 12 портом вывода данных;digitalWrite(12, HIGH); — подаём на дискретный выход  12 логическую единицу, зажигая светодиод.

Аналоговый вывод:

analogOutPin = 3; – задаём порт 3 для вывода аналогового значения;analogWrite(3, значение); – формируем на выходе сигнал с напряжением от 0 до 5В

Значение – скважность сигнала от 0 до 255. При значении 255 максимальное напряжение

Способы управления светодиодами через Ардуино

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

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

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

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • лента WS2812B;
  • макетная плата;
  • 1 резистор от 100 до 500 Ом;
  • провода «папа-папа».

WS2812B светодиоды довольно энергоемкие, один светодиод потребляет до 60 мА при максимальной яркости. Для ленты со 100 диодами потребуется блок питания на 6 и более Ампер. Микроконтроллер Arduino и светодиодная лента могут быть подключены к разным источникам питания, но «земля» должна быть общая. Дело в том, что пин GND тоже участвует в управлении адресной лентой от платы Ардуино Уно.


Схема подключения адресной ленты 5 Вольт к Ардуино

Для работы с лентой используются три популярные библиотеки — FastLED, AdafruitNeoPixel и LightWS2812. Все библиотеки доступны для скачивания на нашем сайте здесь. Работать с библиотеками FastLED и Adafruit NeoPixel просто, отличаются они в функциональности и объеме занимаемой памяти. После сборки этой простой схемы и установки библиотек, загрузите скетч для адресной светодиодной ленты.

Скетч. Тестирование адресной ленты WS2812

#include <Adafruit_NeoPixel.h> // подключаем библиотеку

#define PIN  10              // указываем пин для подключения ленты
#define NUMPIXELS 3  // указываем количество светодиодов в ленте

// создаем объект strip с нужными характеристиками
Adafruit_NeoPixel strip (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
   strip.begin();                     // инициализируем ленту
   strip.setBrightness(50);  // указываем яркость светодиодов (максимум 255)
}

void loop() {
   strip.setPixelColor(0, strip.Color(255, 0, 0));   // включаем красный цвет на 1 светодиоде
   strip.show();   // отправляем сигнал на ленту
   delay(500);
   strip.clear();   // выключаем все светодиоды

   strip.setPixelColor(1, strip.Color(0, 0, 255));   // включаем синий цвет на 2 светодиоде
   strip.show();   // отправляем сигнал на ленту
   delay(500);
   strip.clear();   // выключаем все светодиоды

   strip.setPixelColor(2, strip.Color(255, 255, 255));   // включаем белый цвет на 3 светодиоде
   strip.show();   // отправляем сигнал на ленту
   delay(500);
   strip.clear();   // выключаем все светодиоды

}

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

  1. нумерация светодиодов в ленте начинается с нуля, поэтому если мы хотим включить первый светодиод, то указывать надо «0».


Схема подключения адресной ленты 12 Вольт к Ардуино

Если у вас лента на 12 Вольт, то ее нужно подключать по схеме, размещенной выше. Резистор на цифровом пине защищает его от выгорания (если питание к ленте будет отключено, то она начнет питаться от цифрового пина, при этом пин может выгореть. Также не стоит подключать питание ленты к плате Ардуино, иначе может выгореть защитный диод на Ардуино или USB порт на компьютере (в худшем случае).

Скетч. Управление адресной лентой Ардуино

#include <Adafruit_NeoPixel.h> // подключаем библиотеку

#define PIN  10              // указываем пин для подключения ленты
#define NUMPIXELS 3  // указываем количество светодиодов в ленте

// создаем объект strip с нужными характеристиками
Adafruit_NeoPixel strip (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
   strip.begin();                     // инициализируем ленту
   strip.setBrightness(50);  // указываем яркость светодиодов (максимум 255)
}

void loop() {

   // поочередно включаем красный цвет
   for (int i = -1; i < NUMPIXELS; i++) {
      strip.setPixelColor(i, strip.Color(255, 0, 0));
      strip.show();
      delay(100);
   }

   // поочередно включаем зеленый цвет
   for (int i = -1; i < NUMPIXELS; i++) {
      strip.setPixelColor(i, strip.Color(0, 255, 0));
      strip.show();
      delay(100);
   }

   // поочередно включаем синий цвет
   for (int i = -1; i < NUMPIXELS; i++) {
      strip.setPixelColor(i, strip.Color(0, 0, 255));
      strip.show();
      delay(100);
   }

}

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

  1. с помощью библиотеки Adafruit NeoPixel довольно просто управлять адресной лентой. В примерах к библиотеке можно найти много различных эффектов. Мы продемонстрировали простой вариант с циклом for для включения ленты.

Питание в 5V

Питание в пин 5V (и GND) – самый лучший вариант питать плату и ардуино-проект в целом, но нужно быть аккуратным: пин идёт напрямую на микроконтроллер, и на него действуют некоторые ограничения:

  • Максимальное напряжение питания согласно даташиту на микроконтроллер – 5.5V. Всё что выше – с большой вероятностью выведет МК из строя;
  • Минимальное напряжение зависит от частоты, на которой работает МК. Вот строчка из даташита: 0 – 4 MHz @ 1.8 – 5.5V, 0 – 10 MHz @ 2.7 – 5.5V, 0 – 20 MHz @ 4.5 – 5.5V. Что это значит: большинство Arduino-плат имеют источник тактирования на 16 MHz, то есть Arduino будет стабильно работать от напряжения ~4 Вольта (20 МГц – 4.5V, 16 МГц – около 4V). Есть версии Arduino на 8 МГц, они будут спокойно работать от напряжения 2.5V.

Важно: напряжение питания в пин 5V не должно превышать 5.5V. Минимальное напряжение: 4V для плат на 16 МГц (на моей практике работало стабильно от 3.5V), 2.5V для плат на 8 МГц.. Самый популярный вариант – USB зардяник от смартфона, их легко достать, диапазон токов от 500ма до 3А – справится практически с любым проектом

Отрезаем штекер и паяем провода на 5V и GND, предварительно определив, где плюс/минус при помощи мультиметра или по цвету: красный всегда плюс, чёрный – земля, при красном плюсе земля может быть белого цвета. При чёрной земле плюс может быть белым, вот так вот. Точно туда же паяем все датчики/модули/потребители 5 Вольт. Да, не очень удобно это паять, но при известной схеме можно аккуратно собрать всё питание в отдельные скрутки и припаять уже их. Пример на фото ниже. Источником питания там является отдельное гнездо micro-usb, зелёная плата сразу над дисплеем

Самый популярный вариант – USB зардяник от смартфона, их легко достать, диапазон токов от 500ма до 3А – справится практически с любым проектом. Отрезаем штекер и паяем провода на 5V и GND, предварительно определив, где плюс/минус при помощи мультиметра или по цвету: красный всегда плюс, чёрный – земля, при красном плюсе земля может быть белого цвета. При чёрной земле плюс может быть белым, вот так вот. Точно туда же паяем все датчики/модули/потребители 5 Вольт. Да, не очень удобно это паять, но при известной схеме можно аккуратно собрать всё питание в отдельные скрутки и припаять уже их. Пример на фото ниже. Источником питания там является отдельное гнездо micro-usb, зелёная плата сразу над дисплеем.

Добавляем свой светодиод (+светодиод)

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

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

В светодиодах короткую ножку («минус») светодиода нужно соединять с землёй (GND). Светодиод не рассчитан на большой ток. Чтобы не повредить светодиод, используйте с ним резистор. Он позволяет уменьшить силу тока. В противном случае светодиод прослужит недолго или просто сгорит. Полярность резисторов не важна. Сам резистор можно подключать как до светодиода, так и после него. Я привык сначала ставить резистор, а потом светодиод по направлению от источника питания к земле.

Из первого примера с встроенным светодиодом мы помним, что он использует вывод под номером 13 (на большинстве плат). На плате есть свободный вывод с этим номером, который находится рядом с выводом GND. Берём светодиод и вставляем в эти выводы. Не забываем, что короткую ножку вставляем в GND, а длинную в вывод 13. У вывода 13 уже установлен резистор, поэтому светодиод не сгорит.

Запускаем снова программу Blink. Теперь будут мигать два светодиода: встроенный и наш. Красота!

Вернёмся к светодиодам. Как правило, в цепи идёт слишком большой ток для светодиодов. Чтобы уменьшить силу тока, используют токопонижающие резисторы (сопротивления). У светодиодов есть важные характеристики: ток питания и напряжение падения (Forward voltage). Невероятно, но факт — светодиоды разных цветов используют разные значения напряжения падения. Максимальный ток для светодиодов колеблется в районе 20 миллиампер. Для вычисления значения сопротивления используют : из напряжения питания вычитаем напряжение падения и результат делим на силу тока в светодиоде в амперах. В документации обычно рекомендуют использовать резистор от 220 ohm до 1K ohm. На практике, можно использовать и 100 ом. Если поставите меньше, то будет риск спалить светодиод. При выполнении опытов с несколькими светодиодами вы можете установить разные резисторы, чтобы увидеть разницу.

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

Подключение светодиодной ленты к Ардуино

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

Учитывая то, что arduino работает максимум с 5в на выход, а бывает и с 3.3в, то нам потребуються MOSFET транзисторы и резисторы на 10 кОм. На рисунке выше указано как подключить 12 вольтовую светодиодную ленту к arduino с отдельным питанием для ленты и управлением с использованием MOSFET транзисторов.

Ну а теперь после удачного подключения нашего светодиода или светодиодной ленты к ардуино, подключим еще и bluetooth модуль HC-05, схема на фото ниже.

Схема подключения HC-05 к Arduino

Теперь для управления светодиодом  используем скетч

RGB_LED

Arduino

unsigned long x;
int LED = 9; // зеленый подключен к 9 пину
int LED2 = 10; // синий подключен к 10 пину
int LED3 = 11; // красный подключен к 11 пину
int a,b,c = 0;
void setup() {
Serial.begin(9600);
Serial.setTimeout(4);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop()
{
if (Serial.available())
{
x = Serial.parseInt();
if (x>=0 && x<=255) {
//a = x; // для RGB ленты
a = 255-x;
analogWrite(LED, a);
}
if (x>=256 && x<=511) {
//b = x-256; // для RGB ленты
b = 511-x;
analogWrite(LED2, b);
}
if (x>=512 && x<=767) {
//c = x-512; // для RGB ленты
c = 767-x;
analogWrite(LED3, c);
}
/* Serial.println(x);
Serial.println(a);
Serial.println(b);
Serial.println(c); */
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

unsignedlongx;

intLED=9;// зеленый подключен к 9 пину

intLED2=10;// синий подключен к 10 пину

intLED3=11;// красный подключен к 11 пину

inta,b,c=;

voidsetup(){

Serial.begin(9600);

Serial.setTimeout(4);

pinMode(LED,OUTPUT);

pinMode(LED2,OUTPUT);

pinMode(LED3,OUTPUT);

 
}
 

voidloop()

{

if(Serial.available())

{

x=Serial.parseInt();

if(x>=&&x<=255){

//a = x;  // для RGB ленты

a=255-x;

analogWrite(LED,a);

}

if(x>=256&&x<=511){

//b = x-256;  // для RGB ленты  

b=511-x;

analogWrite(LED2,b);

}

if(x>=512&&x<=767){

//c = x-512;  // для RGB ленты

c=767-x;

analogWrite(LED3,c);

}

/* Serial.println(x);

     Serial.println(a);
     Serial.println(b);
     Serial.println(c); */

}

}

Если же мы подключили ленту, то в скетче раскомментируем строки

RGB_LED

Arduino

//a = x; // для RGB ленты

1 //a = x;  // для RGB ленты

RGB_LED

Arduino

//b = x-256; // для RGB ленты

1 //b = x-256;  // для RGB ленты

RGB_LED

Arduino

//c = x-512; // для RGB ленты

1 //c = x-512;  // для RGB ленты

И закомментируем строки

RGB_LED

Arduino

a = 255-x;

1 a=255-x;

RGB_LED

Arduino

b = 511-x;

1 b=511-x;

RGB_LED

Arduino

c = 767-x;

1 c=767-x;

Теперь скачаем приложение для телефона

устанавливаем на телефон и запускаем

Иконка приложения

потом кликаем по надписи connect

выбираем из списка наш bluetooth

И у нас вверху отобразится надпись с серийним адресом модуля и названием

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

https://youtube.com/watch?v=gG-9IBFsRwI

На этом все, до скорых встреч.

Общие сведения

Светодиодная панель выполнена в пластмассовой рамки. С лицевой стороны расположены 2048 RGB-светодиодов в виде сетки, а с обратной — печатная плата с электронными компонентами.

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

Матрица фактически разделена на два блока: верхние 16 строк и нижние 16 строк. В верхний блок данные поступают через сигналы , и , а в нижние — через , и .

Одновременно светится только одна строка каждого блока. Для полноценного свечения организована развёртка и данные передаются динамически. Фактически в каждом блоке расположен сдвиговый регистр с выбором адреса на строку.

Сигналом LAT сигнализируем, чтобы сдвиговый регистр принял строку данных. Дальше в цикле 16 раз выставляем данные (R1,G1,B1,R2,G2,B2) и запихиваем их низким импульсом CLK. Сразу в оба сдвиговых регистра.

Входами A, B, C, D выбираем строку отображения. А точнее две строки верхнего и нижнего блока.

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

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

Смотрите видео — Установка Arduino UNO и пример программы

Установка Arduino UNO и пример программыУстановка Arduino UNO и пример программы

Давайте подключим нашу платформу, проверим все ли в инструментах у нас нормально, всё правильно ли определилась, и начнем писать не большой код.

Он будет очень короткий, добавим переменную типа int цельно-численное значение с именем и присвоим его значение 13 — это будет номер разъема номер пина на плате Arduino.

int led = 13;

В основной подпрограмме setup запишем обратимся к (13 разъему) и укажем, что этот разъем будет использован как выход.

void setup() {
 pinMode(led, OUTPUT);
}

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

Так же напишем и обращаемся к 13 разъему через переменную , указываем ему значении напряжения – высокое.

Также добавил задержку в 1000 миллисекунд, снова напишем переменная — 13 вывод и константа — отсутствие напряжения либо низкое напряжение.

Снова задержка 1000 мс, так практически код у нас готов, перед тем как проверить наш скетч, давайте подключим красный светодиод на 13 контакт и на GND – земля или минус они рядом.

void loop() {
digitalWrite(led, HIGH);
delay(1000); 
digitalWrite(led, LOW);
delay(200); 
}

Обратите внимание в этом комплекте плюс светодиода, который вставляется в 13 разъем, это длинный вывод, если красный светодиод мигает и светодиод L на плате погас, значит всё подключили правильно. Теперь проведем проверку скетча, компиляцию, загрузку на устройство

Как видите, TX и RX светодиоды на плате загорелись и теперь наш светодиод мигает с периодичностью в 1000 мс

Теперь проведем проверку скетча, компиляцию, загрузку на устройство. Как видите, TX и RX светодиоды на плате загорелись и теперь наш светодиод мигает с периодичностью в 1000 мс.

Изменим задержку на 200мс и 200мс, проверим и зальем скетч на плату. Как видите теперь длительность горения 200 мс и интервал тоже 200мс.

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

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

Полный текст скетча.

int led = 13;

void setup() {
 pinMode(led, OUTPUT);
}

void loop() {
digitalWrite(led, HIGH);
delay(1000); 
digitalWrite(led, LOW);
delay(200); 
}

Как устроен RGB-светодиод и его назначение

Светодиодная лента состоит из 3 цветных кристаллов и 4 выходов: 12 (общий вывод), R (Red), G (Green), B (Blue). Основные комплектующие помещены в пластиковый корпус. Также в некоторых моделях RGB LED Arduino присутствуют встроенные резисторы. Они подключены к цветным выходам. Анодные и катодные электроды обладают самыми длинными выводами.

Одной из самых современных моделей RGB Ардуино является адресная светодиодная лента. Она состоит из диодов и контроллера. В это устройство по умолчанию встроены 3 полевых транзистора, что позволяет регулировать цвет светодиодов по отдельности.

Устройство светодиоида.

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

  1. Powerbank 5V: лента подсоединяется к данному устройству при помощи USB-штекеров. Емкость Powerbank 5V составляет 3350 мА*ч, что позволяет питать светодиоды током с силой 3А.
  2. Батарейки АА: используются в количестве 3 шт. Общая емкость этих приборов составляет 180 мА*ч. Они подают ток с напряжением до 5,5 В. Рекомендуется использовать батарейки AA, изготовленные из лития или апкалина.
  3. Никелевые аккумуляторы: имеют напряжение до 1,4 В. Для питания RGB Arduino требуется не менее 4 аккумуляторов из никеля. Емкость сборки составляет 2700 мА*ч.
  4. Литиевые аккумуляторы: имеют напряжение 4,2 В. В процессе эксплуатации значение этого показателя снижается до 3 В. Литиевые аккумуляторы позволяют сохранять полную яркость светодиодов. Они питают диоды током с силой до 2 А.

В зависимости от способа подачи электрического тока светодиоды будут гореть разными цветами. Если подать питание на 3 цветных светодиода одновременно, то кристаллы станут белыми. Для настройки цветовой гаммы Arduino RGB используются контроллеры с пультом управления. Они состоят из 3 полевых транзисторов и микропроцессора. Это приспособление позволяет настроить цветовую гамму светодиодов на дальнем расстоянии. Работа контроллеров с пультом управления обеспечивается при помощи скетчей, написанных в программной среде Ардуино.

Выделяют 2 основные модели RGB LED Arduino:

  1. WS2811: светодиоды питаются от чипа WS2811, расположенного отдельно от RGB-ленты. Питание устройства составляет 12 В.
  2. WS2812b: представляет собой ленту с напаянными светодиодами. В диоды встроены чипы WS2812b. Они позволяют менять окрас светодиодов по отдельности. Питание ленты WS2812b составляет 5 В.

Основными преимуществами RGB LED Arduino являются простота конструкции и высокий КПД. Эти приспособления активно используются при изготовлении осветительных приборов и декоративных подсветок. Также технология RGB нашла применение в трехмерной графике и WEB-разработке.

Шаг 4. Подключаем Arduino к Android-устройству

Нам нужно скачать приложение «Smart Bluetooth — Arduino Bluetooth Serial».

Smart Bluetooth — это приложение, которое позволяет использовать телефон для общения с модулем Bluetooth или платой, самым простым способом. Оно дает неограниченные возможности при управлении проектами. Smart Bluetooth предлагает множество способов передачи данных в ваш модуль.

Smart Bluetooth имеет следующие функции:

  • Быстрое подключение к модулю,
  • Отправлять и получать данные из вашего модуля,
  • Управление цифровыми и PWM-контактами приемника,
  • Темная и светлая тема,
  • Различные модели управления для разных целей,
  • Современный и отзывчивый интерфейс,
  • Настраиваемые кнопки и переключатели,
  • Реализуйте свой проект RC-машин с красивым геймпадом,
  • Легкое управление RGB-лентами через слайдер,
  • Автоматически отключает Bluetooth при закрытии для экономии батареи,
  • Командная строка (терминал).

В этом уроке мы используем вторую вкладку (TAB). В целом процесс выглядит так:

  1. Откройте приложение, нажмите кнопку SEARCH и найдите соседние устройства.
  2. Когда ваше устройство найдено, выберите его, щелкнув по нему.
  3. Выберите предпочтительную тему (темный или светлый) и удерживайте выбранную вами кнопку.
  4. Дождитесь соединения, если не работает, попробуйте переподключиться.
  5. После успешного соединения выберите вторую вкладку (TAB), щелкнув по ней, перетащите ползунки и проверьте, не изменила ли светодиодная полоса цвет.

Резюмируя

Теперь по сути дела: датчики, их куча кучная, измерять можно ну просто всё, что вообще измеряется. Электроника: напряжение, ток, сопротивление, работа с переменным током, поля. Параметры микроклимата: температура, влажность, давление, содержание газов, скорость ветра, освещенность, что угодно. Интересных модулей тоже очень много: Bluetooth, сотовая связь, GPS, дисплеи различных типов и размеров, датчики присутствия, как ИК, так и микроволновые, модули для беспроводной связи ардуинок и многое другое.

Можно управлять абсолютно любой железкой, которая выполняет свою функцию просто при подаче питания: лампочка, светодиодная лента, электронагреватель, мотор или любой электропривод, электромагнит, соленоид-толкатель, и это все с любым напряжением питания. Но тут нужно кое что понять: Ардуино (точнее микроконтроллер) – логическое устройство, то есть по-хорошему она должна только отдавать команды другим устройствам, или принимать их от них. Это я к тому, что напрямую от ардуино не работают ни лампочки, ни моторчики, ни нагреватели, ни-хуче-го. Максимум – светодиод. С пониманием этого идём дальше. Чтобы ардуино включила или выключила (подала питание) на другое устройство, нужно устройство – посредник, например реле или транзистор. Ардуино управляет реле, а реле в свою очередь включает любую нужную нагрузку с любым напряжением питания и все такое, подробнее об этом поговорим отдельно.

Как суть всего выше написанного – возможности Ардуино по подключению и управлению различными железками практически безграничны, можно воплотить любую идею, даже самую безумную. Датчики что то измеряют, исполнительные устройства что то контролируют, в это же время ведётся отсылка данных куда-нибудь, что-то отображается на дисплее и контролируется при помощи кнопок. Романтика!

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

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий