# Библиотека для работы с сервоприводами from gpiozero import Servo from time import sleep # Библиотека для расширенных методов обработки чисел import numpy as np # Создаём объект для работы с сервоприводом # - pin: номер пина, к которому подключён сервопривод # WPIx, нумерация WiringPi, где x — номер пина # GPIOx, нумерация GPIO/BCM, где x — номер пина # - min_pulse_width: ширина импульса, соответствующая # максимальной скорости по часовой стрелке CW # Опциональный и по умолчанию стоит: 0.001 c = 1000 мкс # - max_pulse_width: ширина импульса, соответствующая # максимальной скорости против часовой стрелки CCW # Опциональный и по умолчанию стоит: 0.002 c = 2000 мкс # Подробности нумерации: https://gpiozero.readthedocs.io/en/stable/recipes.html#pin-numbering # Каждая модель сервопривода имеет свои характеристики servo = Servo("WPI6", min_pulse_width=0.000544, max_pulse_width=0.0024) # Задаём максимальную скорость вращения сервопривода # По часовой (CW) и против (CCW) часовой стрелки SPEED_MAX_CW = -1 SPEED_MAX_CCW = 1 SPEED_STOP = 0 # Шаг сервопривода step_angle_servo = 0.005 while True: # Перебираем значения скорости вала сервы от 0 до максимального по часовой стрелке for val in np.arange(SPEED_STOP, SPEED_MAX_CW, -step_angle_servo): servo.value = val sleep(0.02) # Останавливаем сервопривод servo.value = SPEED_STOP # Ждём 1 секунду sleep(1) # Перебираем значения скорости вала сервы от 0 до максимального против часовой стрелки for val in np.arange(SPEED_STOP, SPEED_MAX_CCW, step_angle_servo): servo.value = val sleep(0.02) # Останавливаем сервопривод servo.value = SPEED_STOP # Ждём 1 секунду sleep(1)