Created
February 21, 2014 00:31
-
-
Save dsample/9126456 to your computer and use it in GitHub Desktop.
A set of patterns for the Espruino to use a WS2811 RGB LED strips which change with the press of the on-board button. Defaulted to connect to pin B15 and 50 LEDs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*var sensor = require("HC-SR04").connect(C6,C7,function(dist) { | |
console.log(dist+" cm away"); | |
}); | |
setInterval(function() { | |
sensor.trigger(); // send pulse | |
}, 500); | |
*/ | |
SPI2.setup({baud:3200000, mosi:B15}); | |
var rgb = new Uint8Array(50*3); | |
var pos=0; | |
function lightsOff() { | |
clearInterval(cycle); | |
pos++; | |
for (var i=0;i<rgb.length;i+=3) { | |
rgb[i ] = 0; | |
rgb[i+1] = 0; | |
rgb[i+2] = 0; | |
} | |
SPI2.send4bit(rgb, 0b0001, 0b0011); | |
} | |
var patterns = []; | |
//patterns.push(lightsOff); | |
patterns.push(function() { | |
// Fading white lights | |
pos++; | |
for (var i=0;i<rgb.length;i+=3) { | |
var col = (Math.sin(i+pos*0.2)+1) * 127; | |
rgb[i ] = col; | |
rgb[i+1] = col; | |
rgb[i+2] = col; | |
} | |
}); | |
patterns.push(function() { | |
// Low red light | |
pos++; | |
for (var i=0;i<rgb.length;i+=3) { | |
var col = 10; | |
rgb[i ] = col; | |
rgb[i+1] = 0; | |
rgb[i+2] = 0; | |
} | |
}); | |
patterns.push(function() { | |
// Medium red light | |
pos++; | |
for (var i=0;i<rgb.length;i+=3) { | |
var col = 50; | |
rgb[i ] = col; | |
rgb[i+1] = 0; | |
rgb[i+2] = 0; | |
} | |
}); | |
patterns.push(function() { | |
// Medium red light 2 | |
pos++; | |
for (var i=0;i<rgb.length;i+=3) { | |
var col = 100; | |
rgb[i ] = col; | |
rgb[i+1] = 0; | |
rgb[i+2] = 0; | |
} | |
}); | |
patterns.push(function() { | |
// Full red light | |
pos++; | |
for (var i=0;i<rgb.length;i+=3) { | |
var col = 255; | |
rgb[i ] = col; | |
rgb[i+1] = 0; | |
rgb[i+2] = 0; | |
} | |
}); | |
patterns.push(function() { | |
// Low green light | |
pos++; | |
for (var i=0;i<rgb.length;i+=3) { | |
var col = 50; | |
rgb[i ] = 0; | |
rgb[i+1] = col; | |
rgb[i+2] = 0; | |
} | |
}); | |
patterns.push(function() { | |
// Low blue light | |
pos++; | |
for (var i=0;i<rgb.length;i+=3) { | |
var col = 50; | |
rgb[i ] = 0; | |
rgb[i+1] = 0; | |
rgb[i+2] = col; | |
} | |
}); | |
patterns.push(function() { | |
// Fading colours | |
pos++; | |
for (var i=0;i<rgb.length;i+=3) { | |
rgb[i ] = (1 + Math.sin((i+pos)*0.1324)) * 127; | |
rgb[i+1] = (1 + Math.sin((i+pos)*0.1654)) * 127; | |
rgb[i+2] = (1 + Math.sin((i+pos)*0.1)) * 127; | |
} | |
}); | |
patterns.push(function() { | |
// Random blue lights | |
for (var i=0;i<rgb.length;i+=3) { | |
rgb[i ] = 0; | |
rgb[i+1] = 0; | |
rgb[i+2] = Math.random()*255; | |
} | |
}); | |
var getPattern = patterns[0]; | |
function doLights() { | |
getPattern(); | |
SPI2.send4bit(rgb, 0b0001, 0b0011); | |
} | |
var patternNumber = 0; | |
function changePattern() { | |
patternNumber = (patternNumber+1) % patterns.length; | |
getPattern = patterns[patternNumber]; | |
} | |
setWatch(changePattern, BTN, { repeat: true, edge:'falling' }); | |
cycle = setInterval(doLights,50); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment