2014-11-03 23:02:34 +00:00
|
|
|
# Control bot that throws treats using a servo
|
|
|
|
|
|
|
|
import pyb
|
2014-11-22 16:33:41 +00:00
|
|
|
import motion
|
|
|
|
|
|
|
|
class TreatThrower(object):
|
|
|
|
"""Watch for trigger and throw treat using servo
|
|
|
|
when trigger is activated."""
|
|
|
|
|
|
|
|
servoCenter = 1440
|
|
|
|
servoSpeed = 100
|
|
|
|
servoTime = 1450
|
|
|
|
ledNum = 3
|
|
|
|
|
|
|
|
def __init__(self, sensor, servonum = 3):
|
|
|
|
self._sensor = sensor
|
|
|
|
self._servo = pyb.Servo(servonum)
|
|
|
|
mn, mx, _, a, s = self._servo.calibration()
|
|
|
|
self._servo.calibration(mn, mx, TreatThrower.servoCenter, a, s)
|
|
|
|
self._servo.speed(0)
|
|
|
|
self._led = pyb.LED(TreatThrower.ledNum)
|
|
|
|
|
|
|
|
def runservo( self, time ) :
|
|
|
|
'''Run the servo for the given time.'''
|
|
|
|
self._servo.speed(TreatThrower.servoSpeed)
|
|
|
|
pyb.delay(time)
|
|
|
|
self._servo.speed(0)
|
|
|
|
|
|
|
|
def throwit( self ):
|
|
|
|
self._led.on()
|
|
|
|
self.runservo(TreatThrower.servoTime)
|
|
|
|
self._led.off()
|
|
|
|
while(self._sensor.trigger):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def adjust( self, time = 50 ) :
|
|
|
|
'''Adjust the servo position by running the servo
|
|
|
|
for the given amount of time.'''
|
|
|
|
for i in range(step) :
|
|
|
|
self.runservo(50)
|
|
|
|
|
|
|
|
def run( self ) :
|
|
|
|
sw = pyb.Switch()
|
|
|
|
while(not sw()):
|
|
|
|
if self._sensor.trigger:
|
|
|
|
self.throwit()
|
|
|
|
pyb.delay(20)
|
2014-11-03 23:02:34 +00:00
|
|
|
|