This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
servoclass-py [2015/04/30 08:40] zoza |
servoclass-py [2015/04/30 08:42] (current) zoza |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== servoclass.py ====== | ====== servoclass.py ====== | ||
- | external functions for different LED behaviours | + | external functions for motors control |
<code python> | <code python> | ||
+ | #!/usr/bin/env python | ||
+ | |||
+ | """servoclass.py: connects to usbport and defines the movement of servo motors""" | ||
+ | |||
import serial, glob | import serial, glob | ||
+ | |||
+ | ### assign arduino's serial port | ||
try: | try: | ||
- | portled = glob.glob("/dev/arduino-leds")[0] # as assigned in udev rules /etc/udev/rules.d ; http://hackaday.com/2009/09/18/how-to-write-udev-rules/ | + | 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: | except IndexError: | ||
- | portled = glob.glob("/dev/ttyACM0")[0] # fall back to a default first USB port address | + | portmotor = glob.glob("/dev/ttyUSB0")[0] # fall back to a default USB address |
- | print "portled", portled | + | # portled = glob.glob("/dev/tty*")[0] |
- | serled = serial.Serial(portled, 19200, timeout=1) | + | print "portmotor:", portmotor |
- | + | ### set up serial baud rate | |
- | def clearAll(): | + | sermotor = serial.Serial(portmotor, 9600, timeout=1) |
- | for j in range(4): | + | |
- | message = ("%d,0,0,0")%(j) | + | |
- | serled.write(message+'\n') | + | |
- | + | ||
- | def fadeIn(led, color): | + | |
- | for i in range(255)[::15]: | + | |
- | if color == "red": | + | |
- | r = i | + | |
- | g = 0 | + | |
- | b = 0 | + | |
- | elif color == "green": | + | |
- | r = 0 | + | |
- | g = i | + | |
- | b = 0 | + | |
- | message = (str(led)+",%d,%d,%d")%(r,g,b) | + | |
- | serled.write(message+"\n") | + | |
- | + | ||
- | def fadeInRed(led): | + | |
- | for i in range(255)[::15]: | + | |
- | message = (str(led)+",%d,0,0")%(i) | + | |
- | serled.write(message+"\n") | + | |
- | + | ||
- | def fadeInGreen(led): | + | |
- | for i in range(255)[::15]: | + | |
- | message = (str(led)+",0,0,%d")%(i) | + | |
- | serled.write(message+"\n") | + | |
- | + | ||
- | def fadeInYellow(led): | + | |
- | for i in range(255)[::15]: | + | |
- | message = (str(led)+",%d,0,%d")%(i,i) | + | |
- | serled.write(message+"\n") | + | |
- | def fadeInPurple(led): | + | class Servo: |
- | for i in range(255)[::15]: | + | def __init__(self, servoID): |
- | message = (str(led)+",%d,%d,0")%(i,int(i*0.2)) | + | self.servoID = servoID |
- | serled.write(message+"\n") | + | self.stop() # when initiated, stop! |
- | def fadeInTurq(led): | + | def move(self, speed): |
- | for i in range(255)[::15]: | + | self.speed = speed |
- | message = (str(led)+",0,%d,%d")%(int(i*0.2),i) | + | if 0 <= self.speed <= 180: |
- | serled.write(message+"\n") | + | 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)" | ||
- | # fading OUT functions by colour: | + | def down_slow(self): |
+ | self.move(100) | ||
+ | #print "down_slow (100)" | ||
- | def fadeOutRed(led): | + | def down_medium(self): |
- | for i in range(255,0,-1)[::25]: | + | self.move(110) |
- | message = (str(led)+",%d,0,0")%(i) | + | #print "down_medium (110)" |
- | serled.write(message+"\n") | + | |
- | serled.write(str(led)+",0,0,0\n") | + | |
- | def fadeOutGreen(led): | + | def down_fast(self): |
- | for i in range(255,0,-1)[::25]: | + | self.move(120) |
- | message = (str(led)+",0,0,%d")%(i) | + | #print "down_fast (120)" |
- | serled.write(message+"\n") | + | |
- | serled.write(str(led)+",0,0,0\n") | + | |
- | def fadeOutYellow(led): | + | |
- | for i in range(255,0,-1)[::25]: | + | |
- | message = (str(led)+",%d,0,%d")%(i,i) | + | |
- | serled.write(message+"\n") | + | |
- | serled.write(str(led)+",0,0,0\n") | + | |
- | def fadeOutPurple(led): | + | def up(self): |
- | for i in range(255,0,-1)[::25]: | + | self.move(80) |
- | message = (str(led)+",%d,%d,0")%(i,int(i*0.2)) | + | #print "up (80)" |
- | serled.write(message+"\n") | + | |
- | serled.write(str(led)+",0,0,0\n") | + | |
- | def fadeOutTurq(led): | ||
- | for i in range(255,0,-1)[::25]: | ||
- | message = (str(led)+",0,%d,%d")%(int(i*0.2),i) | ||
- | serled.write(message+"\n") | ||
- | serled.write(str(led)+",0,0,0\n") | ||
</code> | </code> | ||