LEDDriver_NXP_Arduino 0.3.0
LED driver device operation sample code for Arduino
Loading...
Searching...
No Matches
LEDDriver.h
1
9#ifndef ARDUINO_LED_DRIVER_NXP_ARD_H
10#define ARDUINO_LED_DRIVER_NXP_ARD_H
11
12#include <Arduino.h>
13#include <stdint.h>
14
15#include <I2C_device.h>
16#include <SPI.h>
17
27{
28public:
29 enum board {
30 NONE,
31 ARDUINO_SHIELD,
32 };
33
34 LEDDriver( uint8_t n_ch, uint8_t PWM_r, uint8_t oe );
35 virtual ~LEDDriver();
36 virtual void reg_access( uint8_t reg, uint8_t val ) = 0;
37 virtual void reg_access( uint8_t reg, uint8_t *vp, int len ) = 0;
38
44 void pwm( uint8_t ch, float value );
45
51 void pwm( float* values );
52
57 void buffer_enable( bool flag );
58
63 void flush( void );
64
65protected:
66 const uint8_t n_channel;
67 const uint8_t reg_PWM;
68 const uint8_t oe_pin;
69private:
70 uint8_t *bp;
71};
72
73
74
82class PCA995x : public LEDDriver
83{
84public:
85 PCA995x( uint8_t n_ch, uint8_t PWM_r, uint8_t IREF_r, uint8_t IREFALL_r, uint8_t oe = 8 );
86 virtual ~PCA995x();
87
88 virtual void begin( float current = 0.1, board env = NONE, bool buffered = false );
89 virtual void init( float current ) = 0;
90
95 void irefall( uint8_t iref );
96
97protected:
98 const uint8_t reg_IREF;
99 const uint8_t reg_IREFALL;
100};
101
102
103
104class PCA995x_I2C : public PCA995x, public I2C_device
105{
106public:
107 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 );
108 virtual ~PCA995x_I2C();
109
110 void reg_access( uint8_t reg, uint8_t val );
111 void reg_access( uint8_t reg, uint8_t *vp, int len );
112};
113
114
115
116class PCA995x_SPI : public PCA995x
117{
118public:
119 PCA995x_SPI( uint8_t n_ch, uint8_t PWM_r, uint8_t IREF_r, uint8_t IREFALL_r, uint8_t oe = 9 );
120 virtual ~PCA995x_SPI();
121
122 void txrx( uint8_t *data, int size );
123
124 void reg_access( uint8_t reg, uint8_t val );
125 void reg_access( uint8_t reg, uint8_t *vp, int len );
126 void reg_w( uint8_t reg, uint8_t val );
127 void reg_w( uint8_t reg, uint8_t *vp, int len );
128 uint8_t reg_r( uint8_t reg );
129 void reg_r( uint8_t reg, uint8_t *vp, int len );
130 void write_r8( uint8_t reg, uint8_t val );
131 uint8_t read_r8( uint8_t reg );
132
137 void irefall( uint8_t iref );
138
139 void pwm( uint8_t ch, float value );
140 void pwm( float* values );
141};
142
143
144
153class PCA9955B : public PCA995x_I2C
154{
155public:
157 const static uint8_t n_channel = 16;
158
160 enum reg_num {
161 MODE1, MODE2,
162 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3,
163 GRPPWM, GRPFREQ,
164 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7,
165 PWM8, PWM9, PWM10, PWM11, PWM12, PWM13, PWM14, PWM15,
166 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5, IREF6, IREF7,
167 IREF8, IREF9, IREF10, IREF11, IREF12, IREF13, IREF14, IREF15,
168 RAMP_RATE_GRP0, STEP_TIME_GRP0, HOLD_CNTL_GRP0, IREF_GRP0,
169 RAMP_RATE_GRP1, STEP_TIME_GRP1, HOLD_CNTL_GRP1, IREF_GRP1,
170 RAMP_RATE_GRP2, STEP_TIME_GRP2, HOLD_CNTL_GRP2, IREF_GRP2,
171 RAMP_RATE_GRP3, STEP_TIME_GRP3, HOLD_CNTL_GRP3, IREF_GRP3,
172 GRAD_MODE_SEL0, GRAD_MODE_SEL1,
173 GRAD_GRP_SEL0, GRAD_GRP_SEL1, GRAD_GRP_SEL2, GRAD_GRP_SEL3,
174 GRAD_CNTL,
175 OFFSET,
176 SUBADR1, SUBADR2, SUBADR3, ALLCALLADR,
177 PWMALL, IREFALL,
178 EFLAG0, EFLAG1, EFLAG2, EFLAG3,
179 };
180
185 PCA9955B( uint8_t i2c_address = (0xBC >> 1) );
186 virtual ~PCA9955B();
187
192 void init( float current );
193};
194
195class PCA9956B : public PCA995x_I2C
196{
197public:
199 const static uint8_t n_channel = 24;
200
202 enum reg_num {
203 MODE1, MODE2,
204 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3, LEDOUT4, LEDOUT5,
205 GRPPWM, GRPFREQ,
206 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5,
207 PWM6, PWM7, PWM8, PWM9, PWM10, PWM11,
208 PWM12, PWM13, PWM14, PWM15, PWM16, PWM17,
209 PWM18, PWM19, PWM20, PWM21, PWM22, PWM23,
210 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5,
211 IREF6, IREF7, IREF8, IREF9, IREF10, IREF11,
212 IREF12, IREF13, IREF14, IREF15, IREF16, IREF17,
213 IREF18, IREF19, IREF20, IREF21, IREF22, IREF23,
214 OFFSET,
215 SUBADR1, SUBADR2, SUBADR3, ALLCALLADR,
216 PWMALL, IREFALL,
217 EFLAG0, EFLAG1, EFLAG2, EFLAG3, EFLAG4, EFLAG5
218 };
223 PCA9956B( uint8_t i2c_address = (0x02 >> 1) );
224 virtual ~PCA9956B();
225
230 void init( float current );
231};
232
233class PCA9957 : public PCA995x_SPI
234{
235public:
237 const static uint8_t n_channel = 24;
238
240 enum reg_num {
241 MODE1, MODE2,
242 EFLAG0, EFLAG1, EFLAG2, EFLAG3, EFLAG4, EFLAG5,
243 LEDOUT0, LEDOUT1, LEDOUT2, LEDOUT3, LEDOUT4, LEDOUT5,
244 GRPPWM, GRPFREQ,
245 PWM0, PWM1, PWM2, PWM3, PWM4, PWM5,
246 PWM6, PWM7, PWM8, PWM9, PWM10, PWM11,
247 PWM12, PWM13, PWM14, PWM15, PWM16, PWM17,
248 PWM18, PWM19, PWM20, PWM21, PWM22, PWM23,
249 IREF0, IREF1, IREF2, IREF3, IREF4, IREF5,
250 IREF6, IREF7, IREF8, IREF9, IREF10, IREF11,
251 IREF12, IREF13, IREF14, IREF15, IREF16, IREF17,
252 IREF18, IREF19, IREF20, IREF21, IREF22, IREF23,
253 RAMP_RATE_GRP0, STEP_TIME_GRP0, HOLD_CNTL_GRP0, IREF_GRP0,
254 RAMP_RATE_GRP1, STEP_TIME_GRP1, HOLD_CNTL_GRP1, IREF_GRP1,
255 RAMP_RATE_GRP2, STEP_TIME_GRP2, HOLD_CNTL_GRP2, IREF_GRP2,
256 RAMP_RATE_GRP3, STEP_TIME_GRP3, HOLD_CNTL_GRP3, IREF_GRP3,
257 RAMP_RATE_GRP4, STEP_TIME_GRP4, HOLD_CNTL_GRP4, IREF_GRP4,
258 RAMP_RATE_GRP5, STEP_TIME_GRP5, HOLD_CNTL_GRP5, IREF_GRP5,
259 GRAD_MODE_SEL0, GRAD_MODE_SEL1, GRAD_MODE_SEL2,
260 GRAD_GRP_SEL0, GRAD_GRP_SEL1, GRAD_GRP_SEL2,
261 GRAD_GRP_SEL3, GRAD_GRP_SEL4, GRAD_GRP_SEL5,
262 GRAD_GRP_SEL6, GRAD_GRP_SEL7, GRAD_GRP_SEL8,
263 GRAD_GRP_SEL9, GRAD_GRP_SEL10, GRAD_GRP_SEL11,
264 GRAD_CNTL0, GRAD_CNTL1,
265 OFFSET,
266 PWMALL, IREFALL
267 };
268
273 PCA9957();
274 virtual ~PCA9957();
275
280 void init( float current );
281};
282
283#endif // ARDUINO_LED_DRIVER_NXP_ARD_H
void pwm(uint8_t ch, float value)
Definition: LEDDriver.cpp:16
void buffer_enable(bool flag)
Definition: LEDDriver.cpp:47
void flush(void)
Definition: LEDDriver.cpp:41
static const uint8_t n_channel
Definition: LEDDriver.h:157
void init(float current)
Definition: PCA9955B.cpp:13
void init(float current)
Definition: PCA9956B.cpp:13
static const uint8_t n_channel
Definition: LEDDriver.h:199
static const uint8_t n_channel
Definition: LEDDriver.h:237
void init(float current)
Definition: PCA9957.cpp:13
PCA9957()
Definition: PCA9957.cpp:4
void irefall(uint8_t iref)
Definition: LEDDriver.cpp:198
void irefall(uint8_t iref)
Definition: LEDDriver.cpp:88