opi-mg996r/mg996r.py
Evgeny Zinoviev dd54f14917 initial
2021-10-31 16:30:35 +03:00

29 lines
751 B
Python

import logging
from time import sleep
from orangepwm import OrangePwm
from pyA20.gpio import gpio
from pyA20.gpio import port
class MG996R:
def __init__(self, pin: str, prev: int = 360):
self.pwm = OrangePwm(50, getattr(port, pin))
self.prev = prev
gpio.init()
logging.debug(f'Initialized MG996R class with starting degree of {prev}')
def move(self, deg, delay: int = 0):
distance = abs(self.prev - deg)
sleep_time = distance / 60 * .5 + delay
duty = deg / 18 + 2
logging.debug(f'Moving to {deg} degrees, duty {duty:.0f}%, sleeping for {sleep_time:.1f} sec.')
self.prev = deg
self.pwm.start(duty)
sleep(sleep_time + delay)
self.pwm.stop()