Cascaded led driver to write use write into leds[i] = 0x0 or 0xfff
Fork of TLC5940 by
TLC5940.cpp@0:1fb7b50d16b1, 2013-01-25 (annotated)
- Committer:
- slisgrinder
- Date:
- Fri Jan 25 21:54:56 2013 +0000
- Revision:
- 0:1fb7b50d16b1
- Child:
- 1:05d2234c0965
V1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
slisgrinder | 0:1fb7b50d16b1 | 1 | #include "TLC5940.h" |
slisgrinder | 0:1fb7b50d16b1 | 2 | |
slisgrinder | 0:1fb7b50d16b1 | 3 | |
slisgrinder | 0:1fb7b50d16b1 | 4 | |
slisgrinder | 0:1fb7b50d16b1 | 5 | void setup (SPI &driver, PwmOut &gsclk, PinName xlat, PinName blank, PinName dcprg, PinName vprg, int num_ics) |
slisgrinder | 0:1fb7b50d16b1 | 6 | { |
slisgrinder | 0:1fb7b50d16b1 | 7 | xlat = 0; // hold GS/DC data constant |
slisgrinder | 0:1fb7b50d16b1 | 8 | blank = 1; // Blank (squelch) all outputs |
slisgrinder | 0:1fb7b50d16b1 | 9 | dcprg = 1; // dcprg points DC data to DC register. |
slisgrinder | 0:1fb7b50d16b1 | 10 | vprg = 0; // sets drivers to GS mode. Set to 1 to change to DC mode |
slisgrinder | 0:1fb7b50d16b1 | 11 | gsclk.period_us (1); // set grayscale clock to 1 MHz |
slisgrinder | 0:1fb7b50d16b1 | 12 | gsclk = 0.5; // turn on grayscale clock to 50% duty cycle at afore mentioned frequency |
slisgrinder | 0:1fb7b50d16b1 | 13 | |
slisgrinder | 0:1fb7b50d16b1 | 14 | if (num_ics <= 0) |
slisgrinder | 0:1fb7b50d16b1 | 15 | { |
slisgrinder | 0:1fb7b50d16b1 | 16 | num_drivers = 1; |
slisgrinder | 0:1fb7b50d16b1 | 17 | { |
slisgrinder | 0:1fb7b50d16b1 | 18 | else |
slisgrinder | 0:1fb7b50d16b1 | 19 | { |
slisgrinder | 0:1fb7b50d16b1 | 20 | num_drivers = num_ics; |
slisgrinder | 0:1fb7b50d16b1 | 21 | } |
slisgrinder | 0:1fb7b50d16b1 | 22 | |
slisgrinder | 0:1fb7b50d16b1 | 23 | |
slisgrinder | 0:1fb7b50d16b1 | 24 | driver.format (16,0); |
slisgrinder | 0:1fb7b50d16b1 | 25 | driver.frequency (30000000); |
slisgrinder | 0:1fb7b50d16b1 | 26 | } |
slisgrinder | 0:1fb7b50d16b1 | 27 | |
slisgrinder | 0:1fb7b50d16b1 | 28 | |
slisgrinder | 0:1fb7b50d16b1 | 29 | |
slisgrinder | 0:1fb7b50d16b1 | 30 | void update_led (SPI &driver, uint16_t LEDS [][]) |
slisgrinder | 0:1fb7b50d16b1 | 31 | { |
slisgrinder | 0:1fb7b50d16b1 | 32 | blank = 1; |
slisgrinder | 0:1fb7b50d16b1 | 33 | dcprg = 1; |
slisgrinder | 0:1fb7b50d16b1 | 34 | vprg = 0; |
slisgrinder | 0:1fb7b50d16b1 | 35 | xlat = 0; |
slisgrinder | 0:1fb7b50d16b1 | 36 | |
slisgrinder | 0:1fb7b50d16b1 | 37 | for (int k = 0; k < num_drivers; k++) |
slisgrinder | 0:1fb7b50d16b1 | 38 | { |
slisgrinder | 0:1fb7b50d16b1 | 39 | for (int i = 0; i < 16; i++) |
slisgrinder | 0:1fb7b50d16b1 | 40 | { |
slisgrinder | 0:1fb7b50d16b1 | 41 | driver.write (LEDS [k][i]); |
slisgrinder | 0:1fb7b50d16b1 | 42 | } |
slisgrinder | 0:1fb7b50d16b1 | 43 | } |
slisgrinder | 0:1fb7b50d16b1 | 44 | xlat = 1; |
slisgrinder | 0:1fb7b50d16b1 | 45 | xlat = 0; |
slisgrinder | 0:1fb7b50d16b1 | 46 | blank = 0; |
slisgrinder | 0:1fb7b50d16b1 | 47 | } |