#python #oop #raspberry-pi #gpio
#python #ооп #raspberry-pi #gpio
Вопрос:
Я новичок в объектно-ориентированном программировании.Я работаю с Raspberry pi и создаю множество классов с разными выводами GPIO. Я не знаю, как создавать команды setup и pwm. Все они должны оставаться вне классов или я должен поместить их в функцию инициализации для каждого класса? Как это изменится для ООП в функции инициализации? Можете ли вы показать мне пример этого кода?
GPIO.setup(33, GPIO.OUT)
pwmservo=GPIO.PWM(33,50)
pwmservo.start(6)
class zmove(object):
def __init__(self):
pass
def update(self,angle):
duty=float(angle)/10.0 2.5
pwmservo.ChangeDutyCycle(duty)
time.sleep(0.3)
Комментарии:
1. GPIO Zero имеет
Servo
иAngularServo
классы: gpiozero.readthedocs.io/en/stable/api_output.html#servo
Ответ №1:
Вопрос: команды настройки gpio и pwm в функции инициализации класса?
class PWMServo:
"""
Base class doing setup and get PWM instance
"""
def __init__(self, pin):
GPIO.setup(pin, GPIO.OUT)
self.pwm = GPIO.PWM(pin, 50)
self.pwm.start(6)
def change_duty_cycle(self, duty):
self.pwm.ChangeDutyCycle(duty)
time.sleep(0.3)
class ZMove(PWMServo):
"""
Inherit from class PWMServo
ZMove use PIN 33
"""
def __init__(self):
super().__init__(pin=33)
self.pwm.start(6)
def update(self,angle):
duty=float(angle)/10.0 2.5
self.change_duty_cycle(duty)
if __name__ == '__main__':
zmove = ZMove()
zmove.update(45.0)
# Or, call direct
zmove.change_duty_cycle(45.0/10.0 2.5)