← Все вопросы
Как управлять яркостью светодиода на Arduino через ШИМ (analogWrite)?
6
Хочу не просто включать светодиод, а плавно менять его яркость. digitalWrite умеет только включить/выключить. Видел функцию analogWrite, но она работает не на всех пинах. Как сделать яркость и почему пины разные?
1 ответ
12
✓ Принятый ответ — помог автору
Для яркости используют analogWrite(pin, значение), где значение от 0 (выключено) до 255 (полная яркость).
void setup() {
pinMode(9, OUTPUT);
}
void loop() {
// плавно разгораемся
for (int i = 0; i <= 255; i++) {
analogWrite(9, i);
delay(5);
}
// плавно гаснем
for (int i = 255; i >= 0; i--) {
analogWrite(9, i);
delay(5);
}
}
Почему не все пины: analogWrite работает только на пинах с ШИМ (ШИМ = широтно-импульсная модуляция). На Uno они помечены значком ~ (тильда): это пины 3, 5, 6, 9, 10, 11. Если подключишь светодиод к пину без тильды, яркость регулироваться не будет.
ШИМ на самом деле не меняет напряжение — он очень быстро включает и выключает пин, и глаз видит это как «приглушённый» свет.
Ваш ответ
, чтобы ответить на вопрос.