libneo

0.0.1 • Public • Published

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>

Readme

Keywords

none

Package Sidebar

Install

npm i libneo

Weekly Downloads

2

Version

0.0.1

License

ISC

Last publish

Collaborators

  • drarok