This is FlexLEDTapeLibrary
Fork of ws2801 by
a101.cpp@8:28d3f6703e22, 2012-12-28 (annotated)
- Committer:
- hototogisu
- Date:
- Fri Dec 28 10:27:10 2012 +0000
- Revision:
- 8:28d3f6703e22
This is FlexLEDTapeLibrary
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hototogisu | 8:28d3f6703e22 | 1 | #include "a101.h" |
hototogisu | 8:28d3f6703e22 | 2 | #include "mbed.h" |
hototogisu | 8:28d3f6703e22 | 3 | |
hototogisu | 8:28d3f6703e22 | 4 | int padding; |
hototogisu | 8:28d3f6703e22 | 5 | |
hototogisu | 8:28d3f6703e22 | 6 | a101::a101(PinName CKI, PinName SDI, int ledLength, int tapeLength) : _CKI(CKI), _SDI(SDI), _ledLength(ledLength), _tapeLength(tapeLength) { |
hototogisu | 8:28d3f6703e22 | 7 | clear(); |
hototogisu | 8:28d3f6703e22 | 8 | } |
hototogisu | 8:28d3f6703e22 | 9 | |
hototogisu | 8:28d3f6703e22 | 10 | void a101::post(int *strip_colors) { |
hototogisu | 8:28d3f6703e22 | 11 | for (int i = 0; i < 32; i++) { |
hototogisu | 8:28d3f6703e22 | 12 | padding0(); |
hototogisu | 8:28d3f6703e22 | 13 | } |
hototogisu | 8:28d3f6703e22 | 14 | |
hototogisu | 8:28d3f6703e22 | 15 | wait_us(RESET_DERAY); |
hototogisu | 8:28d3f6703e22 | 16 | |
hototogisu | 8:28d3f6703e22 | 17 | for (int tapeNum = 0; tapeNum < _tapeLength; tapeNum++) { |
hototogisu | 8:28d3f6703e22 | 18 | for(int ledNum = 0; ledNum < _ledLength; ledNum++) { |
hototogisu | 8:28d3f6703e22 | 19 | operate(); |
hototogisu | 8:28d3f6703e22 | 20 | for (int color = 0; color <= 2; color++) { |
hototogisu | 8:28d3f6703e22 | 21 | int color_level = (strip_colors[tapeNum*24+ledNum] & (0xff << (8*color))) >> (8*color); |
hototogisu | 8:28d3f6703e22 | 22 | for (int color_bit = 7; color_bit >= 0; color_bit--) { |
hototogisu | 8:28d3f6703e22 | 23 | if (color_level & (1 << color_bit)) padding1(); |
hototogisu | 8:28d3f6703e22 | 24 | else padding0(); |
hototogisu | 8:28d3f6703e22 | 25 | } |
hototogisu | 8:28d3f6703e22 | 26 | } |
hototogisu | 8:28d3f6703e22 | 27 | } |
hototogisu | 8:28d3f6703e22 | 28 | } |
hototogisu | 8:28d3f6703e22 | 29 | for (padding = 0; padding < 12*_ledLength*_tapeLength; padding++) { |
hototogisu | 8:28d3f6703e22 | 30 | padding1(); |
hototogisu | 8:28d3f6703e22 | 31 | } |
hototogisu | 8:28d3f6703e22 | 32 | } |
hototogisu | 8:28d3f6703e22 | 33 | |
hototogisu | 8:28d3f6703e22 | 34 | void a101::padding1() { |
hototogisu | 8:28d3f6703e22 | 35 | _CKI = 0; |
hototogisu | 8:28d3f6703e22 | 36 | _SDI = 1; |
hototogisu | 8:28d3f6703e22 | 37 | _CKI = 1; |
hototogisu | 8:28d3f6703e22 | 38 | } |
hototogisu | 8:28d3f6703e22 | 39 | |
hototogisu | 8:28d3f6703e22 | 40 | void a101::padding0() { |
hototogisu | 8:28d3f6703e22 | 41 | _CKI = 0; |
hototogisu | 8:28d3f6703e22 | 42 | _SDI = 0; |
hototogisu | 8:28d3f6703e22 | 43 | _CKI = 1; |
hototogisu | 8:28d3f6703e22 | 44 | } |
hototogisu | 8:28d3f6703e22 | 45 | |
hototogisu | 8:28d3f6703e22 | 46 | void a101::operate() { |
hototogisu | 8:28d3f6703e22 | 47 | for (int i = 0; i < 8; i++) { |
hototogisu | 8:28d3f6703e22 | 48 | padding1(); |
hototogisu | 8:28d3f6703e22 | 49 | } |
hototogisu | 8:28d3f6703e22 | 50 | } |
hototogisu | 8:28d3f6703e22 | 51 | |
hototogisu | 8:28d3f6703e22 | 52 | void a101::clear() { |
hototogisu | 8:28d3f6703e22 | 53 | for (int i = 0; i < 32; i++) { |
hototogisu | 8:28d3f6703e22 | 54 | padding0(); |
hototogisu | 8:28d3f6703e22 | 55 | } |
hototogisu | 8:28d3f6703e22 | 56 | |
hototogisu | 8:28d3f6703e22 | 57 | wait_us(RESET_DERAY); |
hototogisu | 8:28d3f6703e22 | 58 | |
hototogisu | 8:28d3f6703e22 | 59 | for (int tape = 0; tape < _tapeLength; tape++) { |
hototogisu | 8:28d3f6703e22 | 60 | for (int led = 0; led < _ledLength; led++) { |
hototogisu | 8:28d3f6703e22 | 61 | operate(); |
hototogisu | 8:28d3f6703e22 | 62 | for (int bit = 0; bit < 24; bit++) { |
hototogisu | 8:28d3f6703e22 | 63 | padding0(); |
hototogisu | 8:28d3f6703e22 | 64 | } |
hototogisu | 8:28d3f6703e22 | 65 | } |
hototogisu | 8:28d3f6703e22 | 66 | } |
hototogisu | 8:28d3f6703e22 | 67 | for (padding = 0; padding < 12*_ledLength*_tapeLength; padding++) { |
hototogisu | 8:28d3f6703e22 | 68 | padding1(); |
hototogisu | 8:28d3f6703e22 | 69 | } |
hototogisu | 8:28d3f6703e22 | 70 | } |
hototogisu | 8:28d3f6703e22 | 71 |