====== servoclass.py ====== external functions for motors control #!/usr/bin/env python """servoclass.py: connects to usbport and defines the movement of servo motors""" import serial, glob ### assign arduino's serial port try: portmotor = glob.glob("/dev/arduino-motors")[0] # as assigned in udev rules /etc/udev/rules.d ; http://hackaday.com/2009/09/18/how-to-write-udev-rules/ except IndexError: portmotor = glob.glob("/dev/ttyUSB0")[0] # fall back to a default USB address # portled = glob.glob("/dev/tty*")[0] print "portmotor:", portmotor ### set up serial baud rate sermotor = serial.Serial(portmotor, 9600, timeout=1) class Servo: def __init__(self, servoID): self.servoID = servoID self.stop() # when initiated, stop! def move(self, speed): self.speed = speed if 0 <= self.speed <= 180: sermotor.write(chr(255)) sermotor.write(chr(self.servoID)) sermotor.write(chr(self.speed)) else: print "Servo position must be an integer between 0 and 180.\n" def stop(self): self.move(90) #print "stop (90)" def down_slow(self): self.move(100) #print "down_slow (100)" def down_medium(self): self.move(110) #print "down_medium (110)" def down_fast(self): self.move(120) #print "down_fast (120)" def up(self): self.move(80) #print "up (80)"