Урок 7. PWM (ШИМ). Плавное затухание светодиода
Включение и выключение светодиодов — это конечно круто, но теперь давайте сделаем так, чтобы наш светодиод включался плавно и постепенно. Для этого используем функцию analogWrite () ;
Отсоедините USB-кабель и удалите из макетки всё, кроме первого светодиода. Потом переместите его желтый провод а на контакт 9 платы Arduino.
Ссылка на эту симуляцию на Autodesk Tinkercad
Скопируйте / загрузите код из модуля Tinkercad Circuits или откройте скетч в примерах программного обеспечения Arduino в меню File -> Examples -> 01.Basics -> Fade
Подключите плату в USB и загрузите скетч в плату Arduino Uno. После этого наблюдаем за тем, как светодиод плавно включается и затухает.
Давайте посмотрим на код, чтобы узнать, как был достигнут этот эффект.
В этих строках бъявляются три переменные, используемые в программе:
int led = 9; // the PWM pin the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
Процедура Setup настраивает вывод 9 как выход:
void setup() {
// declare pin 9 to be an output:
pinMode(led, OUTPUT);
}
В этой строке функция analogWrite (); устанавливает контакт 9 в зависимости от содержимого переменной brightness в течение заданного времени.
analogWrite(led, brightness);
В следующей строке кода яркость увеличивается на 5 (fadeAmount).
brightness = brightness + fadeAmount;
Далее в коде используется оператор if для проверки содержимого переменной brightness с использованием операторов сравнения.
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
Если brightness меньше или равно (<=) нулю, или (||) больше или равно (> =) 255, то выполняется код внутри фигурных скобок, иначе этот участок кода просто пропускается. Таким образом, этот код увеличивает brightness до тех пор, пока значение не достигнет или не превысит 255, а затем устанавливает fadeAmount и -5 и уменьшает brightness , пока brightness не достигнет нуля (или станет меньше нуля).
delay(30);
Эта строка создает задержку в 30 миллисекунд, для того, чтобы уменьшить скорость выполнения кода, и чтобы наш глаз смог увидеть эффект.
Попробуйте изменить значение fadeAmount и загрузить код в свою плату. Как изменение этой переменной влияет на видимый эффект затухания?
Плата Arduino способна генерировать цифровые сигналы (HIGH и LOW), но analogWrite (); имитирует появление промежуточных яркостей между включенным и отключенным состояниями светодиода. Такой метод назывется широтно-импульсной модуляцией (ШИМ, PWM). Светодиод мигает очень быстро, и ваш глаз, из-за инерционности зрения, воспринимает это как постоянный свет. Соотношение времени, в течение которого светодиод включен ко времени, когда он находится в выключенном состоянии определяет видимую яркость его свечения. Только определенные контакты платы способны генерировать ШИМ, и на плате Ардуино они помечены значком ~ около номера пина. PWM также может использоваться для управления скоростью двигателя постоянного тока, что мы с вами и сделаем в одном из последующих уроков
Я Вам очень благодарен за информацию. Мне это очень пригодилось.