0,0 → 1,67 |
/////////////////////////////////////////////////////////////////////////////// |
|
#define RIGGER_CNT 4 // up to 8 |
#define LED_CNT 10 |
#define LED_BIT_CNT 3 * LED_CNT * 8 // RGB * LED_CNT * Bits_per_led |
#define LED_BIT_INDEX(led, color, bit) (led * 24 + color * 8 + 7 - bit) |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
// One bit per channel, 8 bytes per color, 3 colors per pixel |
// |
// Pixel_1 |
// Green Red Blue |
// 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 |
// Channel_0 |
// Channel_1 |
// Channel_2 |
// Channel_3 |
// Channel_4 |
// Channel_5 |
// Channel_6 |
// Channel_7 |
// |
/////////////////////////////////////////////////////////////////////////////// |
|
typedef unsigned char Data[LED_BIT_CNT]; |
|
/////////////////////////////////////////////////////////////////////////////// |
|
#include <util/delay.h> |
#include "ws2812b.h" |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
// One Channel per Port bit, up to eight channels |
// |
/////////////////////////////////////////////////////////////////////////////// |
|
void sample(double delay) |
{ |
Data data; |
unsigned char l; |
|
for(l=0;l<2;l++) |
{ |
unsigned char k=l; |
unsigned short i=0; |
|
while(i<sizeof(data)) |
{ |
unsigned char b; |
unsigned char d; |
|
d = (k & 1)?0x05:0x04; |
for(b=0;b<8;b++)data[i++] = d; // Green |
d = (k & 1)?0x09:0x08; |
for(b=0;b<8;b++)data[i++] = d; // Red |
d = (k & 1)?0x03:0x02; |
for(b=0;b<8;b++)data[i++] = d; // Blue |
k++; |
} |
ws2812b_send(data, sizeof(data)); |
_delay_ms(delay); |
} |
} |
|
/////////////////////////////////////////////////////////////////////////////// |