GuyCarver-MicroPython/TreatThrower.py

49 wiersze
1.2 KiB
Python

# Control bot that throws treats using a servo
import pyb
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)