6 n_channel( n_ch ), reg_PWM( PWM_r ), oe_pin( oe ), bp( NULL )
19 bp[ ch ] = (uint8_t)(value * 255.0);
30 bp[ i ] = (uint8_t)(values[ i ] * 255.0);
35 v[ i ] = (uint8_t)(values[ i ] * 255.0);
65PCA995x::PCA995x( uint8_t n_ch, uint8_t PWM_r, uint8_t IREF_r, uint8_t IREFALL_r, uint8_t oe ) :
66 LEDDriver( n_ch, PWM_r, oe ), reg_IREF( IREF_r ), reg_IREFALL( IREFALL_r )
82 digitalWrite(
oe_pin , 0 );
98 PCA995x( n_ch, PWM_r, IREF_r, IREFALL_r, oe ),
99 I2C_device( i2c_address )
111 write_r8( reg, val );
116 reg_w( 0x80 | reg, vp, len );
124 PCA995x( n_ch, PWM_r, IREF_r, IREFALL_r, oe )
136 digitalWrite( SS, LOW );
137 SPI.transfer( data, size );
138 digitalWrite( SS, HIGH );
143 uint8_t data[] = { reg, val };
145 txrx( data,
sizeof( data ) );
150 uint8_t data[ len * 2 ];
152 for (
int i = 0; i < len; i++ ) {
153 data[ i * 2 + 0 ] = reg + (i * 2);
154 data[ i * 2 + 1 ] = vp[ i ];
157 for (
int i = 0; i < len * 2; i += 2 )
173 uint8_t data[ 2 ] = { 0xFF, 0xFF };
176 txrx( data,
sizeof( data ) );
183 for (
int i = 0; i < len; i++ ) {
184 *vp++ =
reg_r( ((reg + i) << 1) | 0x01 );
212 v[ i ] = (uint8_t)(values[ i ] * 255.0);
236 uint8_t
init[] = { 0xAA, 0xAA, 0xAA, 0xAA };
240 irefall( (uint8_t)(current * 255.0) );
257 uint8_t
init[] = { 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA };
261 irefall( (uint8_t)(current * 255.0) );
278 uint8_t
init[] = { 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA };
280 digitalWrite( SS, HIGH );
286 irefall( (uint8_t)(current * 255.0) );
void pwm(uint8_t ch, float value)
LEDDriver(uint8_t n_ch, uint8_t PWM_r, uint8_t oe)
void buffer_enable(bool flag)
virtual void reg_access(uint8_t reg, uint8_t val)=0
PCA9955B(uint8_t i2c_address=(0xBC > > 1))
PCA9956B(uint8_t i2c_address=(0x02 > > 1))
PCA995x_I2C(uint8_t i2c_address, uint8_t n_ch, uint8_t PWM_r, uint8_t IREF_r, uint8_t IREFALL_r, uint8_t oe=8)
void reg_access(uint8_t reg, uint8_t val)
PCA995x_SPI(uint8_t n_ch, uint8_t PWM_r, uint8_t IREF_r, uint8_t IREFALL_r, uint8_t oe=9)
uint8_t reg_r(uint8_t reg)
void irefall(uint8_t iref)
uint8_t read_r8(uint8_t reg)
void reg_access(uint8_t reg, uint8_t val)
void write_r8(uint8_t reg, uint8_t val)
void reg_w(uint8_t reg, uint8_t val)
void pwm(uint8_t ch, float value)
void txrx(uint8_t *data, int size)
void irefall(uint8_t iref)
virtual void init(float current)=0
const uint8_t reg_IREFALL
PCA995x(uint8_t n_ch, uint8_t PWM_r, uint8_t IREF_r, uint8_t IREFALL_r, uint8_t oe=8)
virtual void begin(float current=0.1, board env=NONE, bool buffered=false)