Затухающий светодиод с использованием ШИМ выхода Arduino
Функция analogWrite() используется для затухания свтодиода и его постепенного включения.
AnalogWrite использует широтно-импульсную модуляцию (PWM), которая дает возможность включать/включать цифровой пин с большой скоростью, генерируя эффект затухания.
Что вам понадобится для проекта
- Плата Arduino
- Макетная плата (breadboard)
- Светодиод
- Резистор на 220 Ом
Схема подключения светодиода к Arduino
Подключите анод (более длинная, позитивная нога) светодиода к цифровому пину 9 платы Arduino через резистор 220 Ом. Подключите катод (более короткая, нога с отрицательным зарядом) к земле.

Электросхема подключенного к Arduino светодиода

Вариант шилда со светодиодом для Arduino
Описание программы для Arduino
После объявления 9 пина в качестве ledPin, тело функции setup() можно не наполнять.
Функция analogWrite() которую вы будете использовать в главном цикле main, требует два аргумента: один для определения пина, на который будут записываться и второй - для отображения записываемого ШИМ-значения.
Для того, чтобы постепенно зажигать и тушить ваш светодиод, постепенно увеличивайте ШИМ значение от 0 до 255, после - опять до 0, чтобы завершить цикл. В скетче ниже, ШИМ-значение используется для переменной под названием brightness. Каждый раз по завершению цикла она увеличивает значение переменной.
Если brightness достигает своего предельного значения (0 или 255), fadeAmount меняет свое значение на отрицательное. Другими словами, если fadeAmount равно 5, его значение меняется на -5. При следующей итерации цикла это приводит к изменению переменной brightness.
analogWrite() обеспечивает быструю смену ШИМ значения, так что задержка в конце скетча контролирует скорость затухания. Попробуйте изменить значение задержки задержки и отследить, как отработает программа.
Скетч для Arduino IDE
/*
Fade
Данный пример показывает как обеспечить затухание на 9 пине с использованием функции analogWrite().
*/
int led = 9; // пин, к которому подключен светодиод
int brightness = 0; // яркость светодиода
int fadeAmount = 5; // на сколько увеличить яркость светодиода
// функция setup отрабатывает один раз после перезагрузки платы:
void setup() {
// объявляет 9 пин в качестве выхода:
pinMode(led, OUTPUT);
}
// цикл loop повторяется бесконечно:
void loop() {
// устанавливает яркость 9 пина:
analogWrite(led, brightness);
// изменение яркости на следующей итерации с помощью цикла:
brightness = brightness + fadeAmount;
// меняет значение затухания на аналогичное с противоположным знаком при граничных значениях:
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// задержка в 30 для отслеживания эффекта затухания
delay(30);