Подключение нескольких светодиодов
Для подключения нескольких светодиодов к ардуино нужно просто подключить каждый из них к своему цифровому порту по той же схеме. Например, для создания проекта «Мигалка» можно взять два светодиода красного и синего цвета, подключив через сопротивление их положительные (длинные ножки)контакты к 13 и 12 пину соответственно. Короткие ножки подключаются к минусу – земле.
Схема подключения светодиодов проекта Мигалка
Мы уже знаем, что на плате нас дожидаются три разъема с таким обозначением («GND»), можно подключать к любому. Если разъемов питания будет не хватать, у нас есть три варианта.
- Сформировать нужные уровни питания на свободных пинах. Например, подав в скетче низкий уровень сигнала на пин 5, мы получим на этом разъеме необходимый нам «минус».
- Использовать макетную плату, на которой есть отличные варианты для раздачи «плюсов и минусов» через общие линии питания (смотрите статью на нашем сайте).
- Использовать специальные платы расширения Sensor Shield, у которых для каждого пина отдельно выводятся пины с питанием и землей.
Точно так же вы сможете подключить и следующие светодиоды, приступив к проектам светофор или светодиодная лента.
Имейте в виду, что подключение более 3 светодиодов создает достаточно большую нагрузку на модуль питания платы Arduino. Поэтому не рекомендуется устраивать длительное одновременное включение множества светодиодов.
Обработка битовой матрицы состояния светодиода
Уменьшаем время срабатывания события до 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() использует прерывание по первому таймеру
Подключение кнопки в режиме INPUT_PULLUP
В указанной выше схеме мы использовали резистор, называемый подтягивающим, для формирования определенного уровня сигнала на цифровом порту. Но есть другой способ подключить кнопку без резистора, используя внутренне сопротивление платы ардуино. В блоке setup мы должны всего лишь определить тип пина, к которому подключим кнопку, как INPUT_PULLUP.
Альтернативным вариантом будет выбрать режим пина как OUTPUT и установить на данный порт высокий уровень сигнала. Встроенный подтягивающий резистор подключиться автоматически.
И все. Можно собрать вот такую сложную схему и работать с кнопкой в скетче.
Функции
В данной статье мы будем использовать следующие связанные с цифровыми сигналами функции Arduino:
- Поскольку цифровые I/O выводы Arduino могут использоваться в качестве и входа, и выхода, вы должны сначала настроить выводы, которые вы собираетесь использовать для цифрового ввода/вывода, с помощью данной функции. – это номер вывода, который вы хотите настроить. Режим, , может принимать одно из трех значений: , или . Когда устанавливается в значение , к выводу подключается внутренний подтягивающий резистор 20 кОм, чтобы привести уровень на выводе к значению HIGH, если к нему ничего не подключено.
- Данная функция записывает цифровое значение в вывод. задает, в какой вывод на плате Arduino будет записано цифровое значение, а – это цифровое значение, в которое будет установлен вывод. может принимать только значения и .
- Данная функция считывает цифровое значение из вывода. – это номер цифрового I/O вывода, который вы собираетесь прочитать. Данная функция возвращает одной из двух значений: или
Управление яркостью светодиода
Мы можем не только включать или выключать свет, но и управлять его яркостью. Для этого используется специальная технология с красивым названием ШИМ. Подключившись к пинам контроллера, поддерживающим ШИМ, можно регулировать интенсивность свечения с помощью функции analogWrite(). Мы должны указывать ей в качестве параметров номер пина и значение из диапазона от 0 до 255. Чем больше число, тем ярче будет светить лампочка. Например, для пина 3 пример будет выглядеть так: analogWrite(3, 255) или analogWrite(3, 100). В первом случае яркость будет максимально возможная, во втором – гораздо меньше.
Нужно помнить, что далеко не все пины контроллера поддерживают ШИМ. У Arduino Uno, Nano, основанных на ATMEGA328, шим поддерживают пины 3, 5, 6, 9, 10, 11. У платы Mega таких пинов гораздо больше.
Первый опыт работы на Arduino
Что такое светодиод?
Простейшей задачей для новичков работы с Arduino можно назвать подключение светодиода к 5V.
Светодиод – это полупроводниковый прибор, способный излучать свет за счет того, что через него проходит электрический ток в прямом направлении от анода к катоду. Светодиоды можно разделить по цветам (желтый, зеленый, голубой, красный), а также по номинальному количеству потребляемого тока. Широко
распространены модели с током потребления 10 миллиампер (мА) и 20 мА.
Как подключить светодиод?
Первым делом вставляем светодиод в макетную плату. Затем подключаем к катоду ( короткая ножка светодиода) последовательно резистор. Далее первый провод одним концом подключаем к аноду (длинная ножка светодиода) , а другим концом к 5 пину на Arduino. Второй провод подключаем к резистору и к GND на Arduino
(смотрите рисунок).
Код для примера
voidsetup() { pinMode(5,OUTPUT); } voidloop() { digitalWrite(5,HIGH); delay(1000); digitalWrite(5,LOW); delay(1000); }
Как подключить светодиод к Arduino Uno / Nano
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- несколько светодиодов и резисторов 220 Ом;
- провода «папа-папа».
Для надёжной сборки устройств создаются печатные платы, на что уходит много времени. Для быстрой сборки электрических схем без пайки используют макетную плату (breadboard). Под слоем пластика на макетной плате находятся медные пластины-рельсы (дорожки), выложенные по простому принципу (смотри фото). Дорожки служат для создания контакта между радиоэлементами и проводами.
Быстрая сборка схем на макетной плате
Одну и ту же схему можно собрать разными способами Длинная ножка светодиодов — анод, она всегда подключается к плюсу
Для чего светодиод включают к Ардуино с резистором? Дело в том, что в светодиоде стоит кристалл который боится больших токов. Резистор призван ограничивать силу тока (Амперы), чтобы светодиод не перегорел. Большой ток губителен для светодиода, меньший ток (благодаря подключению резистора) обеспечивает длительную работу. Чтобы подключить светодиод к Ардуино без резистора, используйте 13 порт.
Кабель с разъемами USB-A и USB-B для подключения принтера
Если у вас не установлена программа Arduino IDE, то скачайте последнюю версию на официальном сайте www.arduino.cc. С помощью USB кабеля производится запись программ, также плата получает питание от компьютера. Если требуется автономная работа электронного устройства, то плату можно запитать от батарейки или блока питания на 7-12 В. При подаче питания на плате загорится светодиод индикации.
Убедитесь, что программа определила ваш тип платы Ардуино
Шаг 1. Зайдите в основном меню «Инструменты -> Плата». Если плата Arduino определилась неправильно, то выберите необходимый тип, например, Arduino Uno.
Шаг 2. Установите порт (кроме COM1) подключения в меню «Инструменты -> Порт», так как при подключении Ардуино к ПК создается виртуальный COM-порт.
Убедитесь, что программа определила порт подключения Ардуино
Скетч для включения светодиода от Ардуино
void setup() { pinMode(13, OUTPUT); // объявляем пин 13 как выход } void loop() { digitalWrite(13, HIGH); // зажигаем светодиод delay(1000); // ждем 1 секунду digitalWrite(13, LOW); // выключаем светодиод delay(1000); // ждем 1 секунду }
Подключение светодиодов к другим портам производится по схеме, размещенной выше (подключение резистора к светодиодам также необходимо). А в скетче требуется изменить номера портов, к которым подключены светодиоды. При этом сколько вы используете светодиодов в схеме, столько и раз следует прописать команды .
Скопируйте код и вставьте скетч в программу Arduino IDE
Перед загрузкой программы в микроконтроллер можно выполнить проверку (компиляцию), на наличие ошибок в коде. В случае обнаружения ошибки — будет получено сообщение в нижнем окошке Arduino IDE. В любом случае, при загрузке скетча, сначала происходит проверка и компиляция программы. При компиляции происходит перевод программы в двоичный код, понятный микроконтроллеру.
Перед загрузкой программы в микроконтроллер, потребуется сохранить скетч на компьютере. Нажмите «Сохранить» в появившемся окне и начнется загрузка.
Перед загрузкой программы, потребуется сохранить скетч
Пояснения к коду:
- процедура выполняется при запуске микроконтроллера один раз. Используется для конфигурации портов микроконтроллера и других настроек;
- после выполнения запускается процедура , которая выполняется в бесконечном цикле. Это мы используем, чтобы светодиод мигал постоянно;
- процедуры и должны присутствовать в любой программе (скетче), даже если вам не нужно ничего выполнять в них — пусть они будут пустые, просто не пишите ничего между фигурными скобками.
Функционал платформы
Что такое микроконтроллер?
Микроконтроллер представляет собой микросхему, которая используется для управления электронными устройствами. Типичный микроконтроллер сочетает на одном кристалле функции процессора и периферийных устройств, содержит ОЗУ и (или) ПЗУ. По сути, это однокристальный компьютер, способный выполнять относительно простые задачи. Не стоит путать с микропроцессором, так как он не содержит в себе периферийных устройств.
Под периферийными устройствами обычно понимают порты входа/выхода, ШИМ-модуляторы, таймеры, радиочастотные приёмники и так далее.
Что такое Arduino?
Arduino – эффективная аппаратно-программная платформа для проектирования и создания новых устройств, состоящая из самой платы и программного обеспечения.
Arduino применяется для создания электронных устройств с возможностью приема сигналов от различных цифровых и аналоговых датчиков, которые могут быть подключены к нему, и управления различными исполнительными устройствами. Проекты устройств, основанные на Arduino, могут работать самостоятельно или взаимодействовать с программным обеспечением на компьютере.
Arduino Uno – есть эталонная модель платформы типа Arduino.Существуют и другие модели, такие как Arduino Nano и Arduino Mega.
Его состав следующий:
- количество цифровых входов и выходов составляет 14 (а шесть из них имеют возможность использовать как выходы ШИМ; для ШИМ используются выводы за номерами 3,5, 6, 9,10,11).
- число аналоговых входов составляет шесть (A0 – A5).
- 16 МГц – кварцевый резонатор.
- имеется разъём для питания.
- есть разъём, предназначенный для ICSP-программирования внутри самой схемы.
- присутствует кнопка для сброса (вывод Reset).
Как программировать Arduino?
Микроконтроллер Arduino программируется на специальном языке программирования, основанном на C/C ++. Язык программирования Arduino является разновидностью C++ и называется Wiring, другими словами, отдельного языка программирования для Arduino не существует.
C++ – компилируемый, статически типизированный язык программирования общего назначения. Код на таком языке состоит из отдельных блоков, называемых методами и функциями.
В программах для Arduino существуют две обязательные функции и . Их присутствие обязательно в любой программе на C++ для Arduino. Они могут ничего и не делать, но должны быть написаны. Так как любая программа состоит из отдельных блоков, то начало блока в C/C++ обозначается левой фигурной скобкой { , а конец-правой фигурной скобкой } .
Пример:
voidsetup() { pinMode(3,OUTPUT); } voidloop() { digitalWrite(3,HIGH); }
Ardublockly – это графический язык программирования для Arduino, предназначенный для новичков. Он прост в использовании.
Управление, подключение RGB светодиодов
Для управления RGB светодиодами необходимо установить нужное значение параметров. На выходы подаются прямоугольные импульсы определенной величины, влияющие на величину среднего тока и средней яркости.
Если импульсы будут маленькие, то светодиоды начнут мигать. Для постоянного свечения требуется частота 60-70 Гц ( старые модели ), в новых типах не менее 100 Гц.
Простейшая реализация управления RGB светодиодов требует ШИМ. Главное — правильная реализация программной части. На первый взгляд это сложно. Но только на первый взгляд… В действительности — это не тяжелее, чем подключать обычные диоды.
Что такое Ардуино Уно и Ардуино Нано
Основой платы Ардуино Уно является микроконтроллер ATmega328. На ней также установлены дополнительные элементы:
- кварцевый резонатор;
- кнопка сброса;
- разъем USB;
- интегральный стабилизатор напряжения;
- разъем питания;
- несколько светодиодов для индикации режимов;
- микросхема связи для USB-канала;
- разъем для внутрисхемного программирования;
- еще несколько активных и пассивных элементов.
Все это позволяет сделать первые шаги, не пользуясь паяльником, и избежать этапа изготовления печатной платы. Запитывается блок от внешнего источника напряжения 7..12 В или через USB-разъем. Через него же модуль подключается к ПК для загрузки скетча. На плате имеется источник напряжения 3,3 В для питания внешних устройств. Для работы доступно 6 аналоговых входов, 14 цифровых выводов общего назначения. Нагрузочная способность цифрового вывода при питании от 5 В составляет 40 мА. Это означает, что к нему непосредственно можно подключить светодиод через ограничительный резистор.
Arduino Uno.
Плата Ардуино Нано полностью совместима с Уно, но меньше размером и имеет некоторые отличия и упрощения, указанные в таблице.
Плата | Контроллер | Разъем для внешнего питания | Микросхема для связи по USB | Разъем USB |
---|---|---|---|---|
Arduino Uno | ATmega328 | Есть | ATmega8U2 | USB A-B |
Arduino Nano | ATmega328 | Нет | FT232RL | micro USB |
Arduino Nano.
Различия не принципиальны и для темы обзора значения не имеют.
Необходимые узлы
Для того, чтобы реализовать наш небольшой проект, нам понадобятся:
1 RGB светодиод 10 мм
3 резистора на 270 Ω (красная, фиолетовая, коричневая полоски). Вы можете использовать резистор с сопротивлением до 1 кОм, но не забывайте, что с повышением сопротивления, светодиод начинает светить не так ярко.
Шесть цифр номера соответствуют трем парам номеров; первая пара – красная составляющая цвета, следующие две цифры – зеленая составляющая, а последняя пара – синяя составляющая. То есть, красному цвету соответствует выражение #FF0000, так как это будет максимальная яркость красного светодиода (FF – это 255 в шестнадцатеричной системе), а красная и синяя компоненты равны 0.
Попробуйте зажечь светодиод, используя, например, оттенок индиго: #4B0082.
Красная, зеленая и синяя компоненты цвета индиго – это 4B, 00 и 82 соответственно. Мы можем использовать их в пределах функции “setColor” с помощью следующей строки кода:
setColor(0x4B, 0x0, 0x82); // индиго
Для трех компонент мы используем запись, в которой перед каждой из них ставится символ “0x” в начале.
Когда будете играться с разными оттенками RGB светодиода, не забывайте после использования каждого из них устанавливать задержку ‘delay’.
Казалось бы, что может быть проще, чем мигание светодиода?
На первый взгляд, это мигание светодиодом является бесполезным и никакой практической пользы априори принести не может. Однако начнем эту статью именно с разъяснения этого вопроса. Например, вы пишете код для какого-либо устройства, но у его микроконтроллера недостаточно требуемых портов ввода и вывода. В целях экономии вы приобрели самую дешевую плату, или же требуется эргономичность устройства. Вы не стали устанавливать дисплей для сигнализирования успешного выполнения какой либо программы, передачи данных о режиме работы или мониторинга каких либо показаний. Но получать какую либо информация о том, что программа выполнилась успешно или произошла ошибка просто необходимо. Для подобных целей можно использовать светодиод в качестве показателя какого-то состояния.
В данной статье рассмотрим множество способов и вариаций программы, выполняющей мигание диодом.
В целом, программа мигания светодиодом является одной из первых, которую осваивают при изучении Ардуино. Многие контроллеры уже имеют в своей памяти простейшую основу кода мигания светодиода с завода.
то же самое, но с использованием пинов:
Также, данную программу можно написать с использованием флагов, чем мы упростим ее:
Мигание светодиодом с использованием функции digitalRead. Подадим любое значение на пин, а затем прочитаем его:
Команду “мигать” светодиоду можно дать без использования встроенных функций библиотеки Arduino:
В следующей программе просим светодиод мигать при помощи счетчика:
Прицепим тон на 2 и 5 пин, затем подключим внешнее аппаратное прерывание и создадим счетчик:
Воспользуемся функцией Assembler Jump(asm volatile (“jmp 0x0000”)) для возврата в начало команды без сбрасывания регистров(выходных данных):
Подсоединяем к любом пинам тон, затем после задержки читаем состояние пина:
От автора: Советую остановить свое изучение данной темы на этом моменте, поскольку все, что идёт далее-нужно скорее всего не радиолюбителям, а тем, кто планирует создавать крупные системы типа автосигнализации или RGB подсветки. Дальнейшие действия очень сложны для понимания и требуют очень много времени. К тому же, мощность Ардуино ограничена, возможны различные ошибки из-за недостатка памяти.
Сколько светодиодных ламп можно использовать на плате Arduino?
Как мы упоминали ранее, из многие проекты могут быть выполнены с использованием Arduino . Однако, в зависимости от типа используемой пластины, могут выполняться разные проекты. Когда дело доходит до подключения светодиодных фонарей к пластине, вы должны знать, что вы можете подключить столько, сколько хотите .
Однако у каждого типа пластин есть определенный предел , поэтому в зависимости от этого будет определяться равномерная работа огней. Итак, если вы собираетесь делать проект, который предполагает интеграцию светильников этого типа, вы должны учитывать вместимость плиты.
Поэтому мы рекомендуем вам просмотреть:
- Модель пластины, которая ты используешь.
- Максимальная вместимость ou recommandée выбранной вами модели пластины.
- Потребление каждого светодиод.
Таким образом, у вас будет ссылка на количество светодиодов, которые вы можете подключить, не влияя на производительность карту или повлиять на освещение в целом.
Устройство и сферы применения
Конструктивно RGB–светодиоды представляют собой три светодиодных кристалла с одной оптической линзой, расположенные в одном корпусе. Управление цветом происходит с помощью подачи электрических сигналов на выводы каждого светодиодного кристалла, а сочетание излучений всех трех светодиодов позволяет регулировать итоговый цвет. Для примера, ниже представлен самый популярный RGB–светодиод SMD 5050.
Светодиод RGB – это полноцветный светодиод, смешивая три цвета в разной пропорции можно отобразить любой цвет. К примеру, если зажечь все три цвета на полную мощность, получится свечение белого цвета.
Сферы применения RGB светодиодов напрямую связаны с развитием рынка рекламы и развлекательных мероприятий. Также готовые RGB–светильники и ленты применяются в области светового оформления архитектурных и дизайнерских решений — ночная подсветка зданий или фонтанов, интерьерный свет, индикаторный системы автомобилей и т.д.
Таблица длины волн светодиодов smd 5050, различного свечения
Разнообразие сфер применения многоцветных светодиодных источников света определяет основные виды внешнего оформления RGB–светодиодов: изделия небольшой мощности выпускаются в стандартных круглых корпусах со сферической линзой и выводами под обычную пайку; маломощные RGB–светодиоды в SMD-корпусах поверхностного монтажа широко применяются в светодиодных лентах или полноцветных светодиодных экранах большой площади; в корпусах типа Emitter выпускают мощные RGB–источники света с независимым управление каждым светодиодным кристаллом; сверх яркие светодиоды в корпусах.
Для упрощения систем управления светом в корпуса некоторых серий многоцветных LED–источников света вмонтированы управляющие микросхемы. Схемы расположения выводов (распиновка) Несколько стандартных схем управления определяют структуру внешних выводов RGB–светодиодов и их соединение внутри корпуса. Существует три основных схемы распиновки, которые соблюдаются на большинстве выпускаемых изделий:
- В схеме с общим катодом для управления используется три независимых вывода анода, а катодные выводы LED-кристаллов соединены между собой;
- Распиновка с общим анодом управляется отрицательными импульсами на катодные выводы, а вместе соединены уже анодные электроды светодиодных кристаллов;
- Независимая схема соединения имеет шесть выводов по числу LED кристаллов, соединений внутри корпуса не производится.
Единого стандарта на распиновку не существует, конкретный тип расположения внешних выводов применяют в зависимости от поставленных задач. При отсутствии документов на светодиодное изделие тип внешних выводов легко определить с помощью мультиметра. В режиме прозвонки светодиод будет светиться (мощные светодиоды очень слабо), а мультиметр издавать звук соединения, если красный щуп мультиметра подсоединен к аноду светодиодного кристалла, а черный к его катоду. В случае обратного подключения никаких видимых и слышимых эффектов просто не будет.
Три светодиода и их размеры
Простейший способ подключения и управления режимами работы RGB–светодиодов реализуется с помощью стандартных микроконтроллеров Arduino
Общий вывод подключается к единой шине микроконтроллера, а управляющие сигналы подаются на выводы LED–кристаллов через ограничительные резисторы.Управление режимами свечения светодиодных кристаллов происходит с помощью широтной-импульсной модуляции, где скважность импульсов определяет силу света. Программирование ШИМ–модулятора определяет итоговый цвет всего прибора или циклические режимы работы каждого цвета
Последовательное включение светодиодов на Ардуино
Что такое Ардуиноfor
byte i; // задаем переменную для цифровых выходов byte LedMax = 13; // максимальное количество выходов (диодов) void setup() { // задаем пины со 2 по 13, как выходы (OUTPUT) for(i=2; i<LedMax; i++) { pinMode(i, OUTPUT); } }
Вместо прописывания в скетче всех пинов с 2 по 13, как выходы, мы воспользовались одним циклом . Сразу отметим, что использование всех выходов на Ардуино для последовательного включения светодиодов или подключения светодиодной шкалы не рационально. На практике для этого используют сдвиговый регистр 74hc165 или, еще более простой вариант драйвер светодиодов М5450В7 для микроконтроллера Ардуино.
Library Installation
Controlling WS2812B LEDs “from scratch” is quite a challenge, so we’ll be making use of Adafruit’s excellent NeoPixel library so that we can focus on the fun and interesting bits rather than messing around with the strange protocol.
To install the library, navigate to Sketch > Include Library > Manage Libraries… Wait for the Library Manager to download the libraries index and update the list of installed libraries.
Filter your search by entering ‘neopixel‘. Look for Adafruit NeoPixel by Adafruit. Click on that entry and then choose Install.
Adafruit NeoPixel is not the only library available; there are others, such as the FastLED library, which has more advanced features and supports other LED chipsets.
Заключение
Подключить светодиод к своей схеме на Ардуино – несложное занятие. Просто соединяем ножки в правильной последовательности и не забываем о токоограничивающем резисторе. Главное преимущество Ардуино в таких схемах – возможность программного управления светодиодом. Мы просто пишем в программе нужный алгоритм, загружаем его в контроллер и плата включает и выключает нужные нам пины.
Можно подключать несколько светодиодов, но следить, чтобы не выйти в итоге за пределы ограничений по току. Можно не просто включать или выключать свет, но и управлять его яркостью. Для этого используем пины, поддерживающие ШИМ и функцию analogWrite.
Более подробно о подключении и управлении светодиодами на ардуино вы сможете узнать в статьях с описанием таких проектов как мигалка, маячок, светофор.
Это эксперимент по работе с кнопкой. Мы будем включать светодиод по нажатии кнопки и выключать по отпускании кнопки. Рассмотрим понятие дребезга и программные методы его устранения.
Необходимые компоненты:
В данном эксперименте мы будем использовать контакт D2 Arduino в качестве входа. Это позволяет подключить к нему кнопку для взаимодействия с проектом в режиме реального времени. При использовании Arduino в качестве входов используют pull-up- и pulldown-резисторы, чтобы вход Arduino не находился в «подвешенном» состоянии (в этом состоянии он будет собирать внешние наводки и принимать произвольные значения), а имел заранее известное состояние (0 или 1). Резисторы pull-up подтягивают вход к питанию +5 В, pull-down-резисторы подтягивают вход к GND. Кроме этого, pull-up- и pull-down-резисторы гарантируют, что кнопка не создаст короткого замыкания между +5 В и землей при нажатии. В нашем эксперименте для подключения кнопки мы будем использовать pulldown-резистор. Схема подключения представлена на рис. 2.1.
Когда кнопка отключена, вход D2 будет подтянут к «земле» через резистор номиналом 10 кОм, который будет ограничивать поток тока, и на входном контакте будет установлено значение напряжения LOW. При нажатии на кнопку входной контакт напрямую связан с 5 В. Большая часть тока будет протекать по пути наименьшего сопротивления через замкнутую кнопку, и на входе генерируется уровень HIGH. При нажатии на кнопку включаем светодиод, при отпускании – гасим. Код данного скетча приведен в листинге 2.1.
Порядок подключения:
1. Длинную ножку светодиода (анод) подключаем к цифровому выводу D10 Arduino, другую (катод) – через резистор 220 Ом к выводу GND (см. рис. 2.1). 2. Один вход кнопки подключаем к +5 В, другой – через резистор 10 кОм к GND, выход кнопки подключаем к входу D2 Arduino (см. рис. 2.1). 3. Загружаем в плату Arduino скетч из листинга 2.1. 4. При нажатии на кнопку светодиод должен гореть, при отпускании – затухнуть.
Усложним задачу – будем переключать состояние светодиода (включен/выключен) при каждом нажатии кнопки. Загрузим на плату Arduino скетч из листинга 2.2.
При нажатии кнопки светодиод должен изменять свое состояние. Но это будет происходить не всегда. Виной тому – дребезг кнопок. Кнопки представляют из себя механические устройства с системой пружинного контакта. Когда вы нажимаете на кнопку вниз, сигнал не просто меняется от низкого до высокого, он в течение нескольких миллисекунд меняет значение от одного до другого, прежде чем контакты плотно соприкоснутся и установится значение HIGH. Микроконтроллер зафиксирует все эти нажатия, потому что дребезг неотличим от настоящего нажатия на кнопку. Устранить влияние дребезга можно программно. Алгоритм следующий:
1. Cохраняем предыдущее состояние кнопки и текущее состояние кнопки (при инициализации LOW). 2. Cчитываем текущее состояние кнопки. 3. Если текущее состояние кнопки отличается от предыдущего состояния кнопки, ждем 5 мс, потому что кнопка, возможно, изменила состояние. 4. После 5 мс считываем состояние кнопки и используем его в качестве текущего состояния кнопки. 5. Если предыдущее состояние кнопки было LOW, а текущее состояние кнопки HIGH, переключаем состояние светодиода. 6. Устанавливаем предыдущее состояние кнопки для текущего состояния кнопки. 7. Возврат к шагу 2. Добавляем к нашему скетчу подпрограмму устранения дребезга. Получаем код, показанный в листинге 2.3.
Загружаем скетч в плату Arduino и проверяем работу. Теперь все работает нормально, каждое нажатие кнопки приводит к изменению состояния светодиода.