Это старая версия документа!
Мы научились пользоваться аппаратным генератором ШИМ. Попробуем с помощью него сделать что-то более интересное, чем просто светящийся не в полную мощность светодиод. Например, попробуем изменять яркость светодиода во времени по определенному закону.
Рисунок 1. Электрическая принципиальная схема эксперимента
Рисунок 2. Монтажная схема эксперимента
Изменений в схеме, по сравнению с предыдущим экспериментом, нет
from machine import Pin, PWM import time import math _init() LedPin = 15 led = Pin(LedPin, Pin.OUT) pwmLed = PWM(led) def pulse(l, t): for i in range(20): l.duty(int(math.sin(i / 10 * math.pi) * 500 + 500)) time.sleep_ms(t) while 1: pulse(pwmLed, 50)
В программе мы подключили дополнительную библиотеку math
она содержит математические функции, такие как синус.
Кроме того, мы впервые, столкнулись с подпрограммой. Подпрограммы нужны для того, чтобы можно было использовать один и тот же кусок кода несколько раз в программе не копируя постоянно одно и то же. Гораздо удобнее вынести такой код в отдельную подпрограмму и вызывать ее всякий раз, когда она нужна.
Кроме того подпрограмма может принимать параметры и возвращать данные. Чтобы лучше понять что это значит, напишем простейшую подпрограмму для сложения двух чисел.
def summator(a, b): c = a + b return c result = summator(2, 3)
Здесь мы объявили подпрограмму с именем summator
и указали, что она принимает на вход два параметра. Первый параметр будет записан в переменную a
, второй в переменную b
. Далее идет тело подпрограммы, оно выделено отступом от начала строки. В коде подпрограммы мы складываем переменные a
и b
и записываем результат сложения в переменную c
. И возвращаем полученный результат с помощью оператора return
А основная программа состоит только из одной строки, в которой мы вызываем подпрограмму summator
, передавая ей в качестве параметров два числа - 2 и 3. Подпрограмма складывает их и полученный результат оказывается в переменной result
Подпрограммы, которые принимают параметры и возвращают результат принято называть функциями. В нашем эксперименте мы объявили функцию pulse
она принимает в качестве параметров объект ШИМ и число— время задержки. pulse
не возвращает результата.