Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 2092 → Rev 2093

/Digital_RGB_LED_Stripes/tags/ws2812b_sample/sample.c
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);
}
}
 
///////////////////////////////////////////////////////////////////////////////