Subversion Repositories Projects

Rev

Blame | Last modification | View Log | RSS feed

///////////////////////////////////////////////////////////////////////////////

#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);
  }
}

///////////////////////////////////////////////////////////////////////////////