Это старая версия документа!


Эксперимент 7. Регулирование яркости светодиода

Для вывода данных традиционно применяется двоичная система с применением логических значений 0 и 1. Но не всегда схемотехнику необходимо значение нуля или единицы.
Среди цифровых пинов контроллера выделяются несколько со знаком ~, данные пины поддерживают сигнал ШИМ (PWM), то есть можно создать сигнал который имеет определенное напряжение и продолжительность.
Контроллер поддерживает восьмибитную ШИМ, что позволяет выбрать переменную в диапазоне значений от 0 до 256.
Давайте посмотрим это на практике, на примере плавного включения и выключения светодиода, подключенному к 3 пину.

Схема эксперимента

Рисунок 1. Электрическая принципиальная схема эксперимента

Рисунок 2. Монтажная схема эксперимента

Программный код эксперимента

Exp7
  1. //объявляем константу с номером пина для светодиода
  2. const int Led = 3;
  3.  
  4. void setup() {
  5. pinMode(Led, OUTPUT); // инициализируем пин как выход
  6. }
  7.  
  8. void loop() {
  9. // создаем цикл, где яркость (brightness) изначально равна 0, и с каждым шагом увеличивается на 1 единицу
  10. for (int brightness = 0; brightness < 255; brightness ++) {
  11. analogWrite(Led, brightness); // формируем сигнал ШИМ на пине
  12. delay(5); // создаем задержку 5 миллисекунд
  13. }
  14. // теперь производим уменьшение значения переменной (уменьшаем яркость)
  15. for (int brightness = 255; brightness >= 0; brightness --) {
  16. analogWrite(Led, brightness);
  17. delay(5);
  18. }
  19. }

Как мы уже знаем, у сигнала с широтно- импульсной модуляцией есть два параметра- частота и коэффициент заполнения(скважность). Частота сигнала ШИМ в контроллере около 500 герц, а коэффициент заполнения сигнала будем задавать с помощью функции analogWrite(Led, brightness), где:

  • Led – номер вывода для генерации ШИМ сигнала.
  • brightness – коэффициент заполнения ШИМ.

Для плавного изменения яркости светодиода необходимо изменять коэффициент заполнения, для плавного увеличения или уменьшения мы будем использовать оператор цикла for()

Операторы цикла используется для повторения блока операторов, заключенных в фигурные скобки.
Подробнее о цикле For

В условии цикла for мы записали, чтобы наша переменная brightness увеличивалась от 0 до 255, с шагом 1, то есть выражения в теле цикла (заключенные в фигурные скобки) будут повторяться пока значение переменной не достигнет 255, после этого выполнение цикла завершиться.

Попробуй изменить программу так, чтобы светодиод имел не два, а 3 или более вариантов яркости, которые переключались бы по- очереди.