===== Эксперимент 12. Функция управления яркостью =====
Что ж, мы разобрались с принципом получения цвета, научились подключать RGB светодиод и даже успели поэкспериментировать с получением нужного цвета. Попробуем управлять цветом по определенному закону, по функции синуса. Подобное мы уже делали в [[products:laboratory_iot_с:exp9|эксперименте 9]].
==== Схема эксперимента ====
Оставим собранной без изменений схему из прошлого эксперимента
{{ :products:esp-iot:6.2_sch.png?nolink |}}
//Рисунок 1. Электрическая принципиальная схема эксперимента//
Токоограничительные резисторы в схеме обязательны!
{{ :products:esp-iot:exp6.2_mont.png?direct&600 |}}
//Рисунок 2. Монтажная схема эксперимента//
==== Программный код эксперимента ====
#define LED_PIN_B 15
#define LED_PIN_G 14
#define LED_PIN_R 13
void setup() {
pinMode(LED_PIN_B, OUTPUT);
pinMode(LED_PIN_G, OUTPUT);
pinMode(LED_PIN_R, OUTPUT);
analogWriteFreq(500);
analogWriteRange(1024);
analogWrite(LED_PIN_B, 1023);
analogWrite(LED_PIN_G, 1023);
analogWrite(LED_PIN_R, 1023);
}
void loop() {
for (int i = 0; i < 100; i++) {
analogWrite(LED_PIN_B, int(sin(i / 50.0 * PI) * 500 + 500));
delay(30);
}
}
В этой программе мы разбили период синуса на 100 шагов и устанавливаем яркость синего цвета на каждом шаге в соответствии с формулой. После чего даем возможность светодиоду светить 30 миллисекунд с установленной яркостью прежде, чем мы ее изменим на следующем шаге.
==== Дополнительные задания ====
Попробуй ускорить или замедлить процесс изменения цвета с помощью изменения количества шагов и/или времени задержки на каждом шаге