Arduino Учебный курс


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

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

Arduino Учебный курс

Отсоедините USB-кабель и удалите из макетки всё, кроме первого светодиода. Потом переместите его желтый провод а на контакт 9 платы Arduino.

Ссылка на эту симуляцию на Autodesk Tinkercad

Скопируйте / загрузите код из модуля Tinkercad Circuits или откройте скетч в примерах программного обеспечения Arduino в меню File -> Examples -> 01.Basics -> Fade

Arduino Учебный курс

Подключите плату в USB и загрузите скетч в плату Arduino Uno. После этого наблюдаем за тем, как светодиод плавно включается и затухает.

Arduino Учебный курс

Давайте посмотрим на код, чтобы узнать, как был достигнут этот эффект.

В этих строках бъявляются три переменные, используемые в программе:

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 также может использоваться для управления скоростью двигателя постоянного тока, что мы с вами и сделаем в одном из последующих уроков

Перейти к следующему уроку…

1 comment

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *