account for rgb
This commit is contained in:
parent
9e1c0f5be1
commit
e337625791
36
lights.js
36
lights.js
|
@ -9,6 +9,16 @@ var pixel_cache = new Uint32Array(cfg.leds);
|
||||||
var next_pattern = new Uint32Array(cfg.leds);
|
var next_pattern = new Uint32Array(cfg.leds);
|
||||||
var pattern = {}
|
var pattern = {}
|
||||||
|
|
||||||
|
function rgb_to_int(r, g, b) {
|
||||||
|
return ((r << 8) + g) << 8 + b;
|
||||||
|
}
|
||||||
|
function int_to_rgb(int) {
|
||||||
|
var r = int >> 16 & 0xFF;
|
||||||
|
var g = int >> 8 & 0xFF;
|
||||||
|
var b = int & 0xFF;
|
||||||
|
return { r: r, g: g, b: b };
|
||||||
|
}
|
||||||
|
|
||||||
ws281x.configure({
|
ws281x.configure({
|
||||||
leds: cfg.leds || 300,
|
leds: cfg.leds || 300,
|
||||||
brightness: cfg.brightness || 200,
|
brightness: cfg.brightness || 200,
|
||||||
|
@ -47,16 +57,26 @@ export function tick() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function fade(index) {
|
function fade(index) {
|
||||||
var original = pixel_cache[index];
|
var original = int_to_rgb(pixel_cache[index]);
|
||||||
var final = next_pattern[index];
|
var current = int_to_rgb(pixels[index]);
|
||||||
var diff = final - original;
|
var final = int_to_rgb(next_pattern[index]);
|
||||||
var interval = diff / fade_ticks;
|
var diff_r = final.r - original.r;
|
||||||
|
var diff_g = final.g - original.g;
|
||||||
|
var diff_b = final.b - original.b;
|
||||||
|
var interval_r = diff_r / fade_ticks;
|
||||||
|
var interval_g = diff_g / fade_ticks;
|
||||||
|
var interval_b = diff_b / fade_ticks;
|
||||||
|
|
||||||
if (Math.abs(final - pixels[index]) < interval) {
|
if (Math.abs(final.r - current.r) < interval_r &&
|
||||||
pixels[index] = final;
|
Math.abs(final.g - current.g) < interval_g &&
|
||||||
pixel_cache[index] = final;
|
Math.abs(final.b - current.b) < interval_b
|
||||||
|
) {
|
||||||
|
pixels[index] = next_pattern[index];
|
||||||
|
pixel_cache[index] = next_pattern[index];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
pixels[index] += interval;
|
pixels[index] = rgb_to_int(current.r + interval_r,
|
||||||
|
current.g + interval_g,
|
||||||
|
current.b + interval_b);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue