ШИМ ( Широтно-импульсная модуляция ) также еще называется PWM ( pulse-width modulation ) - это процесс управления мощности методом пульсирующего включения и выключения прибора.
Не все пины raspberry pi имеют Широтно-импульсную модуляцию. ШИМ можно настроить с GPIO2 по GPIO27. Вот сама распиновка raspberry pi:
Пример работы ШИМ будем показывать на светодиоде, он должен будет менять яркость свечения. На пине к которому мы подключим светодиод, будет очень быстро отключаться и снова включаться напряжение и глаз не заметит отключения, но будет видно, что диод стал светиться менее ярко.
Подключать светодиод будем по следующей схеме:
Как показано на принципиальной схеме, мы собираемся подключить светодиод между PIN7 (GPIO4) и PIN6 (Земля). Любой пин Raspberry pi не выдает больше 15 мА , поэтому для ограничения тока мы подключаем резистор 220 Ом в разрез.
После подключения всех компонентов так как показано на схеме нужно написать программу на языке python. Программа выглядит следующим образом:
import RPi.GPIO as IO #Подключение библиотеки для работы с GPIO
import time #Подключение библиотеки для работы с временем
IO.setwarnings(False) #Не показывать предупреждений
IO.setmode (IO.BCM)
IO.setup(4,IO.OUT) # GPIO4 объявляем как выход
p = IO.PWM(4,100) #объявляем GPIO4 как ШИМ с частотой 100mhz
p.start(0)
while 1: #бесконечный цикл
#Цикл увеличения яркости
for x in range (50): #Выполнить цикл 50 раз
p.ChangeDutyCycle(x) #Изменить скважность импульса для изменения яркости светодиода
time.sleep(0.1)
#Цикл уменьшения яркости
for x in range (50):
p.ChangeDutyCycle(50-x)
time.sleep(0.1)
Но так как здесь особо непонятно и не очень наглядно видно сам код, я оставлю ссылку на скачивание данной программы, я ее назвал PWM.py. Скачать можно по ссылке: https://yadi.sk/d/1Kv-TMLm3NjmqA
Ну чтож, теперь если мы запустим данную программу на raspberry pi и увидим, как светодиод сначала постепенно загорается, а после того как загорелся в полную яркость, начнет постепенно тухнуть.
Вот мы и познакомились с принципом работы ШИМ сигнала на Rasperry pi. Надеюсь кому-то было познавательно и полезно.