机器人套件 - 通过更改变量来使用功能

时间:2013-05-23 07:01:51

标签: python serial-port arduino raspberry-pi

我希望我能够解释得这么好!

我正在创建一个机器人工具包,它将命令从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()来设置伺服和机器人()。伺服[0]来读取位置。

我希望能做的是。能够设置位置并通过简单地执行

来关键地发送串行数据
robot().servo[0] = 10 

然后这将改变servo [0]的值(显然它会这样做),但也会向我的arduino发送一个串行命令。重要的是,这一切必须包装在Robot()对象中,以便最终用户不必运行任何其他功能,以检查伺服列表是否已经发生变化。

1 个答案:

答案 0 :(得分:0)

如果伺服由property objects组成,这只是实现一个合适的setter的问题。那就是你不应该用整数来初始化伺服,而是使用合适的属性对象。那就是:引入类伺服,如

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)]