PWM
ШИМ (PWM) — широтно-импульсная модуляция. Это может звучать сложно, но на самом деле это просто умный способ управления мощностью, подаваемой на такие устройства, как светодиоды, зуммеры и сервоприводы.
ШИМ состоит из двух основных параметров:
- Частота (Frequency)
- Коэффициент заполнения (Duty Cycle)
Базовое использование
PWM(slot) -> Pin
Чтобы создать объект PWM, вызовите PWM(slot).
Аргументы:
slot (string | int | tuple)— метка слота ("A", "B", "C", "D", "E", "F", "G", "H"), порт пина (0, 2 и т.д.), кортеж (0, Pin.OUT)
Возвращает:
Возвращает цифровой выход Pin для slot.
from pibody import PWM
pwm = PWM("A")
.freq(value | None) -> None | int
Аргументы:
value (int)— необязательный параметр, задающий частоту ШИМ. Полезный диапазон: [20, 5000]. По умолчанию: 0
Если value пусто, метод возвращает частоту, использованную ранее.
pwm.freq(100)
print(pwm.freq()) # 100
.duty(value | None) -> None | float
Аргументы:
value (float)— необязательный параметр, задающий коэффициент заполнения ШИМ. Может принимать значение в диапазоне [0, 1.0]. По умолчанию: 0
Если value пусто, метод возвращает коэффициент заполнения, использованный ранее.
pwm.duty(0.5)
print(pwm.duty()) # 0.5
.duty_u16(value | None) -> None | int
Получить или установить коэффициент заполнения ШИМ как 16-битное значение.
Аргументы:
value (int)— необязательный параметр, задающий коэффициент заполнения ШИМ. Может принимать значение в диапазоне [0, 65535]. По умолчанию: 32768
Если value пусто, метод возвращает коэффициент заполнения, использованный ранее.
pwm.duty_u16(32768)
print(pwm.duty_u16()) # 32768
Примеры
Вы можете управлять светодиодом с помощью ШИМ для изменения яркости, используя функции .freq() и .duty().
Подключите модуль LED к слоту "A" и запустите код ниже. Вы увидите, как ШИМ влияет на работу светодиода.
from pibody import PWM
pwm = PWM("A") # подключите LED к "A"
pwm.freq(100)
pwm.duty(0.5)
Другие функции
.deinit()
Отключает выход ШИМ и освобождает пин.
pwm.deinit()
.duty_ns(value | None) -> None | int
Получить или установить коэффициент заполнения ШИМ в наносекундах. Значение в наносекундах должно быть между 0 и общим периодом вашей частоты. Например, если вы установили частоту 1000 Гц (период = 1,000,000 нс), .duty_ns() должен находиться в диапазоне [0, 1000000].
Аргументы:
value (int)— необязательный параметр, задающий коэффициент заполнения в наносекундах
Если value пусто, метод возвращает коэффициент заполнения, использованный ранее.
data = pwm.duty_ns()
print(data)