1

我希望我解释得足够好!

我正在创建一个机器人套件,它将命令从 pi 发送到 arduino。目前我只是用它控制伺服系统,我有测试代码可以工作。然而,作为儿童使用的,我想让它尽可能简单易用。

目前这是我的代码的类似物:

class robot(object)
    def __init___(self):
        self.servos = [0,0,0,0]

    def set_servo(self,which_servo,what_position):
        #sends serial data
        #changes servo position in servos[]

目前我必须使用函数 robot().set_servo() 来设置伺服和 robot().servos[0] 来读取位置。

我希望能够做的是。为了能够设置一个位置并通过简单地发送串行数据

robot().servo[0] = 10 

然后这将改变伺服[0] 的值(显然它确实如此),但也会向我的 arduino 发送一个串行命令。重要的是,这一切都必须包含在 Robot() 对象中,这样最终用户就不必运行任何其他函数来检查伺服列表是否发生了变化。

4

1 回答 1

0

如果伺服由属性对象组成,这只是实现合适的设置器的问题。也就是说,您不应该使用整数而是使用合适的属性对象来初始化伺服。即:引入一个类servo like

class Servo(object):
    def __init__(self, which_servo, angle = 0):
        self._angle = angle;
        self._servo_no = which_servo

    def get_angle(self):
        return self._angle
    def set_angle(self, value):
        self._angle = value
        print "replace this print statement with the code to set servo, notice that this method knows the servo number AND the desired value"

    def del_angle(self):
        del self._angle
    angle = property(get_angle, set_angle, del_angle, "I'm the 'angle' property.")

然后像初始化你的机器人

class robot(object)
    def __init___(self):
        self.servos = [Servo(0), Servo(1), Servo(2), Servo(3)]
于 2013-05-23T07:53:35.573 回答