Урок по Arduino №1: подключаем, настраиваем, мигаем одноцветными и RGB-светодиодами

Встроенный светодиод в Arduino Uno и Nano

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

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

На некоторых вариантах плат количество источников света ограничено и 13 пин оказывается не подключенным. Это делается ради экономии потребляемой электроэнергии, ведь led-лампочка всегда приводит к повышенному потреблению электричества. В некоторых проектах, требующих увеличенного времени работы от аккумуляторов, “прожорливые лампочки” приходится выпаивать принудительно.

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

Уменьшаем время срабатывания события до 1/8 секунды и в 1 байте кодируем 8 бит состояний, отображаемых последовательно.

C++

// Массив режимов работы светодиода
byte modes[] = {
0B00000000, //Светодиод выключен
0B11111111, //Горит постоянно
0B00001111, //Мигание по 0.5 сек
0B00000001, //Короткая вспышка раз в секунду
0B00000101, //Две короткие вспышки раз в секунду
0B00010101, //Три короткие вспышки раз в секунду
0B01010101 //Частые короткие вспышки (4 раза в секунду)
};

uint32_t ms, ms1 = 0, ms2 = 0;
uint8_t blink_loop = 0;
uint8_t blink_mode = 0;
uint8_t modes_count = 0;

void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
modes_count = 1;
blink_mode = modes;
}

void loop() {
ms = millis();
// Событие срабатывающее каждые 125 мс
if( ( ms – ms1 ) > 125|| ms < ms1 ){
ms1 = ms;
// Режим светодиода ищем по битовой маске
if( blink_mode & 1<<(blink_loop&0x07) ) digitalWrite(13, HIGH);
else digitalWrite(13, LOW);
blink_loop++;
}

// Этот код служит для демонстрации переключения режимов
// Один раз в 5 секунд меняем эффект
if( ( ms – ms2 ) > 5000|| ms < ms2 ){
ms2 = ms;
blink_mode = modes;
if( modes_count >= 7 )modes_count = 1;
}
}

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
43

// Массив режимов работы светодиода

bytemodes={

0B00000000,//Светодиод выключен

0B11111111,//Горит постоянно

0B00001111,//Мигание по 0.5 сек

0B00000001,//Короткая вспышка раз в секунду

0B00000101,//Две короткие вспышки раз в секунду

0B00010101,//Три короткие вспышки раз в секунду

0B01010101//Частые короткие вспышки (4 раза в секунду)

};

uint32_t ms,ms1=,ms2=;

uint8_t  blink_loop=;

uint8_t  blink_mode=;

uint8_t  modes_count=;

voidsetup(){

pinMode(13,OUTPUT);

digitalWrite(13,LOW);

modes_count=1;

blink_mode=modesmodes_count;

}
 
 

voidloop(){

ms=millis();

// Событие срабатывающее каждые 125 мс  

if((ms-ms1)>125||ms<ms1){

ms1=ms;

// Режим светодиода ищем по битовой маске      

if(blink_mode&1<<(blink_loop&0x07))digitalWrite(13,HIGH);

elsedigitalWrite(13,LOW);

blink_loop++;

}

// Этот код служит для демонстрации переключения режимов    
// Один раз в 5 секунд меняем эффект  

if((ms-ms2)>5000||ms<ms2){

ms2=ms;

blink_mode=modesmodes_count++;

if(modes_count>=7)modes_count=1;

}

}

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

4-й режим. Короткая вспышка 1 раз в секунду

5-й режим. Две короткие вспышки в секунду

6-й режим. Три вспышки.

Ну и постоянная череда коротких вспышек

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

Что если 8 бит состояний светодиодов мало?

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

C++

byte bytes[] = {0B00010101,0B00110011,0B10100011,0B00000010};

uint32_t ms, ms1 = 0;
uint8_t blink_loop = 0;

void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
}

void loop() {
ms = millis();
// Событие срабатывающее каждые 125 мс
if( ( ms – ms1 ) > 125|| ms < ms1 ){
ms1 = ms;
// Выделяем сдвиг светодиода (3 бита)
uint8_t n_shift = blink_loop&0x07;
// Выделяем номер байта в массиве (2 байта со здвигом 3 )
uint8_t b_count = (blink_loop>>3)&0x3;
if( bytes & 1<< n_shift )digitalWrite(13, HIGH);
else digitalWrite(13, LOW);
blink_loop++;
}
}

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

bytebytes={0B00010101,0B00110011,0B10100011,0B00000010};

uint32_t ms,ms1=;

uint8_t  blink_loop=;

voidsetup(){

pinMode(13,OUTPUT);

digitalWrite(13,LOW);

}
 
 

voidloop(){

ms=millis();

// Событие срабатывающее каждые 125 мс  

if((ms-ms1)>125||ms<ms1){

ms1=ms;

// Выделяем сдвиг светодиода (3 бита)  

uint8_t n_shift=blink_loop&0x07;

// Выделяем номер байта в массиве (2 байта со здвигом 3 )      

uint8_t b_count=(blink_loop>>3)&0x3;

if(bytesb_count&1<<n_shift)digitalWrite(13,HIGH);

elsedigitalWrite(13,LOW);

blink_loop++;

}

}

Получаем циклический сигнал SOS — три коротких, три длинных и снова три коротких сигнала светодиодом, повторяемый каждые 4 секунды

Для тех, кто считает, что программировать микроконтроллеры в цикле loop() это не по Фен шую Несмотря на то, что millis() использует прерывание по первому таймеру

Программирование

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

В рамках этого урока мы рассмотрим некоторые алгоритмы, потому что это интересно и может пригодиться где-то ещё.

Включение цветов

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

Для плавного управления цветом можно использовать потенциометры:

Цветовое колесо

Первый очевидный эффект – плавное перетекание одного цвета в другой. Это можно сделать линейно, вот таким образом:

Реализовать это можно просто через условия. Продолжим предыдущий пример:

Пространство HSV

Следующий вариант более интересен тем, что помимо цвета позволяет настроить его яркость и насыщенность. Такая цветовая модель называется HSV – (Hue, Saturation, Value), или (Цвет, Насыщенность, Яркость), в этом цветовом пространстве гораздо удобнее выбирать нужный цвет. Представить его можно цилиндром:

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

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

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

Электроэнергия поступает через 4-пиновый разъем Molex компьютерного блока питания.

В него входят провода:

  1. Черные – «масса» (Gnd или COM).
  2. Желтый – напряжение +12 V.
  3. Красный – напряжение +5 V.

Действуют в таком порядке:

  1. Срезают разъем.
  2. Зачищают желтый провод и 1 черный, остальные изолируют.
  3. Соединяют пайкой жилы и контактные площадки ленты. Желтый провод подключают к «плюсу», черный – к «минусу».
  4. Изолируют соединение термоусадочной трубкой.

Чтобы не срезать разъем, можно приобрести ответную часть для него (штепсель) в составе переходника Molex-SATA. Он предназначен для питания более новых винчестеров с последовательной дата-шиной. Коннектор SATA отрезают, к освободившимся проводам подключают ленту.

Далее штепсель вставляют в разъем Molex. Максимальный ток для него – 20 А, но с учетом наличия прочих устройств (винчестера, DVD-дисковода и пр.) не рекомендуется подключать нагрузку более 5 А (лучше до 4 А).

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

Один его контакт соединяют с «минусом» ленты, 2 других – с красным (+5 V) и черным проводами разъема. Когда регулятор переведен в первое положение, на диоды подается разность потенциалов 12-5 = 7 V, и они горят вполсилы.

К свободному блоку питания от ПК можно подключить ленту на 24 В. Задействуется разъем для электроснабжения материнской платы (MB-20 или MB-24).

На один из его контактов подается напряжение -12 В. К нему подходит провод в голубой изоляции. В MB-20 он расположен под 12-м номером, в MB-24 – под 14-м. «Минус» ленты подсоединяют к этому контакту, «плюс» – к желтому проводу (+12 V). В результате разность потенциалов на диодах составит 24 В. Максимальный ток при подключении к разъему MB – 1 А.

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

На данном уроке мы научимся подключать светодиоды к Arduino,  используя макетную плату,  программировать включение и выключение светодиодов.Реализуем мини проект светофор. В данном проекте у нас будет подключено два светодиода, один зеленый, другой красный, они поочередно должны зажигаться через определенный интервал времени. Чтобы подключить светодиоды, их нужно установить на макетную плату. Длинная ножка  светодиода соответствует ”+” подключение в выбранный пин, короткая ножка светодиода  соответствует  “-” подключение к  GND .

Соединяем   плату  Arduino  с синей полоской макетной платы, теперь вся эта полоска  будет GND.Чтобы светодиод не сгорел, необходимо последовательно включать с сопротивлением 220 ом.  Все входы  макетной платы на одной вертикальная линии соединены между собой. Поэтому для подключения резистора к длинной ножке, вставляем один конец резистора на общую полоску длинной ножки светодиода, другой конец втыкаем в любую другую полоску макетной платы. Для того чтобы мы могли управлять яркостью светодиодов, мы должны их подключить к пинам с тильдой “~”. Это ШИМ порты платы ардуино. Если в проекте не надо управлять ярокстью светодиода, их можно подключить  к пинам без тильды.

1.В программе мы прописываем переменные, которые отвечают за пины:int RED_PIN = 10; // пин отвечает за красный светодиод
int GREEN_PIN = 11;// пин отвечает за зеленый светодиод
2.       В void setup () прописываем настройку пинов  на  OUTPUT:  pinMode (GREEN_PIN, OUTPUT);
  pinMode(RED_PIN, OUTPUT);

3.     Чтобы зажечь светодиод, в void loop() используются команда :
 analogWrite (НОМЕР ПИНА, ЯРКОСТЬ);
Яркость меняется в диапазоне от 0 до 255
4. С помощью функции delay () можно управлять длительностью команды, в нашем случае длительностью горения светодиода.  delay (1000) соответствует задержке на 1 Чтобы погасить светодиод, яркость,  опускаем до нуля.
5. Если используется цифровой пин (без тильды), чтобы включить светодиод, нужно прописать:

digitalWrite (НОМЕРПИНА, HIGH);
Чтобы погасить светодиод  используется
digitalWrite (НОМЕРПИНА, LOW);
Программа для проекта светофор на ардуино:int RED_PIN = 10;
int GREEN_PIN = 11;
void setup ()
{
  pinMode (GREEN_PIN, OUTPUT);
  pinMode(RED_PIN, OUTPUT);
}
void loop ()
{
  analogWrite(RED_PIN, 85);
  delay(250);
  analogWrite(RED_PIN, 0);
  delay(250);
  analogWrite(GREEN_PIN, 85);
  delay(250);
  analogWrite(GREEN_PIN, 0);
  delay(250);
}

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

Исходный код программы

Arduino

void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);

}
void loop() {
digitalWrite(2, LOW);
delay(500);

digitalWrite(2, HIGH);
delay(500);

digitalWrite(3, LOW);
delay(500);

digitalWrite(3, HIGH);
delay(500);
digitalWrite(4, LOW);
delay(500);

digitalWrite(4, HIGH);
delay(500);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

voidsetup(){

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

}

voidloop(){

digitalWrite(2,LOW);

delay(500);

digitalWrite(2,HIGH);

delay(500);

digitalWrite(3,LOW);

delay(500);

digitalWrite(3,HIGH);

delay(500);

digitalWrite(4,LOW);

delay(500);

digitalWrite(4,HIGH);

delay(500);

}

Ардуино для начинающих. Урок 5. Кнопки, ШИМ, функции

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

В этом уроке используются следующие детали:

Большая макетная плата на 1600 точек с 4 шинами питания:Купить
Набор резисторов из 100 штук на все случаи:Купить
Набор светодиодов из 100 штук:Купить
5 штук кнопок в удобной форме:Купить
Соединительные провода 120 штук:Купить

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

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

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

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

Это нужно для того, что бы мы на 8 контакте не ловили наводок. Попробуйте убрать этот резистор из схемы. Светодиод будет загораться при шевелении проводов или кнопки. Теперь давайте рассмотрим скетч:

В этом уроке, как и прошлом, в самом начале мы объявляем переменные со значениями пинов к которым у нас подключены кнопка и светодиод. Далее в функции setup() мы обозначаем какой пин используется как вход, а какой как выход. В функции loop() мы используем условный оператор if с оператором сравнения и проверяем приходит ли на пин 8 высокий сигнал. Если да то включаем светодиод, если нет то выключаем. Описание функций и операторов вы найдете в справочнике по языку программирования Arduino

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

В этом скетче мы добавили переменные для хранения состояния светодиода и кнопки. Так же мы создали новую функцию для подавления дребезга контактов debounse(). Код в цикле loop() тоже немного изменился. Теперь в условном операторе мы проверяем нажата ли кнопка и если нажата, то меняем состояние светодиода на противоположное. Потом меняем переменную с последним состоянием на текущее состояние кнопки и включаем или выключаем светодиод.

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

Теперь светодиод подключен к 11 пину ардуино, которой умеет делать ШИМ. И нам пришлось добавить токоограничивающий резистор на 220 Ом перед светодиодом, что бы его не спалить. Это необходимо потому, что светодиоды работают при напряжении 3.3 В, а пин ардуино отдает 5 В. Теперь посмотрим что нужно изменить в скетче:

В этом примере мы изменили значение переменной ledPin на 11. Так же добавили переменную для хранения уровня ШИМ ledLevel. При нажатии на кнопку будем увеличивать эту переменную. Функция debounce() осталась без изменений. В цикле мы теперь используем функцию analogWrite().

Готовим программное обеспечение

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

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

3.1 Скачиваем и устанавливаем ПО

Выбираем нужную версию, жмем “Just Download” и скачиваем:

После того как скачали ПО – запускам установку, открыв скачанный .EXE файл:

Дальше мы проходим все обычные шаги установки, как при установке любого другого приложения – соглашаемся с “лицензионным соглашением”, ставим галочки, выбираем папку для установки и жмем ОК:

3.2 Запускам ПО и включаем русский язык

После того как мы прошли процесс установки мы увидим на рабочем столе иконку нашей Arduino IDE:

Нажимаем на иконку и видим процесс загрузки программы:

В итоге мы увидим такое окно:

Включаем русский язык.

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

File → Preferences → Language

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

Виды транзисторных ключей

  • Биполярный;
  • Полевой;
  • Составной (сборка Дарлингтона).

При подаче высокого логического уровня (digitalWrite(12, HIGH);) через порт вывода  на базу транзистора через цепочку коллектор-эмиттер потечет опорное напряжение на нагрузку. Таким образом можно включать и отключать светодиод.

Аналогичным образом работает и полевой транзистор, но поскольку у него вместо «базы» сток, который управляется не током, а напряжением, ограничительный резистор в этой схеме необязателен.

Биполярный вид не позволяет регулировать мощные нагрузки. Ток через него ограничен на уровне 0,1-0,3А.

Полевые транзисторы работают с более мощными нагрузками с током до 2А. Для ещё более мощной нагрузки используют полевые транзисторы Mosfet с током до 9А и напряжением до 60В.

Вместо полевых можно использовать сборку Дарлингтона из биполярных транзисторов на микросхемах ULN2003, ULN2803.

Микросхема ULN2003 и принципиальная схема электронного коммутатора напряжения:

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

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

Инструкция по подключению RGB светодиода к Arduino

  • или иная совместимая плата; ;
  • 3 резистора по 220 Ом (вот отличный набор резисторов самых распространённых номиналов);
  • соединительные провода (рекомендую вот такой набор); (breadboard);
  • персональный компьютер со средой разработки Arduino IDE.

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

RGB светодиоды бывают двух типов: с общим анодом («плюсом») и общим катодом («минусом») . На рисунке приведены принципиальные схемы эти двух типов светодиодов. Длинная ножка светодиода – это всегда общий вывод питания. Отдельно расположен вывод красного светодиода ( R ), зелёный ( G ) и синий ( B ) располагаются по другую сторону от общего вывода, как показано на рисунке. В данной статье мы рассмотрим подключение RGB светодиода как с общим анодом, так и с общим катодом.

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

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

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

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

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

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

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

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

Перепишем классический скетч blink. Будем включать и отключать по очереди каждый из трёх цветов

Обратите внимание, что светодиод загорается, когда мы подаём низкий уровень (LOW) на соответствующий вывод Arduino

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 обычно помечены знаком тильда (волнистая линия), звёздочкой или обведены кружочками.

Включение светодиодов от блока питания

Речь пойдёт о блоках питания (БП), работающих от сети переменного тока 220 В. Но даже они могут сильно отличаться друг от друга выходными параметрами. Это могут быть:

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

Подключить светодиод можно к любому из них, дополнив схему нужными радиоэлементами. Чаще всего в качестве блока питания применяют стабилизированные ИПН на 5 В или 12 В. Данный тип БП подразумевает, что при возможных колебаниях напряжения сети, а также при изменении тока нагрузки в заданном диапазоне напряжение на выходе изменяться не будет. Это преимущество позволяет подключать к БП светодиоды, используя только резисторы. И именно такой принцип подключения реализован в схемах с индикаторными светодиодами.

светодиодных матриц

  • Iдрайвера – ток драйвера по паспорту, А;
  • ILED – номинальный ток светодиода, А.

В качестве источника питания можно использовать даже одну пальчиковую батарейку на 1,5 В. Но для этого придётся собрать небольшую электрическую схему, которая позволит повысить напряжение питания до нужного уровня. О том, как это сделать, можно узнать из статьи «Как подключить светодиод от батарейки на 1,5 В».

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

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

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

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

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

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

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

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

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

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

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

Таблица 1. Соответствие значений Y и результирующего напряжения

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

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

Баги и обратная связь

При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request’ов!

При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:

  • Версия библиотеки
  • Какой используется МК
  • Версия SDK (для ESP)
  • Версия Arduino IDE
  • Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
  • Какой код загружался, какая работа от него ожидалась и как он работает в реальности
  • В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код

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

Для подключения нескольких светодиодов к ардуино нужно просто подключить каждый из них к своему цифровому порту по той же схеме. Например, для создания проекта «Мигалка» можно взять два светодиода красного и синего цвета, подключив через сопротивление их положительные (длинные ножки)контакты к 13 и 12 пину соответственно. Короткие ножки подключаются к минусу – земле.

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

Мы уже знаем, что на плате нас дожидаются три разъема с таким обозначением («GND»), можно подключать к любому. Если разъемов питания будет не хватать, у нас есть три варианта.

  • Сформировать нужные уровни питания на свободных пинах. Например, подав в скетче низкий уровень сигнала на пин 5, мы получим на этом разъеме необходимый нам «минус».
  • Использовать макетную плату, на которой есть отличные варианты для раздачи «плюсов и минусов» через общие линии питания (смотрите статью на нашем сайте).
  • Использовать специальные платы расширения Sensor Shield, у которых для каждого пина отдельно выводятся пины с питанием и землей.

Точно так же вы сможете подключить и следующие светодиоды, приступив к проектам светофор или светодиодная лента.

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

Устройство и сферы применения

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

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

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

Таблица длины волн светодиодов smd 5050, различного свечения

Разнообразие сфер применения многоцветных светодиодных источников света определяет основные виды внешнего оформления RGB–светодиодов: изделия небольшой мощности выпускаются в стандартных круглых корпусах со сферической линзой и выводами под обычную пайку; маломощные RGB–светодиоды в SMD-корпусах поверхностного монтажа широко применяются в светодиодных лентах или полноцветных светодиодных экранах большой площади; в корпусах типа Emitter выпускают мощные RGB–источники света с независимым управление каждым светодиодным кристаллом; сверх яркие светодиоды в корпусах.

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

  • В схеме с общим катодом для управления используется три независимых вывода анода, а катодные выводы LED-кристаллов соединены между собой;
  • Распиновка с общим анодом управляется отрицательными импульсами на катодные выводы, а вместе соединены уже анодные электроды светодиодных кристаллов;
  • Независимая схема соединения имеет шесть выводов по числу LED кристаллов, соединений внутри корпуса не производится.

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

Три светодиода и их размеры

Простейший способ подключения и управления режимами работы RGB–светодиодов реализуется с помощью стандартных микроконтроллеров Arduino

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

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);}

Как устроен 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-разработке.

Поделитесь в социальных сетях:FacebookX
Напишите комментарий