Cascaded led driver to write use write into leds[i] = 0x0 or 0xfff
Fork of TLC5940 by
TLC5940.cpp@2:ff6fc805f4ea, 2013-03-23 (annotated)
- Committer:
- Mach5
- Date:
- Sat Mar 23 07:15:54 2013 +0000
- Revision:
- 2:ff6fc805f4ea
- Parent:
- 1:05d2234c0965
- Child:
- 3:367910365a97
Cascaded LED driver TLC5940 with example
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 | |
Mach5 | 2:ff6fc805f4ea | 3 | |
slisgrinder | 0:1fb7b50d16b1 | 4 | |
slisgrinder | 1:05d2234c0965 | 5 | void setup (SPI &driver, DigitalOut &vprg, DigitalOut &xlat, DigitalOut &blank, DigitalOut &dcprg, PwmOut &gsclk, int num_ics) |
slisgrinder | 0:1fb7b50d16b1 | 6 | { |
slisgrinder | 0:1fb7b50d16b1 | 7 | xlat = 0; // hold GS/DC data constant |
slisgrinder | 1:05d2234c0965 | 8 | blank = 1; |
slisgrinder | 1:05d2234c0965 | 9 | blank = 0; // Blank (squelch) all outputs |
slisgrinder | 0:1fb7b50d16b1 | 10 | dcprg = 1; // dcprg points DC data to DC register. |
slisgrinder | 0:1fb7b50d16b1 | 11 | vprg = 0; // sets drivers to GS mode. Set to 1 to change to DC mode |
Mach5 | 2:ff6fc805f4ea | 12 | gsclk.period_ms (1); // set grayscale clock to 1000 Hz |
slisgrinder | 0:1fb7b50d16b1 | 13 | gsclk = 0.5; // turn on grayscale clock to 50% duty cycle at afore mentioned frequency |
slisgrinder | 0:1fb7b50d16b1 | 14 | |
slisgrinder | 0:1fb7b50d16b1 | 15 | if (num_ics <= 0) |
slisgrinder | 0:1fb7b50d16b1 | 16 | { |
Mach5 | 2:ff6fc805f4ea | 17 | num_ics = 1; |
slisgrinder | 1:05d2234c0965 | 18 | } |
slisgrinder | 0:1fb7b50d16b1 | 19 | else |
slisgrinder | 0:1fb7b50d16b1 | 20 | { |
Mach5 | 2:ff6fc805f4ea | 21 | num_ics = num_ics; |
slisgrinder | 0:1fb7b50d16b1 | 22 | } |
slisgrinder | 0:1fb7b50d16b1 | 23 | |
slisgrinder | 0:1fb7b50d16b1 | 24 | |
slisgrinder | 1:05d2234c0965 | 25 | driver.format (12,0); |
Mach5 | 2:ff6fc805f4ea | 26 | driver.frequency (10000000); |
Mach5 | 2:ff6fc805f4ea | 27 | |
Mach5 | 2:ff6fc805f4ea | 28 | for (int i = num_ics; i >=0; i--){ |
Mach5 | 2:ff6fc805f4ea | 29 | driver.write (0x0);} |
slisgrinder | 0:1fb7b50d16b1 | 30 | } |
slisgrinder | 0:1fb7b50d16b1 | 31 | |
slisgrinder | 0:1fb7b50d16b1 | 32 | |
slisgrinder | 1:05d2234c0965 | 33 | void update_led (SPI &driver, DigitalOut &xlat, DigitalOut &blank, unsigned short* LEDS) |
slisgrinder | 0:1fb7b50d16b1 | 34 | { |
slisgrinder | 0:1fb7b50d16b1 | 35 | blank = 1; |
slisgrinder | 1:05d2234c0965 | 36 | blank = 0; |
Mach5 | 2:ff6fc805f4ea | 37 | |
Mach5 | 2:ff6fc805f4ea | 38 | for (int i = (32 - 1); i >= 0; i--) |
slisgrinder | 0:1fb7b50d16b1 | 39 | { |
Mach5 | 2:ff6fc805f4ea | 40 | driver.write (*(LEDS + i)); |
slisgrinder | 0:1fb7b50d16b1 | 41 | } |
Mach5 | 2:ff6fc805f4ea | 42 | |
slisgrinder | 0:1fb7b50d16b1 | 43 | xlat = 1; |
slisgrinder | 0:1fb7b50d16b1 | 44 | xlat = 0; |
Mach5 | 2:ff6fc805f4ea | 45 | } |
Mach5 | 2:ff6fc805f4ea | 46 | |
Mach5 | 2:ff6fc805f4ea | 47 | |
Mach5 | 2:ff6fc805f4ea | 48 |