===== Эксперимент 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. Монтажная схема эксперимента//
==== Программный код эксперимента ====
from machine import Pin, PWM
import math
import time
_init()
LedPinB = 15
LedPinG = 14
LedPinR = 13
ledB = Pin(LedPinB, Pin.OUT)
ledG = Pin(LedPinG, Pin.OUT)
ledR = Pin(LedPinR, Pin.OUT)
pwmB = PWM(ledB)
pwmG = PWM(ledG)
pwmR = PWM(ledR)
pwmB.freq(500)
pwmG.freq(500)
pwmR.freq(500)
while True:
for i in range(100):
pwmB.duty(int(math.sin(i / 50 * math.pi) * 500 + 500))
time.sleep_ms(30)
В этой программе мы разбили период синуса на 100 шагов и устанавливаем яркость синего цвета на каждом шаге в соответствии с формулой. После чего даем возможность светодиоду светить 30 миллисекунд с установленной яркостью прежде, чем мы ее изменим на следующем шаге.
==== Дополнительные задания ====
Попробуй ускорить или замедлить процесс изменения цвета с помощью изменения количества шагов и/или времени задержки на каждом шаге