В
первом уроке
Мигаемвстроенным на плату Arduino светодиодом мы
рассмотрели как можно мигать встроенным
светодиодом. Но
кроме мигания можно плавно включать и
выключать светодиод с подошью
ШИМ
или в английском PWM
(Pulse-Width Modulation)
широтно-импульсная
модуляция
.
Что такое
ШИМ
рассказывать
не буду. В интернете очень много информации
по данной теме.
Для
урока нам понадобиться:
Подключение
будет аналогично второму уроку:
Мигаем светодиодом на Arduino.
Только
Переключим на пин на котором есть
ШИМ.
Их иногда обозначают волнистой чертой
"~" или обводят кружочками или ещё
как-то выделяют среди прочих. На
Arduino
Uno
это
"~".
Подключим
к з пину, у нас получится следующая схема
подключения.
Так
как
ШИМ в 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 снова
меняет знак на положительный. И так все
повторяется пока мы не отключим питание.
Если у вас чего то нет для выполнения данного урока, Вы можете посмотреть в каталоге. Там собранные комплектующими от проверенных продавцов по самым низким ценам.
Понравилась статья? Поделитесь ею с друзьями:
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.