На Arduino Esplora, основанном на плате Leonardo, поддержка PWM контакта 5, который управляет красным компонентом светодиода RGB, выглядит так, как будто он использует таймер с функцией tone
. Это имеет непреднамеренное последствие: красный компонент становится бесполезным после воспроизведения тона, так как его поведение становится непредсказуемым.
Вот простая setup
процедура, демонстрирующая проблему:
void setup()
{
//analogWrite(5, 255);
//delay(1000);
analogWrite(5, 1);
delay(2000);
Esplora.tone(440);
delay(1000);
Esplora.noTone();
}
Это включает красный канал светодиода до минимального значения и удерживает его в течение двух секунд, затем воспроизводит тон 440 Гц в течение 1/4 секунды, но как только тон начинается, вместо того, чтобы оставаться на низкой яркости, светодиод включается. полностью выключен.
Если вы раскомментируете первые две строки, то на этот раз, когда звук начнется, вместо того, чтобы (неправильно) выключиться, как раньше, он теперь (точно так же неправильно) вернется к полной яркости.
Я не могу понять, как восстановить правильную работу красного компонента (или, точнее, ШИМ на выводе 5) после вызова tone
.
Я предполагаю, что для генерации правильного Гц для звука tone
изменяет настройки таймера, который затем влияет на функцию ШИМ. Если я смогу узнать, как вручную сбросить таймер, чтобы снова правильно поддерживать ШИМ для светодиода, это может быть решением. Однако я новичок в Arduino, таймерах и т. .
Итак, кто-нибудь знает, как восстановить правильную работу ШИМ на этом контакте?
отметка