СОДЕРЖАНИЕ ►
Плавное включение светодиода с помощью ШИМ (PWM) на Arduino рассмотрим на этой странице. Рассмотрим, как подключить светодиод, разберем что такое ШИМ (Широтно-Импульсная Модуляция). Также мы подробно рассмотрим цикл for в языке программирования C++, который служит для повторения операторов, заключенных в конструкцию (операторы, находящиеся внутри фигурных скобок в скетче).
Плавное включение светодиода на Ардуино

Чтобы вспомнить, что такое Ардуино, используем простой скетч плавного включения светодиода. Для этого можно использовать цикл for. Заголовок данной конструкции состоит из трех частей: for (initialization; condition; increment) — initialization выполняется один раз, далее проверяется условие condition, если условие верно, то выполняется приращение increment и цикл повторяется пока верно условие (condition).
В приведенном примере мы будем плавно изменять яркость светодиода с помощью ШИМ, светодиод будет плавно разгораться, а затем плавно гаснуть. Данный пример можно использовать для декоративной подсветки в комнате на светодиодах или ночного светильника с управлением от пульта дистанционного управления. Подключите светодиод к аналоговому порту Pin6 и загрузите следующий скетч.
Управление светодиодом с помощью ШИМ Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- 1 светодиод и 1 резистор 220 Ом;
- провода «папа-папа» и «папа-мама».

Скетч плавного включения светодиода от Ардуино
#define LED_PIN 6 // задаем имя для Pin6 void setup() { pinMode(LED_PIN, OUTPUT); // инициализируем Pin6 как выход } void loop() { // плавное включение светодиода // начальное значение на Pin6 i=0, если i<=255, то прибавляем к i единицу for(int i=0;i<=255;i++) { analogWrite(LED_PIN, i); delay(5); // ставим задержку для эффекта } //плавное затухание светодиода // начальное значение на Pin6 i=255, если i>=255, то вычитаем от i единицу for(int i=255;i>=0;i--) { analogWrite(LED_PIN, i); delay(5); // ставим задержку для эффекта } }
Пояснения к коду:
- цикл
forповторяется до тех пор, пока верно условиеi<=255илиi>=0; - для цикла
forследует обязательно прописывать в круглых скобках следующие значения —(инициализация; условие; приращение); - конструкция цикла
forдолжна располагаться между фигурными скобками{ }.










Получилось сделать плавное зажигание светодиода, как на схеме. Почему не получается сделать тоже самое на аналоговых портах A0 — A5? Спасибо.
В коде указали номера этих портов?
Потому что аналоговые порты А0-А5 не поддерживают функцию ШИМ, они являются аналоговыми входами…
Все верно, ШИМ сигнал на Arduino UNO поддерживают только 3,5,6,9,10 и 11 порты. На Arduino Mega ШИМ портов больше — со 2 по 13 Пин.
Аналоговые порты А0 — А5 могут работать в режиме INPUT и поддерживают преобразование аналогового сигнала в цифровой в десятичном виде от 0 до 1023. Также порты А0 — А5 могут работать в режиме OUTPUT, но выдают только цифровой сигнал (вкл./выкл.).
Можно ли с помощью arduino сделать затухание в течении 2 часов. Требуется для курятника.
Можно, увеличив задержку в строчке — delay(5). А на сколько увеличить — это надо уже считать
так же можно заменить переменную int на float (дробное число) и тогда строчка будет выглядеть так:
for (float i = 0; i < 255; i += 0.005), но какую именно дробь подставить так же нужно считать
На сколько нужно поставить delay что бы он мигал реже на 5 секунд
Это можно определить методом эксперимента
писать код с использованием delay() — плохая практика
Привет. Можете сделать, чтобы все это работало через кнопку )
здравствуйте.
что нужно добавить в этот скетч? для того ,что бы два,три или четыре светодиода так же плавно потухали и загорались одновременно.
Можно включать несколько светодиодов от одного пина или добавить команду analogWrite(); для других пинов
Как использовать цикл for вместе с millis ?