Pololu Maestro Servo Controller
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Products
- Pololu Micro Maestro 6-Channel USB Servo Controller
- Pololu Mini Maestro 12-Channel USB Servo Controller
User guide
Dev Guide
Android
Node.js
https://www.npmjs.org/package/pololu-maestro
C
http://www.pololu.com/docs/0J40/5.h.1
gcc setmaestro.c -o setmaestro ./setmaestro /dev/tty.usbmodem00072841 0 6000
Bash
http://www.pololu.com/product/1350
> system_profiler SPUSBDataType ... Pololu Micro Maestro 6-Servo Controller: Product ID: 0x0089 Vendor ID: 0x1ffb Version: 1.02 Serial Number: 00072848 Speed: Up to 12 Mb/sec Manufacturer: Pololu Corporation Location ID: 0x14300000 / 1 Current Available (mA): 500 Current Required (mA): 100 ...
http://www.pololu.com/docs/0J40/5.h.4
#!/bin/bash # Sends a Set Target command to a Pololu Maestro servo controller # via its virtual serial port. # Usage: maestro-set-target.sh DEVICE CHANNEL TARGET # Linux example: bash maestro-set-target.sh /dev/ttyACM0 0 6000 # Mac OS X example: bash maestro-set-target.sh /dev/cu.usbmodem00234567 0 6000 # Windows example: bash maestro-set-target.sh '\\.\USBSER000' 0 6000 # Windows example: bash maestro-set-target.sh '\\.\COM6' 0 6000 # CHANNEL is the channel number # TARGET is the target in units of quarter microseconds. # The Maestro must be configured to be in USB Dual Port mode. DEVICE=$1 CHANNEL=$2 TARGET=$3 byte() { printf "\\x$(printf "%x" $1)" } { byte 0x84 byte $CHANNEL byte $((TARGET & 0x7F)) byte $((TARGET >> 7 & 0x7F)) } > $DEVICE
Robot Operating System
- http://www.youtube.com/watch?v=NcO6oT-91F8
- http://spinlock.blogspot.fr/2012/02/simple-servo-actuation-in-ros.html
Python
#!/usr/bin/python import math, time, serial def get_command(channel, target): target = target * 4 serialBytes = chr(0x84)+chr(channel)+chr(target & 0x7F)+chr((target >> 7) & 0x7F) return serialBytes ser = serial.Serial('/dev/ttyACM0') ser.write(chr(0xAA)) ser.flush() i=0.0 while(i<2*math.pi): i = i+0.01 print math.sin(i) ser.write(get_command(1,int((math.sin(i)*300)+1500))) ser.write(get_command(0,int((math.sin(i)*300)+1500))) time.sleep(0.002) ser.write(get_command(1,0)) ser.write(get_command(0,0)) ser.close()