6 n_channel( n_ch ), reg_PWM( PWM_r ), oe_pin( oe )
25 v[ i ] = (uint8_t)(values[ i ] * 255.0);
34PCA995x::PCA995x( uint8_t n_ch, uint8_t PWM_r, uint8_t IREF_r, uint8_t IREFALL_r, uint8_t oe ) :
35 LEDDriver( n_ch, PWM_r, oe ), reg_IREF( IREF_r ), reg_IREFALL( IREFALL_r )
51 digitalWrite(
oe_pin , 0 );
65 PCA995x( n_ch, PWM_r, IREF_r, IREFALL_r, oe ),
66 I2C_device( i2c_address )
83 reg_w( 0x80 | reg, vp, len );
91 PCA995x( n_ch, PWM_r, IREF_r, IREFALL_r, oe )
103 digitalWrite( SS, LOW );
104 SPI.transfer( data, size );
105 digitalWrite( SS, HIGH );
110 uint8_t data[] = { reg, val };
112 txrx( data,
sizeof( data ) );
117 uint8_t data[ len * 2 ];
119 for (
int i = 0; i < len; i++ ) {
120 data[ i * 2 + 0 ] = reg + (i * 2);
121 data[ i * 2 + 1 ] = vp[ i ];
124 for (
int i = 0; i < len * 2; i += 2 )
140 uint8_t data[ 2 ] = { 0xFF, 0xFF };
143 txrx( data,
sizeof( data ) );
150 for (
int i = 0; i < len; i++ ) {
151 *vp++ =
reg_r( ((reg + i) << 1) | 0x01 );
179 v[ i ] = (uint8_t)(values[ i ] * 255.0);
203 uint8_t
init[] = { 0xAA, 0xAA, 0xAA, 0xAA };
207 irefall( (uint8_t)(current * 255.0) );
224 uint8_t
init[] = { 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA };
228 irefall( (uint8_t)(current * 255.0) );
245 uint8_t
init[] = { 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA };
247 digitalWrite( SS, HIGH );
253 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)
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
virtual void begin(float current=0.1, board env=NONE)
PCA995x(uint8_t n_ch, uint8_t PWM_r, uint8_t IREF_r, uint8_t IREFALL_r, uint8_t oe=8)