https://github.com/boneskull/bicolor-bargraph
Johnny-Five component for an Adafruit Bi-Color 24 Bargraph
https://github.com/boneskull/bicolor-bargraph
Last synced: 6 months ago
JSON representation
Johnny-Five component for an Adafruit Bi-Color 24 Bargraph
- Host: GitHub
- URL: https://github.com/boneskull/bicolor-bargraph
- Owner: boneskull
- License: other
- Created: 2017-08-06T07:42:23.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-08-06T09:07:35.000Z (over 8 years ago)
- Last Synced: 2024-10-29T22:36:36.321Z (over 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 13.7 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bicolor-bargraph
> Johnny-Five component for an [Adafruit Bi-Color 24 Bargraph](https://learn.adafruit.com/adafruit-led-backpack/bi-color-24-bargraph)
## Install
```shell
$ npm i johnny-five bicolor-bargraph
```
## Requirements
- Node.js v6.x or newer
## Example
The following naive example shows how a CPU load indicator (updating every second) can be created for a Raspberry Pi.
- When the load is light, a handful of green LEDs will display
- When the load is moderate, these green LEDs will display, as well as yellow ones
- When the load is heavy, you get green + yellow + red
The bar graph has 24 bars; thusly the colored sections are each of size 8.
```js
'use strict';
const percent = require('cpu-percent');
const j5 = require('johnny-five');
const raspi = require('raspi-io');
const bargraph = require('bicolor-bargraph');
function color(i) {
if (i > 16) {
return bargraph.GREEN;
} else if (i > 8) {
return bargraph.YELLOW;
}
return bargraph.RED;
}
new j5.Board({
io: new raspi(),
repl: false
}).on('ready', () => {
const bar = bargraph();
percent((err, value) => {
if (err) {
throw err;
}
// invert numbers to change "direction"
const pct = Math.round(24 * (100 - value) / 100);
const [cols, values] = [[], []];
for (let i = 0; i < 24; i++) {
cols.push(i);
values.push(pct <= i ? color(i) : bargraph.OFF);
}
// sets many LEDs at once in a single I2C write
bar.leds(cols, values);
});
});
```
## I'm Calling This "Usage"
Other methods are available, similarly to the [Led.Matrix](http://johnny-five.io/api/led.matrix/) component:
- `on()`: enable component (happens automatically upon instantiation)
- `off()`: disable component
- `clear()`: turn all LEDs off
- `brightness(value)`: 0-100
- `blink(value)`: blink at 2 HZ, (`0x02`), 1 HZ (`0x04`), or 0.5 HZ (`0x06`). Default is no blinking (`0x00`)
- `led(bar, value)`: Control an individual bar, where `value` is a color (see constants below)
The module exports class `BicolorBargraph` if you want it, but its default export is a factory function.
It exports constants `RED`, `GREEN`, `YELLOW`, and `OFF` to help with the colors.
It should support multiple devices, but I don't have multiple devices to test.
The module supports some options via the factory function or constructor, but probably best to leave them be.
## Prior Art
This module is based on:
- [Adafruit_Python_LED_Backpack](https://github.com/adafruit/Adafruit_Python_LED_Backpack)
- [johnny-five](https://github.com/rwaldron/johnny-five)
## License
Copyright 2017 Christopher Hiller. Licensed Apache-2.0