@thingssdk/ht16k33 for JavaScript
A modern JavaScript driver for the LED matrix backpacks with the HT16K33 controller chip. The driver works with any Adafruit 8x8 monochrome, 8x8 bicolor and 16x8 monochrome LED backpacks.
- 8x8 0.8" (872, 871, 870)
- 8x8 1.2" (1049, 1052, 1051, 1050, 1614, 1632, 1857, 1854, 1855, 1856)
- 16x8 1.2" (2044, 2038, 2037, 2040, 2041, 2039, 2043, 2042, 2035, 2036, 2052, 2054)
- 16x8 LED Matrix Driver Backpack (1427)
This module works with the 7-Segment backpacks and 14-segment alphanumeric backpacks.
- 7 segment display (878, 879, 880, 881),
- 14 segment alphanumeric display (1911, 1912, 2157, 2158, 2159, 2160),
This is also compatible with the Adafruit Feather wings too.
- Adafruit 0.8" 8x16 LED Matrix FeatherWing Display (3150, 3151, 3152, 3153, 3154)
- Adafruit 0.56" 4-Digit 7-Segment FeatherWing Display (3106, 3107, 3108, 3109, 3110)
- Adafruit 0.54" Quad Alphanumeric (14 segment) FeatherWing Display (3127, 3128, 3129, 3130, 3131, 3132)
Runtime Compatibility
Works with the thingsSDK-based projects running on the Espruino runtime. More to come.
Example Code for 8 x 8 Matrix
import { connect8x8Matrix } from '@thingssdk/ht16k33/espruino';
const smileBmp = [
0b00111100,
0b01000010,
0b10100101,
0b10000001,
0b10100101,
0b10011001,
0b01000010,
0b00111100
];
const neutralBmp = [
0b00111100,
0b01000010,
0b10100101,
0b10000001,
0b10111101,
0b10000001,
0b01000010,
0b00111100
];
const frownBmp = [
0b00111100,
0b01000010,
0b10100101,
0b10000001,
0b10011001,
0b10100101,
0b01000010,
0b00111100
];
function main() {
const matrix = connect8x8Matrix();
matrix.render(smileBmp);
setTimeout(() => {
matrix.render(neutralBmp);
}, 1000);
setTimeout(() => {
matrix.render(frownBmp);
}, 2000);
}
Example Code for 16 x 8 Matrix
import { connect16x8Matrix } from '@thingssdk/ht16k33/espruino';
const smileFrownBmp = [
0b00111100, 0b00111100,
0b01000010, 0b01000010,
0b10100101, 0b10100101,
0b10000001, 0b10000001,
0b10100101, 0b10011001,
0b10011001, 0b10100101,
0b01000010, 0b01000010,
0b00111100, 0b00111100
];
const smileMehBmp = [
0b00111100, 0b00111100,
0b01000010, 0b01000010,
0b10100101, 0b10100101,
0b10000001, 0b10000001,
0b10100101, 0b10000001,
0b10011001, 0b10111101,
0b01000010, 0b01000010,
0b00111100, 0b00111100
];
function main() {
const matrix = connect16x8Matrix()
matrix.render(smileFrownBmp);
setTimeout(() => matrix.render(smileMehBmp), 1000);
}
Example Code for 8 x 8 Bi-Color Matrix
import { connect8x8BicolorMatrix } from '@thingssdk/ht16k33/espruino';
const smileBmp = [
0b00111100, 0b00000000,
0b01000010, 0b00000000,
0b10100101, 0b00000000,
0b10000001, 0b00000000,
0b10100101, 0b00000000,
0b10011001, 0b00000000,
0b01000010, 0b00000000,
0b00111100, 0b00000000
];
const neutralBmp = [
0b00111100, 0b00111100,
0b01000010, 0b01000010,
0b10100101, 0b10100101,
0b10000001, 0b10000001,
0b10111101, 0b10111101,
0b10000001, 0b10000001,
0b01000010, 0b01000010,
0b00111100, 0b00111100
];
const frownBmp = [
0b00000000, 0b00111100,
0b00000000, 0b01000010,
0b00000000, 0b10100101,
0b00000000, 0b10000001,
0b00000000, 0b10011001,
0b00000000, 0b10100101,
0b00000000, 0b01000010,
0b00000000, 0b00111100
];
const multiSmileBmp = [
0b00111100, 0b00000000,
0b01000010, 0b00000000,
0b10100101, 0b00100100,
0b10000001, 0b00000000,
0b10000001, 0b00100100,
0b10000001, 0b00011000,
0b01000010, 0b00000000,
0b00111100, 0b00000000
];
function main() {
const matrix = connect8x8BicolorMatrix();
matrix.render(smileBmp);
setTimeout(() => {
matrix.render(neutralBmp);
}, 1000);
setTimeout(() => {
matrix.render(frownBmp);
}, 2000);
setTimeout(() => {
matrix.render(multiSmileBmp);
}, 3000);
}
Example Code for 7 Segment Display
import { connect7SegmentDisplay } from '@thingssdk/ht16k33/espruino';
function main() {
const matrix = connect7SegmentDisplay();
matrix.render(42);
setTimeout(() => {
matrix.render(-999);
}, 1000);
setTimeout(() => {
matrix.render("04:20");
}, 2000);
setTimeout(() => {
matrix.render(3.141);
}, 3000);
setTimeout(() => {
matrix.render("1.2.3.4.");
}, 4000);
setTimeout(() => {
matrix.render("----");
}, 5000);
setTimeout(() => {
matrix.render("0 -");
}, 6000);
}
Example Code for 14 Segment Display
import { connect14SegmentDisplay } from '@thingssdk/ht16k33/espruino';
function main() {
const matrix = connect14SegmentDisplay();
matrix.render(42);
setTimeout(() => {
matrix.render(-999);
}, 1000);
setTimeout(() => {
matrix.render("HI@U");
}, 2000);
setTimeout(() => {
matrix.render(3.141);
}, 3000);
setTimeout(() => {
matrix.render("1.2.3.4.");
}, 4000);
setTimeout(() => {
matrix.render("UPPR");
}, 5000);
setTimeout(() => {
matrix.render("lowr");
}, 6000);
}
Display Options
Any one of the display connect functions, connect8x8Matrix
, connect16x8Matrix
, connect8x8BicolorMatrix
, connect7SegmentDisplay
and connect14SegmentDisplay
takes an options
object.
import { connect8x8Matrix } from '@thingssdk/ht16k33/espruino';
const options = {
i2cInterface: I2C1,
clock: 5,
data: 4,
address: 0x70,
brightness: 0
}
const matrix = connect8x8Matrix(options)
Setting Brightness
The LED displays are quite bright on their lowest setting (0
) but it can be adjusted to go all the way up to 15
.
import { connect8x8Matrix } from '@thingssdk/ht16k33/espruino';
import { setBrightness } from '@thingssdk/ht16k33';
const matrix = connect8x8Matrix();
setBrightness(matrix, 15);
If you pass in the value of 16
it'll reset to 0
, 17
will be 1
and so forth.
Setting Blink Rate
The HT16K33 chip has 4 blink rates 0
through 3
.
import { connect8x8Matrix } from '@thingssdk/ht16k33/espruino';
import { setBlinkRate } from '@thingssdk/ht16k33';
const matrix = connect8x8Matrix();
setBlinkRate(matrix, 3);