Содержание
Как подключить кнопку и светодиод к Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- светодиод;
- 2 резистора 220 Ом;
- 2 тактовых кнопки;
- провода «папа-папа».
Схема для включения/выключения светодиода кнопкой от Ардуино
Для переключения светодиода кнопкой Ардуино соберите схему, как на изображении выше
Обратите внимание, что тактовая кнопка на макетной плате подключена к микроконтроллеру без подтягивающего резистора. Пин 2 подключен к 5V через встроенный резистор, поэтому при отпущенной кнопке на входе пине 2 будет высокий уровень сигнала, а при нажатии кнопки будет низкий уровень
Скетч. Управление светодиодом Ардуино через кнопку
boolean buttonWasUp = true; boolean ledEnabled = false; void setup() { pinMode(10, OUTPUT); pinMode(2, INPUT_PULLUP); } void loop() { // узнаем, отпущена ли кнопка сейчас boolean buttonIsUp = digitalRead(2); // если кнопка была отпущена и не отпущена сейчас if (buttonWasUp && !buttonIsUp) { // исключаем дребезг контактов тактовой кнопки delay(10); // и считываем сигнал с кнопки снова buttonIsUp = digitalRead(2); // если кнопка нажата, то переворачиваем сигнал светодиода if (!buttonIsUp) { ledEnabled = !ledEnabled; digitalWrite(10, ledEnabled); } } // запоминаем состояние кнопки для новой итерации buttonWasUp = buttonIsUp; }
Пояснения к коду:
- — это глобальная переменная Ардуино, которая может принимать всего два значения – true (истина) и false (ложь);
- задержка в программе позволяет избежать «дребезг контактов» кнопки и исключить ложное срабатывание.
Схема управления светодиодом двумя кнопками от Ардуино
Скетч. Управление двумя кнопками одним светодиодом
boolean button1WasUp = true; boolean button2WasUp = true; void setup() { pinMode(10, OUTPUT); digitalWrite(10, LOW); pinMode(2, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); } void loop() { // узнаем, отпущены ли две кнопки сейчас boolean button1IsUp = digitalRead(2); boolean button2IsUp = digitalRead(4); // если кнопка 1 была отпущена и не отпущена if (button1WasUp && !button1IsUp) { delay(10); // повторно считываем сигнал с кнопки 1 button1IsUp = digitalRead(2); if (!button1IsUp) { digitalWrite(10, LOW); } } // если кнопка 2 была отпущена и не отпущена if (button2WasUp && !button2IsUp) { delay(10); // повторно считываем сигнал с кнопки 2 button2IsUp = digitalRead(4); if (!button2IsUp) { digitalWrite(10, HIGH); } } // запоминаем состояние двух кнопок ардуино button1WasUp = button1IsUp; button2WasUp = button2IsUp; }
Пояснения к коду:
- данный пример программы позволяет включать светодиод нажатием одной кнопки и выключать светодиод нажатием второй кнопки;
- задержка Ардуино позволяет избежать «дребезг контактов» кнопки и исключить возможность ложного срабатывания.
Следующий пример тоже потребует для подключения к Ардуино две кнопки, два светодиода, как на предыдущей схеме. Но вместо простого включения/выключения диода, мы будем увеличивать и уменьшать яркость светодиода с помощью ШИМ сигнала микроконтроллера. Загрузите пример программы для «Светодиод и кнопка Ардуино ШИМ», чтобы получить понятие о принципе работы кнопки с Arduino Uno.
Скетч. Управление яркостью светодиода кнопкой Ардуино
#define PLUS_BUTTON 2 #define MINUS_BUTTON 4 int brightness = 100; boolean plusUp = true; boolean minusUp = true; void setup() { pinMode(10, OUTPUT); pinMode(PLUS_BUTTON, INPUT_PULLUP); pinMode(MINUS_BUTTON, INPUT_PULLUP); } void loop() { analogWrite(10, brightness); // реагируем на нажатия кнопки с помощью функции handleClick plusUp = handleClick(PLUS_BUTTON, plusUp, +20); minusUp = handleClick(MINUS_BUTTON, minusUp, -20); } boolean handleClick(int buttonPin, boolean wasUp, int delta) { boolean isUp = digitalRead(buttonPin); if (wasUp && !isUp) { delay(10); isUp = digitalRead(buttonPin); // если был клик кнопки, меняем яркость в пределах от 0 до 255 if (!isUp) brightness = constrain(brightness + delta, 0, 255); } return isUp; }
Пояснения к коду:
- для подключения светодиода следует использовать пин с ШИМ модуляцией;
- начальное значение яркости равен ста, в программе прирост и уменьшение яркости (20) можно поменять по своему усмотрению.
Заключение. Мы рассмотрели сразу несколько примеров для управления светодиодом Ардуино с помощью кнопки. Вы узнали, что светодиодом можно управлять с помощью одной кнопки, или производить включение/выключение двумя кнопками. Кроме того, можно менять яркость с помощью кнопки и ШИМ сигнала. Все рассмотренные примеры можно использовать в различных проектах на Arduino для начинающих.
Почему стоит воздержаться от использования функции delay() в Arduino
В документации на Arduino указано, что в этой платформе существует две функции для организации задержек — delay() и delayMicroseconds(). По принципу действия обе эти функции абсолютно идентичны, только в функции delay() значение задержки указывается в миллисекундах, а в функции delayMicroseconds() – в микросекундах.
Обе эти функции останавливают работу платы Arduino на заданное время. К примеру, если мы сделаем задержку на 10 секунд, то плата Arduino не сможет выполнить никакую другую команду до тех пор, пока эти 10 секунд не истекут. Естественно, подобный подход сильно мешает рациональному использованию вычислительных ресурсов микроконтроллера.
Рассмотрим, к примеру, две кнопки. Допустим, нам нужно переключать состояние двух светодиодов с помощью этих двух кнопок. Например, при нажатии первой кнопки первый светодиод должен включаться на 2 секунды, а при нажатии второй кнопки второй светодиод должен включаться на 4 секунды. Если в данном случае мы будем использовать функцию delay(), то при нажатии первой кнопки программа остановится на 2 секунды и даже если в это время нажать вторую кнопку, то программа просто не сможет обработать нажатие этой кнопки.
В официальной документации на Arduino вы можете прочитать замечания и предупреждения по использованию функции delay(). Если вы найдете в себе силы их прочитать, то вы окончательно убедитесь в том, что использование функции delay() – далеко не лучший способ организации задержек в программах для Arduino.
Шаг 2: Простой код с блоками
В эмуляторе Ардуино Tinkercad вы можете легко программировать свои проекты с помощью блоков. Давайте рассмотрим простой код, управляющий миганием, открыв редактор кода (кнопка с надписью «Код»). Вы можете изменить размер редактора кода, щелкнув и перетащив левый край окна. Смотрите анимированный рисунок выше.
Код начинается с двух серых блоков комментариев, которые являются просто заметками для людей. Первый синий выходной блок устанавливает встроенный светодиод как HIGH, который является способом Arduino для описания «включено». Эта выходная команда активирует сигнал 5 В на все, что связано с указанным выводом. Далее — желтый командный блок, который ждет одну секунду, достаточно просто. Таким образом, программа приостановится, пока светодиод горит в течение одной секунды. Затем после следующего комментария идет синий выходной блок, который установит светодиод обратно в LOW или «выключен», за которым следует вторая пауза в секунду.
Попробуйте настроить этот код, изменив время ожидания и нажав «Начать симуляцию». Вы можете даже добавить дополнительные выходы и блоки паузы, чтобы создать более длинные мигающие варианты работы.
Вы заметили, что на плате мигает маленький светодиод? Этот встроенный светодиод также подключен к контакту 13 и предназначен для использования в целях тестирования без необходимости подключения каких-либо внешних компонентов. У него даже есть свой собственный крошечный резистор, припаянный непосредственно к поверхности платы.
Готовы создать свой собственный проект? Выберите Arduino, которую вы добавили на рабочую область (или выберите её в раскрывающемся меню в редакторе кода), и начните перетаскивание блоков кода, чтобы создать свою собственную программу мигающего светодиода.
Контроллер для управление RGB
Для разгрузки выводов МК применяются специальные контроллеры WS2801 (5 вольт) или WS2812B (12 вольт).
С применением отдельного контроллера нет необходимости занимать несколько выходов MK, можно ограничиться лишь одним сигнальным выводом. МК подает сигнал на вход «Data» управляющего контроллера светодиода WS2801.
В таком сигнале содержится 24-битная информация о яркости цвета (3 канала по 8 бит на каждый цвет), а также информация для внутреннего сдвигового регистра. Именно сдвиговый регистр позволяет определять, к какому светодиоду информация адресовывается. Таким образом можно соединять несколько светодиодов последовательно, при этом использовать все так же один вывод микроконтроллера.
Подключение нескольких светодиодов
Для подключения нескольких светодиодов к ардуино нужно просто подключить каждый из них к своему цифровому порту по той же схеме. Например, для создания проекта «Мигалка» можно взять два светодиода красного и синего цвета, подключив через сопротивление их положительные (длинные ножки)контакты к 13 и 12 пину соответственно. Короткие ножки подключаются к минусу – земле.
Схема подключения светодиодов проекта Мигалка
Мы уже знаем, что на плате нас дожидаются три разъема с таким обозначением («GND»), можно подключать к любому. Если разъемов питания будет не хватать, у нас есть три варианта.
- Сформировать нужные уровни питания на свободных пинах. Например, подав в скетче низкий уровень сигнала на пин 5, мы получим на этом разъеме необходимый нам «минус».
- Использовать макетную плату, на которой есть отличные варианты для раздачи «плюсов и минусов» через общие линии питания (смотрите статью на нашем сайте).
- Использовать специальные платы расширения Sensor Shield, у которых для каждого пина отдельно выводятся пины с питанием и землей.
Точно так же вы сможете подключить и следующие светодиоды, приступив к проектам светофор или светодиодная лента.
Имейте в виду, что подключение более 3 светодиодов создает достаточно большую нагрузку на модуль питания платы Arduino. Поэтому не рекомендуется устраивать длительное одновременное включение множества светодиодов.
Покупаем Ардуино
Ардуино всё больше захватывает наш мир. Стоит ли покупать дорогостоящие устройства, когда многие вещи для дома можно сделать своими руками? Мы уже даже успели смастерить на основе Ардуино и Raspberry рабочий ноутбук. С учетом всего этого микроконтроллеры набирают всё большую и большую популярность.
Остановимся на стоимости платы для нашего мастер-класса. Данная плата очень миниатюрная и является полноценным аналогом многим другим платам и именно поэтому мы выбрали Nano для данного мастер-класса.
- iarduino.ru – 525 рублей
- amperka.ru – 1490 рублей
- duino.ru – 325 рублей
- smartelements.ru – 590 рублей
Но даже это не предел, стоимость полноценных аналогов на всем известном aliexpress.com может быть в диапазоне 150-200 рублей. Для тех кто решил совершить покупку на АлиЭкспресс может ознакомиться с нашей небольшой пошаговой инструкцией.
Пояснения к скетчу “Blink”
Ниже представлен код скетча “Blink”.
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Первое, на что стоит обратить внимание: в данном скетче множество “комментариев”. Обратите внимание, что комментарии не являются инструкцией по работе программы
Это исключительно пояснения отдельных функций и задач, которые выполняются на определенном этапе кода. Это не обязательная часть кода.
Все между символами /* и */ в верхней части скетча – это комментарии, в которых описаны задачи программы.
Так же есть комментарии, которые ограничиваются одной строкой. Они начинаются с символов // и заканчиваются по умолчанию в конце строки.
Первая важная, по сути, часть данного кода это строка:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
Каждый скетч Arduino обязан включать в себя функцию “setup” и часть, в которую вы можете добавлять собственные инструкции, заключенные между { }.
В нашем примере в функции присутствует только одна команда, в которой указано, что пин, который мы используем, настраивается на “вывод” (“Output”).
Также обязательным для любого скетча является функция цикла “Loop”. В отличие от функции “Setup ”, которая отрабатывает один раз после перезагрузки, функция “Loop” после окончания работы команд, вновь запустится.
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
В теле функции “Loop” светодиод включается (HIGH), данное значение задерживается на 1000 миллисекунд (1 секунда), светодиод отключается (LOW) и остается выключенным на 1 секунду, после чего цикл повторится.
Шаг 1: Запрограммируйте Arduino
Теперь вам нужно вставить следующий код в программное обеспечение Arduino и загрузить его в Arduino. int led = 13; int led2 = 12; int led3 = 11; // процедура установки запускается один раз, когда вы нажимаете reset: void setup () { // инициализируем цифровой вывод как выход. pinMode (led, OUTPUT); pinMode (led2, OUTPUT); pinMode (led3, OUTPUT); } // процедура цикла выполняется снова и снова навсегда: void loop () { digitalWrite (светодиодный, ВЫСОКИЙ); // включить светодиод (HIGH — уровень напряжения) задержки (100); // подожди секунду digitalWrite (светодиод, LOW); // выключаем светодиод, делая напряжение НИЗКИМ задержки (100); {digitalWrite (led2, HIGH); задержки (100); digitalWrite (led2, LOW); задержки (100);} {digitalWrite (led3, HIGH); задержки (100); digitalWrite (led3, LOW); delay (100);} // подождите секунду }
Дребезг кнопки ардуино
В процессе работы с кнопками мы можем столкнуться с очень неприятным явлением, называемым дребезгом кнопки. Как следует из самого названия, явление это обуславливается дребезгом контактов внутри кнопочного переключателя. Металлические пластины соприкасаются друг с другом не мгновенно (хоть и очень быстро для наших глаз), поэтому на короткое время в зоне контакта возникают скачки и провалы напряжения. Если мы не предусмотрим появление таких “мусорных” сигналов, то будем реагировать на них каждый раз и можем привести наш проект к хаусу.
Для устранения дребезга используют программные и аппаратные решения. В двух словах лишь упомянем основные методы подавления дребезга:
- Добавляем в скетче паузу 10-50 миллисекунд между полкучением значений с пина ардуино.
- Если мы используем прерывания, то программный метд использоваться не может и мы формируем аппаратную защиту. Простейшая из них – RC фильтр с конденсатором и сопротивлением.
- Для более точного подавления дребезга используется аппаратный фильтр с использованием триггера шмидта. Этот вариант позволит получить на входе в ардуино сигнал практически идеальной формы.
Более подробную информацию о способах борьбы с дребезгом вы можете найти в этой статье об устранении дребезга кнопок.
Обычные светодиоды
Стандартный не мигающий светодиод дает яркое равномерное освещение и характеризуется малым потреблением электроэнергии. Наряду с такими качествами, как долговечность, компактность, энергоэффективность и широкий диапазон температур свечения это делает его вне конкуренции среди прочих искусственных источников света. На базе таких led-элементов и собирается схема мерцающих светильников. Рассмотрим, по какому принципу они изготавливаются.
Как сделать чтобы светодиоды мигали
Мигалка на светодиоде может быть собрана на базе одной из выше представленных схем. Соответственно нужно будет приобрести компоненты, описанные выше. Они необходимы для функционирования того или иного варианта. При этом для сборки потребуется паяльник, припой, флюс и другие необходимые комплектующие для пайки.
Сборка цепочки мигающих светодиодов предваряется обязательным лужением выводных контактов всех соединяемых элементов. Также нельзя забывать о соблюдении правил полярности, особенно при включении конденсаторов. Готовый светильник будет выдавать мерцание с частой около 1,5 Гц или что тоже самое порядка 15 импульсов каждый 10-секундный отрезок времени.
Схемы мигалок на их основе
Чтобы происходили элементарные заданные определенной периодичностью вспышки света, требуется пара транзисторов типа C945 или аналоговых элементов. Для первого варианта коллектор размещается в центре, а у второго – по середине располагается база. Один или пара мигающих светодиодов изготавливается по обычной схеме. При этом частотность вспышек задается наличием в цепочке конденсаторов С1 и С2.
В такую систему допустимо внедрение одновременно нескольких лед-кристаллов при монтаже достаточно мощного транзистора pnp-типа. При этом мигающими светодиоды делаются при соединении их контактов с разноцветными элементами, поочередность вспышек задается генераторным модулем, а частотность – заданными программными настройками.
Алгоритм монтажа светодиодной полосы
Изначально лента идет с припаянными к контактам отрезками проводов 4-х цветов, где желтый предназначен для подачи общего положительного импульса. Остальные соединяются согласно оттенку – красный, синий и зеленый. Но часто бывает, что длина отрезка велика и ее необходимо укоротить. На RGB-ленте указаны места, предназначенные для деления. Контакты на них промаркированы (R, G, B и +V). После того как отрезана необходимая длина, к ним припаиваются провода для коммутации.
Сейчас в магазинах можно найти и специальные коннекторы, которые позволяют обойтись без пайки. Они могут быть простыми (без жесткой фиксации) либо профессиональными. Для зажима контактов таких коннекторов используется специальный инструмент – кримпер.
Встроенный светодиод в Arduino Uno и Nano
На самом деле нам не обязательно знать о нюансах работы со светодиодами для начала практической деятлеьности. Первые эксперименты вполне можно провести со встроенным светодиодом платы Ардуино. В подавляющем большинстве плат он будет подключен к пину 13. Вы можете без труда найти светящиеся элементы платы – они загораются и мигают разным цветом при включении. Это и есть встроенные светодиоды.
Далеко не все “лампочки на плате” доступны нам для управления из скетча. Некоторые из них служат индикаторами обмена данными через те или иные протоколы (например, UART), другие информируют о включении питания и режиме работы платы. Светодиод, присоединенный к пину 13 платы может загореться и погаснуть при включении платы, а затем его работа определяется встроенным скетчем.
На некоторых вариантах плат количество источников света ограничено и 13 пин оказывается не подключенным. Это делается ради экономии потребляемой электроэнергии, ведь led-лампочка всегда приводит к повышенному потреблению электричества. В некоторых проектах, требующих увеличенного времени работы от аккумуляторов, “прожорливые лампочки” приходится выпаивать принудительно.
Прерывание по таймеру в ESP8266
Там другие добрые люди прямо в ядро ESP для Arduino встроили библиотеку Ticker
C++
#include <Ticker.h>
uint8_t blink_loop = 0;
uint8_t blink_mode = 0;
uint8_t modes_count = 0;
Ticker blinker;
void timerIsr()
{
if( blink_mode & 1<<(blink_loop&0x07) ) digitalWrite(13, HIGH);
else digitalWrite(13, LOW);
blink_loop++;
}
void setup() {
pinMode(13,OUTPUT);
blink_mode = 0B00000000;
blinker.attach(0.125, timerIsr);
}
void loop() {
blink_mode = 0B00001111; //Мигание по 0.5 сек
delay(5000);
blink_mode = 0B00000001; //Короткая вспышка раз в секунду
delay(5000);
blink_mode = 0B00000101; //Две короткие вспышки раз в секунду
delay(5000);
blink_mode = 0B00010101; //Три короткие вспышки раз в секунду
delay(5000);
blink_mode = 0B01010101; //Частые короткие вспышки (4 раза в секунду)
delay(5000);
}
1 |
#include <Ticker.h> uint8_t blink_loop=; uint8_t blink_mode=; uint8_t modes_count=; Ticker blinker; voidtimerIsr() { if(blink_mode&1<<(blink_loop&0x07))digitalWrite(13,HIGH); elsedigitalWrite(13,LOW); blink_loop++; } voidsetup(){ pinMode(13,OUTPUT); blink_mode=0B00000000; blinker.attach(0.125,timerIsr); } voidloop(){ blink_mode=0B00001111;//Мигание по 0.5 сек delay(5000); blink_mode=0B00000001;//Короткая вспышка раз в секунду delay(5000); blink_mode=0B00000101;//Две короткие вспышки раз в секунду delay(5000); blink_mode=0B00010101;//Три короткие вспышки раз в секунду delay(5000); blink_mode=0B01010101;//Частые короткие вспышки (4 раза в секунду) delay(5000); } |
Использовать прерывания в ESP следует осторожно, так как очень часто это вызывает срабатывание злобного сторожевого таймера WDT, который считает, что на обработку встроенных WiFi функций выделяется слишком мало времени. Надеюсь, эта статья будет немного полезной для любителей помигать светодиодами )))
Надеюсь, эта статья будет немного полезной для любителей помигать светодиодами )))
Соединяем все детали
На данном этапе у нас:
- куплены все детали;
- установлены все нужные программы (Arduino IDE и Fritzing при необходимости);
- нарисована схема устройства.
Теперь мы начинаем собирать всё вместе. Не забываем заранее подготовить все провода-перемычки и все детали. Внимательно следуйте инструкциям и не спешите, чтобы убедиться, что все соединения выполнены правильно.
Обратите внимание, что зеленый провод подключен к земле. Красный контакт подключен к контакту 13.
Если вы еще не вставили Arduino Nano к макетке — самое время это сделать:
Вставляем перемычки:
Теперь подключаем наше сопротивление:
И наконец вставляем светодиод:
И последнее на данном шаге — вставляем наш USB-кабель, который при покупке часто идет в комплекте с микроконтроллером:
Управление яркостью светодиода
Мы можем не только включать или выключать свет, но и управлять его яркостью. Для этого используется специальная технология с красивым названием ШИМ. Подключившись к пинам контроллера, поддерживающим ШИМ, можно регулировать интенсивность свечения с помощью функции analogWrite(). Мы должны указывать ей в качестве параметров номер пина и значение из диапазона от 0 до 255. Чем больше число, тем ярче будет светить лампочка. Например, для пина 3 пример будет выглядеть так: analogWrite(3, 255) или analogWrite(3, 100). В первом случае яркость будет максимально возможная, во втором – гораздо меньше.
Нужно помнить, что далеко не все пины контроллера поддерживают ШИМ. У Arduino Uno, Nano, основанных на ATMEGA328, шим поддерживают пины 3, 5, 6, 9, 10, 11. У платы Mega таких пинов гораздо больше.
Задания для самостоятельного решения
- Отключите питание, отключите светодиод от 9-го порта и подключите к 11-му. Измените программу так, чтобы схема снова заработала
- Измените код программы так, чтобы в течение секунды на светодиод последовательно подавалось усреднённое напряжение 0, 1, 2, 3, 4, 5 В
- Возьмите еще один светодиод, резистор на 220 Ом и соберите аналогичную схему на этой же макетке, подключив светодиод к пину номер 3 и другому входу GND, измените программу так, чтобы светодиоды мигали в противофазу: первый выключен, второй горит максимально ярко и до противоположного состояния
← Маячок | Оглавление | Светильник с управляемой яркостью →
Что такое RGB-светодиод
Обычные светоизлучающие полупроводниковые приборы имеют один p-n переход в одном корпусе, либо представляют собой матрицу из нескольких одинаковых переходов (COB-технология). Это позволяет в каждый момент времени получить один цвет свечения – непосредственно от рекомбинации основных носителей или от вторичного свечения люминофора. Вторая технология дала разработчикам широкие возможности в выборе цвета свечения, но менять окраску излучения в процессе эксплуатации прибор не может.
RGB светодиод содержит в одном корпусе три p-n перехода с разным цветом свечения:
- красным (Red);
- зеленым (Green);
- синим (Blue).
Аббревиатура из английских названий каждого цвета и дала название этому типу LED.
Заключение
Подключить светодиод к своей схеме на Ардуино – несложное занятие. Просто соединяем ножки в правильной последовательности и не забываем о токоограничивающем резисторе. Главное преимущество Ардуино в таких схемах – возможность программного управления светодиодом. Мы просто пишем в программе нужный алгоритм, загружаем его в контроллер и плата включает и выключает нужные нам пины.
Можно подключать несколько светодиодов, но следить, чтобы не выйти в итоге за пределы ограничений по току. Можно не просто включать или выключать свет, но и управлять его яркостью. Для этого используем пины, поддерживающие ШИМ и функцию analogWrite.
Более подробно о подключении и управлении светодиодами на ардуино вы сможете узнать в статьях с описанием таких проектов как мигалка, маячок, светофор.