Hello,
I have a, to me, piece of complicated text in Python3 format.
Anyway…
I have been unable to make the conversion of the wrapper to another Python3 file.
So, here is the source in case you are interested:
`
from time import sleep
relevant registers
MODE1 = 0x00
MODE2 = 0x01
LED = 0x06
ALL_LED = 0xFA
PRE_SCALE = 0xFE
class Pca9685:
def init( self, bus, addr ):
self.addr = 0b10000000 | addr
self.bus = bus
self.write_reg( MODE1, 1 << 5 ) # initialize MODE1 register
sleep( 500e-6 ) # wait 500us to allow oscillator to power up
def read_reg( self, reg )
return self.read_regs( reg, 1 )[0]
def write_reg( self, reg, value ):
return self.write_regs( reg, [ value ] )
def read_regs( self, reg, count ):
assert reg in range( 0, 256 )
assert count in range( 1, 257-reg )
return self.bus.read_i2c_block_data( self.addr, reg, count )
def write_regs( self, reg, values ):
assert reg in range( 0, 256 )
return self.bus.write_i2c_block_data( self.addr, reg, values )
def get_pwm( self, output ):
assert output in range( 0, 16 )
reg = LED + 4 * output
[ on_l, on_h, off_l, off_h ] = self.read_regs( reg, 4 )
on = on_l | on_h << 8
off = off_l | off_h << 8
phase = on
duty = ( off - on ) & 0xfff
if off & 0x1000:
duty = 0
elif on & 0x1000:
duty = 4096
return ( duty, phase )
def set_pwm( self, output, duty, phase=0 ):
assert duty in range( 0, 4097 )
assert phase in range( 0, 4096 )
if output == ‘all’:
reg = ALL_LED
else:
assert output in range( 0, 16 )
reg = LED + 4 * output
on = phase
off = ( duty + phase ) & 0xfff
if duty == 0:
off |= 0x1000
elif duty == 4096:
on |= 0x1000
on_l = on & 0xff
on_h = on >> 8
off_l = off & 0xff
off_h = off >> 8
self.write_regs( reg, [ on_l, on_h, off_l, off_h ] )
`
Now…
How would I actually use this source to promote a servo movement with the ServoCape?
I have tried particular source from different tutorials, the python.org site, and examples of classes online.
None really cover the BBB and expansion Capes like this source is listed. Anyway…
What steps if any would you take to make a servo move w/ this Cape and source?
- Would I need a Adafruit_BBIO library for GPIO/PWM or a similar library?
Seth