На этой странице вы найдете инструкции по сборке электрической цепи со светодиодами для их плавного розжига и затухания от платы Ардуино с помощью сигнала ШИМ (широтно-импульсной модуляции). Цифровые выходы с ШИМ (PWM) модуляцией позволяют выводить сигнал с различными импульсами pwm. Рассмотрим, как плавно мигать одним или сразу двумя светодиодами на микроконтроллере Arduino в цикле for.
СОДЕРЖАНИЕ
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- светодиоды
- резисторы
- макетная плата
- коннекторы
Дополнительные материалы на эту тему:
Чтобы генерировать псевдо аналоговое напряжение на выходе Arduino, состояние вывода должно быстро изменяться. Именно изменение частоты ШИМ сигнала будет изменять яркость светодиода, подключенного к плате. Только 6 выводов Arduino Uno и на плате Nano обеспечивают ШИМ (широтно-импульсную модуляцию) — 3, 5, 6, 9, 10 и 11. Для модуляции ШИМ сигнала в программе необходимо использовать функцию analogWrite().
Плавное включение и выключение светодиода

Плавный розжиг светодиода производится с помощью цикла for в котором происходит увеличение или уменьшение переменной int i. При этом цикл for будет выполняться i раз, меняя при каждом проходе значение pwm сигнала на выходе 10 с помощью команды analogWrite(). После подключения светодиода к пину 10 Ардуино, по схеме размещенной выше, загрузите следующую программу с дискретно мигающим светодиодом.
Скетч плавного розжига и затухания светодиода
#define BLU 10
void setup() {
pinMode(BLU, OUTPUT);
}
void loop() {
for(int i = 0; i <= 255; i++) {
analogWrite(BLU, i);
delay(10);
}
for(int i = 255; i >= 0; i--) {
analogWrite(BLU, i);
delay(10);
}
}
Плавное мигание светодиодами от Ардуино

Следующий пример программы позволяет управлять сразу двумя светодиодами с помощью ШИМ микроконтроллера Arduino. При этом первый светодиод будет плавно включаться, а второй светодиод плавно затухать одновременно. Заголовок цикла for состоит из трех частей (инициализация; условие; инкремент) — если условие истинно, выполняется инкремент и цикл повторяется до тех пор, пока условие не станет ложным.
Скетч для плавного мигания двумя светодиодами
#define RED 11
#define BLU 10
void setup() {
pinMode(RED, OUTPUT);
pinMode(BLU, OUTPUT);
}
void loop() {
for(int i = 0; i <= 255; i++) {
analogWrite(RED, i);
analogWrite(BLU, 255 - i);
delay(10);
}
for(int i = 255; i >= 0; i--) {
analogWrite(RED, i);
analogWrite(BLU, 250 - i);
delay(10);
}
}
Заключение. Чтобы плавно управлять выходным напряжением на выходе Arduino, следует использовать цифровые контакты микроконтроллера. По определению, цифровой сигнал может иметь два значения: HIGH (высокий уровень = 5 В), либо LOW (низкий уровень = 0 В). Но цифровые контакты с ШИМ, позволяют генерировать псевдо аналоговый сигнал в диапазоне от 0 до 255 при использовании команды analogWrite() в программе.
