Это старая версия документа!
Среди цифровых пинов контроллера выделяются некоторые со знаком ~
, данные пины поддерживают сигнал ШИМ (PWM), то есть можно создать сигнал который имеет определенное напряжение и продолжительность.
Рисунок 1. Электрическая принципиальная схема эксперимента
Рисунок 2. Монтажная схема эксперимента
Единственным отличием этой схемы, от предыдущей, является то, что светодиод мы подключили к другому выводу микроконтроллера, к выводу 15. Дело в том, что периферийные устройства подключаются только к определенным ножкам из-за аппаратных особенностей реализации микросхемы. И на 16 выводе аппаратный ШИМ не возможен.
from machine import Pin, PWM import time _init() LedPin = 15 led = Pin(LedPin, Pin.OUT) pwmLed = PWM(led) pwmLed.freq(200) while True: pwmLed.duty(200) time.sleep(1) pwmLed.duty(1023) time.sleep(1)
В первой строке мы указываем интерпретатору Python, что из системной библиотеки machine
мы хотим импортировать не только Pin
, но и PWM
from machine import Pin, PWM
Далее мы, как обычно, создаем объект Pin
, настроенный как выход. Но на этом настройка не заканчивается. Мы создаем объект PWM
, передавая в качестве параметра только что созданный Pin
led = Pin(LedPin, Pin.OUT) pwmLed = PWM(led)
Теперь мы получили объект для управления аппаратным генератором ШИМ, подключенным к 15 выводу микроконтроллера. Теперь нужно настроить и его. Как мы уже знаем, у сигнала с широтно- импульсной модуляцией есть два параметра- частота и коэффициент заполнения или скважность. Выберем частоту достаточно большую, чтобы глаз не замечал мерцания, например, 200 герц
pwmLed.freq(200)
Настройки закончили, теперь будем управлять яркостью светодиода:
while True: pwmLed.duty(200) time.sleep(1) pwmLed.duty(1023) time.sleep(1)
В бесконечном цикле мы устанавливаем значение ШИМ равное 200, а потом 1023 с задержками по 1 секунде. В результате наш светодиод одну секунду горит тускло, потом одну секунду горит ярко.
Осталось разобраться что это за цифры 200 и 1023, которые мы передали в качестве параметров в функцию duty()
. Это и есть коэффициент заполнения, только здесь он он выражен не в процентах, а числом от 0 до 1023, где 0 — это 0%, а 1023 — это 100%.
Когда тебе надоест смотреть на результат работы этой программы, то, как обычно, останови ее через кнопку остановки. Программа завершится, а работа ШИМ генератора— нет, ведь он не привязан к нашей программе, это отдельное устройство, которое мы лишь настроили и запустили, но работает оно само.
Попробуй изменить программу так, чтобы светодиод имел не два, а 3 или более вариантов яркости, которые переключались бы по- очереди.