Module ServoMotor
[hide private]
[frames] | no frames]

Source Code for Module ServoMotor

 1  # ServoMotor.java 
 2   
 3  ''' 
 4  Class that represents a servo motor. 
 5   
 6   This software is part of the raspibrick module. 
 7   It is Open Source Free Software, so you may 
 8   - run the code for any purpose 
 9   - study how the code works and adapt it to your needs 
10   - integrate all or parts of the code in your own programs 
11   - redistribute copies of the code777 
12   - improve the code and release your improvements to the public 
13   However the use of the code is entirely your responsibility. 
14   ''' 
15   
16  from Tools import Tools 
17  from RobotInstance import RobotInstance 
18  import SharedConstants 
19   
20 -class ServoMotor():
21 ''' 22 Class that represents a servo motor. 23 '''
24 - def __init__(self, id, home, inc):
25 ''' 26 Creates a servo motor instance and sets it at home position. For most servos: 27 home = 300, inc = 2 28 @param id: the id of the motor (0..3) 29 @param home: the PWM duty cycle for the home position (0..4095) 30 @param inc: the increment factor (inc_duty/inc_position) 31 ''' 32 self.id = id 33 self.home = home 34 self.inc = inc 35 self._checkRobot() 36 self.robot = RobotInstance.getRobot() 37 self.robot.pwm.setDuty(SharedConstants.SERVO_0 + self.id, home) 38 Tools.debug("ServoMotor instance created")
39
40 - def setPos(self, position):
41 ''' 42 Sets the relative position of the servo motor. 43 @param position: the position with respect to home and using the inc_duty/inc_position factor 44 For most servo motors in range -200 .. 200 45 ''' 46 self._checkRobot() 47 pos = self.home + self.inc * position 48 self.robot.pwm.setDuty(SharedConstants.SERVO_0 + self.id, pos)
49
50 - def setPosAbs(self, position):
51 ''' 52 Sets the absolute position of the servo motor. 53 @param position: the position in arbitrary units in range 0..4095 (determines PWM duty cycle) 54 For most servo motors in range 100..500 55 ''' 56 self._checkRobot() 57 self.robot.pwm.setDuty(SharedConstants.SERVO_0 + self.id, position)
58
59 - def _checkRobot(self):
60 if RobotInstance.getRobot() == None: 61 raise Exception("Create Robot instance first")
62