Сегодня мы реализуем ШИМ, и по классике у нас будет плавно увеличивать и уменьшать свою яркость светодиод.
В микросхеме ESP8266 ШИМ можно вывести на ножки 0,2,4,5,12,13,14 и 15. При этом надо учитывать, что если мы используем сразу несколько выходов, — отдельно настроить выход на свою частоту не выйдет. Все выхода должны работать на одной частоте. Так же есть ограничения по частоте: минимальная 1Гц, максимальная 1кГц.
Так же необходимо помнить, что максимальное заполнение ШИМ соответствует 1023, минимальное 0.
Для подключения ШИМ необходимо указать, с помощью функции PWM к какой ножке подключаем ШИМ, в нашем случаи это GPIO4 (D2), GPIO5 (D1), GPIO0 (D3):
Программный код:
import machine import time from machine import Pin, PWM def pwr ( N ): y = 0 pwm4.deinit() pwm5.deinit() pwm0.deinit() if N == 4: pwm4.init() t = pwm4 elif N == 5: pwm5.init() t = pwm5 elif N == 0: pwm0.init() t = pwm0 for i in range (1, 1020, 10): y = y + 10 t.duty(y) print (y) time.sleep(0.1) for i in range (1, 1020, 10): y = y - 10 t.duty(y) print (y) time.sleep(0.1) pwm4 = PWM(Pin( 4 ))# подключаем ШИМ к ножке pwm4.freq(500)# устанавливаем частоту pwm4.duty(1) # устанавливаем частоту # pwm4.deinit()# отключаем ШИМ pwm5 = PWM(Pin(5), freq = 500, duty = 1)# подключаем ШИМ pwm0 = PWM(Pin(0), freq = 500, duty = 1)# подключаем ШИМ y=0 pwm4.duty(y) pwm5.duty(y) pwm0.duty(y) while True: pwr(5) time.sleep(0.5) pwr(4) time.sleep(0.5) pwr(0) time.sleep(0.5)
В данной программе мы подключили ножку GPIO4 явно, указывая каждый параметр настройки ШИМ отдельно, ножки GPIO5 и GPIO0 подключили непосредственно при указании параметров работы ШИМ в одной строчке.
Дальше, мы включаем командой pwmN.init() (вместо N пишем номер ножки) ШИМ на нужной ножке, а командой pwmN.deinit() отключаем ШИМ. После чего в цикле плавно увеличиваем и уменьшаем коэффициент заполнение, что в данном случаи нам плавно увеличивает, а после уменьшает яркость светодиода.