НАШ МАГАЗИН - SHOP.MUSBENCH.COM
Карта Сайта

Урок 7. PWM (ШИМ). Плавное затухание светодиода

Учебный курс Ардуино. Широтно импульсная модуляция


       
   
Включение и выключение светодиодов - это конечно круто, но теперь давайте сделаем так, чтобы наш светодиод включался плавно и постепенно. Для этого используем функцию
analogWrite () ;.

Отсоедините USB-кабель и удалите из макетки всё, кроме первого светодиода. Потом переместите его желтый провод а на контакт 9 платы Arduino.
  
 
   
Скопируйте / загрузите код из модуля 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 также может использоваться для управления скоростью двигателя постоянного тока, что мы с вами и сделаем в одном из последующих уроков.



Следующий урок...