Настраиваем ШИМ на микроконтроллере ESP8266 с помощью языка microPython.

Сегодня мы реализуем ШИМ, и по классике у нас будет плавно увеличивать  и уменьшать свою яркость светодиод.

В микросхеме 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() отключаем ШИМ. После чего в цикле плавно увеличиваем и уменьшаем коэффициент заполнение, что в данном случаи нам плавно увеличивает, а после уменьшает яркость светодиода.