libneo
v0.0.1
Published
Simple Neopixel library
Downloads
2
Readme
libneo
What is it?
This is a simple library for working with Neopixels using Espruino, or for mocking them in the browser.
Usage
Espruino
// You'll need to load libneo as a module, or pasting into the top of your file.
const LED_COUNT = 12;
let pixels = new libneo.Neopixels(LED_COUNT, libneo.Neopixels.ORDER_GRB);
let idx = 0;
function loop() {
// Set all pixels off.
pixels.reset();
// Set just one to red.
pixels.setPixel(idx, 255, 0, 0);
// Write the state to the neopixels pin (D30 here).
neopixel.write(D30, pixels.toArray());
// If we've reached the end, start again.
if (++idx === LED_COUNT) {
idx = 0;
}
}
setInterval(loop, 100);
Browser
<!DOCTYPE html>
<html>
<head>
<title>libneo</title>
<style type="text/css">
.pixel {
border: 1px solid black;
height: 16px;
width: 16px;
margin: 2px;
float: left;
}
.clearfix {
clear: both;
}
</style>
</head>
<body>
<div>
<div class="pixel" id="pixel-0"></div>
<div class="pixel" id="pixel-1"></div>
<div class="pixel" id="pixel-2"></div>
<div class="pixel" id="pixel-3"></div>
<div class="pixel" id="pixel-4"></div>
<div class="pixel" id="pixel-5"></div>
<div class="pixel" id="pixel-6"></div>
<div class="pixel" id="pixel-7"></div>
<div class="pixel" id="pixel-8"></div>
<div class="pixel" id="pixel-9"></div>
<div class="pixel" id="pixel-10"></div>
<div class="pixel" id="pixel-11"></div>
<div class="clearfix"></div>
</div>
<script src="libneo.js"></script>
<script>
const LED_COUNT = 12;
const FADE_RATE = 0.90;
let pixels = new libneo.Neopixels(LED_COUNT, libneo.Neopixels.ORDER_GRB);
let phase = 0;
function loop() {
// Reduce the brightness of all LEDs.
for (let i = 0; i < LED_COUNT; ++i) {
let p = pixels.pixels[i];
p.r = Math.floor(p.r * FADE_RATE);
p.g = Math.floor(p.g * FADE_RATE);
p.b = Math.floor(p.b * FADE_RATE);
}
// Set the current pixel to red.
pixels.setPixel(phase, 255, 0, 0);
draw();
// Loop around after we reach the end.
if (++phase === LED_COUNT) {
phase = 0;
}
}
// Draw the current pixel status to DOM elements.
function draw() {
for (let i = 0; i < LED_COUNT; ++i) {
let id = 'pixel-' + i;
let e = document.getElementById(id);
let p = pixels.pixels[i];
e.style.backgroundColor = `rgb(${p.r}, ${p.g}, ${p.b})`;
}
}
// Start once the page loads.
window.addEventListener('load', () => {
setInterval(loop, 100);
});
</script>
</body>
</html>