Logo

Cлучайные товары

Мотор-Редуктор Металлический
Плата макетная беспаечная 55х82х8.5 мм

Посмотреть товар в Магазине »

Мы в соц сетях


Подпишись на канал
Мы на facebook

Урок 3 — плавное включение светодиода на Arduino с помощью ШИМ (PWM)

.Урок 3 — плавное включение светодиода на Arduino с помощью ШИМ (PWM)

В первом уроке Мигаемвстроенным на плату Arduino светодиодом мы рассмотрели как можно мигать встроенным светодиодом. Но кроме мигания можно плавно включать и выключать светодиод с подошью ШИМ или в английском PWM (Pulse-Width Modulation) широтно-импульсная модуляция . Что такое ШИМ рассказывать не буду. В интернете очень много информации по данной теме.

Для урока нам понадобиться:

Подключение будет аналогично второму уроку: Мигаем светодиодом на Arduino. Только Переключим на пин на котором есть ШИМ. Их иногда обозначают волнистой чертой "~" или обводят кружочками или ещё как-то выделяют среди прочих. На Arduino Uno это "~".

Подключим к з пину, у нас получится следующая схема подключения.

PWM Arduino ШИМ

Так как ШИМ в Arduino 8 bit соответственно в программе мы можем использовать любое значение от 0 до 225.

Подправим код:

int led_pin=3;          // пин подключения
int brightness = 0;     // яркость светодиода
int fadeAmount = 3;     // шаг изменения яркости

void setup() { }

void loop()  { 
    analogWrite(led_pin, brightness);    // устанавливаем значение 
    brightness = brightness + fadeAmount;   // прибавляем шаг изменения яркости, которая установится в следующем цикле
    if (brightness == 0|| brightness == 255) { // Условие 
          fadeAmount = -fadeAmount ; // Меняем знак 
     //  delay(500);                  // ожидаем 1/2 секунды
    } 

   delay(50);                  // ожидаем 1/20 секунды        
}

int - означать что у нас переменные целочисленные от -32 768 до 32 767.

Переменная brightness нужна нам, чтобы задать первоначальное свечение светодиода и для увлечение в цикле.

Переменная fadeAmount устонавливает шага изменения яркости. Данная переменная должна быть кратная 255, для данной программы. Можно конечно проверить, чтобы при выполнении цикла наше значение не выходила за пределы 255. Но мы пока этого делать не умеем.

analogWrite(led_pin, brightness);

Для работы с ШИМ инициализируем выход как аналоговый analogWrite().

brightness = brightness + fadeAmount;

В данной строчке мы складываем две переменные. Так как все что находиться внутри функции loop() обрабатывается в непрерывном цикли. Благодаря этому сложение будет происходить при каждом проходе по циклу.

Для того чтобы переменная brightness не выходила за границы ШИМ (от 0 до 255 ) сделаем проверку:

if (brightness == 0 || brightness == 255)

Оператор If означает логическое ЕСЛИ. || логическое ИЛИ. == - это символ равенства двух значений. В нашем случае двух целочисленных значений.

Прочитаем строчку: ЕСЛИ переменная brightness равная 0 ИЛИ равны 255 то выполняем действия в {}.

В {} у нас вырождение fadeAmount = -fadeAmount ; Данное вырождение меняет знак на противоположный.


И так что же у нас происходит в цикле :

brightness увеличивается до тех пор пока не станет равным 255. После чего переменная fadeAmount меняет знак на минус а brightness начинает уменьшаться. После того как brightness становиться равным 0. fadeAmount снова меняет знак на положительный. И так все повторяется пока мы не отключим питание.


Следующий урок: Сигнал SOS с помощью Arduino и одного светодиода


Если у вас чего то нет для выполнения данного урока, Вы можете посмотреть в каталоге. Там собранные комплектующими от проверенных продавцов по самым низким ценам.

Вернуться в раздел: Уроки Arduino: Светодиоды, Резисторы, Arduino Дата публикации 8 февраля , 2017

Яндекс.Метрика

Portal-PK (Портал ПК) © 2015 - 2017 MiniYiiCMS Заказать сайт: f-studio.biz
Обратная связь
Вопрос-Ответ