HELD_TMR_PERIODS = 1, /* Held timer fires every 32.768 msec */
HELD_PERIODS = 16, /* Held this long before held events fire */
COLOR_WHITE = 0, /* Color index for white */
- COLOR_COUNT = 19,
+ COLOR_COUNT = 11,
BRIGHT_TOP = 100, /* Bright ramps up to top ... */
BRIGHT_BOTTOM = -5, /* ... then down to bottom */
BRIGHT_MAX = 85, /* Bright values are constrained for computations */
STD_FADE = 16, /* Fade time in 32.768 ms units */
STD_INCOLOR = 29491, /* Time in color when MODE_FADE, in 32.768 ms units */
PARTY_MIN = 8, /* Min party fade and incolor units */
- PARTY_RANGE = 8, /* Party fade/incolor range (max = min+range) */
+ PARTY_RANGE = 8, /* Party fade/incolor range mask for rand() */
+ /* ... see start_fade() */
};
typedef struct {
signed char remainder;
} led_t;
-/* 18 available colors plus white, 2 bits per color, no white mix */
+/* Available colors, 6 bits per color (no values above 0x3f) */
const unsigned char colors[COLOR_COUNT][LED_COUNT] = {
- { 3, 0, 0, 0 },
- { 3, 1, 0, 0 },
- { 3, 2, 0, 0 },
- { 3, 3, 0, 0 },
- { 2, 3, 0, 0 },
- { 1, 3, 0, 0 },
- { 0, 3, 0, 0 },
- { 0, 3, 1, 0 },
- { 0, 3, 2, 0 },
- { 0, 3, 3, 0 },
- { 0, 2, 3, 0 },
- { 0, 1, 3, 0 },
- { 0, 0, 3, 0 },
- { 1, 0, 3, 0 },
- { 2, 0, 3, 0 },
- { 3, 0, 3, 0 },
- { 3, 0, 2, 0 },
- { 3, 0, 1, 0 },
- { 3, 3, 3, 3 },
+ { 0x28, 0x00, 0x00, 0x00 }, /* red */
+ { 0x30, 0x20, 0x00, 0x00 }, /* orange */
+ { 0x2c, 0x2c, 0x00, 0x00 }, /* yellow */
+ { 0x20, 0x2c, 0x00, 0x00 }, /* yellow-green */
+ { 0x00, 0x30, 0x00, 0x00 }, /* green */
+ { 0x00, 0x30, 0x18, 0x00 }, /* green-cyan */
+ { 0x00, 0x30, 0x28, 0x00 }, /* cyan */
+ { 0x00, 0x18, 0x30, 0x00 }, /* cyan-blue */
+ { 0x00, 0x00, 0x30, 0x00 }, /* blue */
+ { 0x1c, 0x00, 0x30, 0x00 }, /* magenta */
+ { 0x3f, 0x3f, 0x3f, 0x3f }, /* white */
};
unsigned char mode = MODE_SOLID;
}
/* Retrieve the destination color */
- newr = colors[color][LED_RED] << 8;
- newg = colors[color][LED_GRN] << 8;
- newb = colors[color][LED_BLU] << 8;
- neww = colors[color][LED_WHT] << 8;
+ newr = colors[color][LED_RED] << 4;
+ newg = colors[color][LED_GRN] << 4;
+ newb = colors[color][LED_BLU] << 4;
+ neww = colors[color][LED_WHT] << 4;
/* Compute increment per fade step, and remainder, for each led */
red.increment = (newr - red.value) / fade_steps;