Содержание статьи
Содержание

Главная / Arduino для начинающих / Затухающий светодиод с использованием ШИМ выхода Arduino

Затухающий светодиод с использованием ШИМ выхода Arduino

Функция analogWrite() используется для затухания свтодиода и его постепенного включения. AnalogWrite использует широтно-импульсную модуляцию (PWM), которая дает возможность включать/включать цифровой пин с большой скоростью, генерируя эффект затухания.

Что вам понадобится для проекта

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

Подключите анод (более длинная, позитивная нога) светодиода к цифровому пину 9 платы Arduino через резистор 220 Ом. Подключите катод (более короткая, нога с отрицательным зарядом) к земле.

Arduino_LED_PWM

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

Arduino_LED_PWM_scheme

Вариант шилда со светодиодом для Arduino

Arduino_LED_PWM_shield

Описание программы для 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);