===== Эксперимент 7. Регулирование яркости светодиода ===== Основываясь на теоретических знаниях из предыдущей статьи, давайте попробуем получить яркость светодиода, отличную от максимальной. Несмотря на то, что частота импульсов не является принципиальной для широтно-импульсной модуляции, она является важной для человека. Например, если мы будем регулировать коэффициент заполнения импульсов, которые повторяются лишь пару раз в секунду, то мы увидим лишь как светодиод мигает. Это будет обычная мигалка, никакой регулировки яркости не получим. Человеческое зрение способно различать лишь 25 "кадров" в секунду. Если сигнал меняется реже, то человек отчетливо видит его мерцание. Но если повысить частоту, то для человека это сливается уже в единую картину. По этому принципу устроено кино и мультипликация. На экране показываются отдельные картинки, но они быстро сменяют друг друга. Так быстро, что сливаются в непрерывное видео. Поэтому, необходимо генерировать сигнал ШИМ определенной, достаточно высокой, частоты. ==== Схема эксперимента ==== Соберем уже привычную нам схему со светодиодом. {{ :products:esp-iot:exp2.1.png?nolink |}} //Рисунок 1. Электрическая принципиальная схема эксперимента// {{ :products:esp-iot:pwm.montage.png?direct&600 |}} //Рисунок 2. Монтажная схема эксперимента// ==== Программный код эксперимента ==== #define LED_PIN 16 void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, LOW); delay(10); digitalWrite(LED_PIN, HIGH); delay(10); } В теле цикла программа зажигает светодиод, ждет 10 миллисекунд, после чего выключает светодиод и ждет еще 10 миллисекунд. Таким образом мы генерируем импульсы. Так как время, которое светодиод горит и не горит одинаковое (и то и другое по 10мс), то получается Кзаполнения=50% Период нашего сигнала получается 20мс. А его частота 1/20мс = 50 герц, это означает, что мы получили 50 импульсов в секунду, поэтому глаз не видит отдельных вспышек светодиода, но яркость светодиода заметно меньше, чем, когда он горел на полную мощность. Изменим программу, чтобы получить коэффициент заполнения 10% digitalWrite(LED_PIN, LOW); delay(18); digitalWrite(LED_PIN, HIGH); delay(2); При таких задержках мы получили такой же, как и раньше, период импульсов (20мс), но теперь время свечения светодиода только 2мс, что составляет 10% от периода. Поэтому светодиод стал совсем тусклым, но по-прежнему не мигает, а горит, как кажется, с постоянной яркостью. ==== Дополнительное задание ==== 1. Попробуй изменить время задержек в программе, не меняя период импульсов, и посмотри что изменится. 2. Попробуй изменить задержки в программе, увеличивая период импульсов, и посмотри, что изменится, когда частота станет менее 25 герц.