如何在 class 的 __init__ 函数中使用 Raspberry pi gpio setup 和 pwm 命令?
How can I use Raspberry pi gpio setup and pwm commands in __init__ function of a class?
我是面向对象的新手 programming.I 正在使用 Raspberry pi 并且我正在构建许多具有不同 GPIO 引脚的 classes。我不知道如何构建设置和 pwm 命令。所有这些都应该远离 classes 还是我应该将它们放在每个 class 的 init 函数中? init 函数中的 OOP 将如何变化?你能给我看一个关于这段代码的例子吗?
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)
Question: gpio setup and pwm commands in init function of a class?
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)
我是面向对象的新手 programming.I 正在使用 Raspberry pi 并且我正在构建许多具有不同 GPIO 引脚的 classes。我不知道如何构建设置和 pwm 命令。所有这些都应该远离 classes 还是我应该将它们放在每个 class 的 init 函数中? init 函数中的 OOP 将如何变化?你能给我看一个关于这段代码的例子吗?
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)
Question: gpio setup and pwm commands in init function of a class?
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)