← Все вопросы

Как управлять яркостью светодиода на Arduino через ШИМ (analogWrite)?

Задан 26 месяцев назад707 просмотров1 ответ
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. Если подключишь светодиод к пину без тильды, яркость регулироваться не будет.

ШИМ на самом деле не меняет напряжение — он очень быстро включает и выключает пин, и глаз видит это как «приглушённый» свет.

Ваш ответ

, чтобы ответить на вопрос.