rpi-matrix

1.0.72 • Public • Published

rpi-matrix

A module for generating animations on a Raspberry PI connected to a RGB LED matrix display (See https://www.adafruit.com/product/607).

This module may be used in two modes, either simple pixel-mode or in canvas-mode which enables you to draw graphics using the HTML5 Canvas API https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API.

Before you install this, please read this https://github.com/hzeller/rpi-rgb-led-matrix and make sure you have the appropriate libraries installed on your Raspberry Pi.

This module also uses npm module canvas https://www.npmjs.com/package/canvas. Again, make sure your Raspberry is updated with the proper components to compile.

Installation

Make sure you have the libraries needed to build this module.

$ sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev 

Then, install as usual.

$ npm install rpi-matrix --save

Usage

var Matrix = require('rpi-matrix');
Matrix.configure({'led-cols':32, 'led-rows':32});

var matrix = new Matrix({mode:'pixel});

Initializing

This module supports (almost) all of the command line options available with the samples from H Zeller. See https://github.com/hzeller/rpi-rgb-led-matrix for details.

Make sure to call Matrix.configure. The following options are available.

  • led-rows
  • led-cols
  • led-row-addr-type
  • led-multiplexing
  • led-gpio-mapping
  • led-chain
  • led-parallel
  • led-pixel-mapper
  • led-brightness
  • led-pwm-bits
  • led-show-refresh
  • led-scan-mode
  • led-pwm-lsb-nanoseconds
  • led-pwm-dither-bits
  • led-slowdown-gpio
  • led-no-hardware-pulse
  • led-inverse
  • led-rgb-sequence

Static Members

  • Matrix.Canvas - Contains the canvas API (same as require('canvas'))
  • Matrix.Color - Contains the color API (same as require('color'))
  • Matrix.configure(config) - Initializes the hardware.

Constructor

new Matrix(config)

Constructs a new matrix object. The config argument must contain the following values.

  • mode - Specifies mode, either pixel or canvas

Example

var Matrix = require('rpi-matrix');
var path = require("path");

Matrix.Canvas.registerFont(path.join(__dirname, './fonts/Verdana.ttf'), { family: 'what-ever' });
Matrix.configure({'led-cols':32, 'led-rows':32});

class Sample extends Matrix {

    run() {
        var ctx = this.canvas.getContext('2d');

        ctx.font = 'bold 16px Verdana';
        ctx.fillStyle = 'blue';
        ctx.textAlign = 'center';
        ctx.textBaseline = 'middle';
        ctx.fillText('X', this.width / 2, this.height / 2);

        this.render();

        setTimeout(() => {}, 3000);
    }
};

var sample = new Sample({mode:'canvas'});
sample.run();

Pixel Mode

When used in pixel mode the following methods are available

Methods

  • clear() - Clears the matrix, all pixels off
  • fill(color) - Fills entire matrix with a color
  • setPixel(x, y, color) - Set pixel at specified position
  • getPixel(x, y) - Returns color at specified location
  • setPixelRGB(x, y, r, g, b) - Sets a pixel using RGB colors
  • setPixelHLS(x, y, h, l, s) - Sets a pixel using HLS colors
  • render([image], [options]) - Renders the current pixels (or specified image) to the matrix. The options parameter may contain blend or scroll values. See source code for details.
  • RGB(r, g, b) - Returns a RGB color as an integer
  • HLS(h, l, s) - Returns a HLS color as an integer
  • sleep(milliseconds) - Helper function. Sleep the number of milliseconds specified.

Member Variables

  • mode - Specifies the matrix mode. Either pixel or canvas.
  • width - Specifies the width of the display
  • height - Specifies the height of the display
  • pixels - An array (Uint32Array) representing the pixels.

Canvas Mode

You may also construct a Matrix object in canvas mode. This gives you the ability to do more advanced graphics by using the HTML5 canvas API (or close to it) thanks to the npm module canvas https://www.npmjs.com/package/canvas. For more information about the Canvas API visit https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API.

Example

var Matrix = require('rpi-matrix');
Matrix.configure({'led-cols':32, 'led-rows':32});
var matrix = new Matrix({mode:'canvas'});
...

When used in canvas mode the following methods are available

Methods

  • render([image], [options]) - Renders the current canvas (or specified image) to the matrix. The options parameter may contain blend or scroll values. See source code for details.
  • sleep(milliseconds) - Helper function. Sleep the number of milliseconds specified.

Member Variables

  • mode - Specifies the matrix mode. Either pixel or canvas.
  • width - Specifies the width of the display
  • height - Specifies the height of the display
  • canvas - The canvas used.

Simple Example using Canvas Mode

var Matrix = require('rpi-matrix');
Matrix.configure({'led-cols':32, 'led-rows':32});

class Sample extends Matrix {

    run() {
        var ctx = this.canvas.getContext('2d');

        ctx.fillStyle = 'blue';
        ctx.fillRect(0, 0, this.width, this.height);

        this.render();
        setTimeout(() => {}, 3000);
    }
};

var sample = new Sample({mode:'canvas'});
sample.run();

Simple Example using Fonts in Canvas Mode

var Matrix = require('rpi-matrix');
var path = require("path");

Matrix.Canvas.registerFont(path.join(__dirname, '../fonts/Verdana.ttf'), { family: 'what-ever' });

class Sample extends Matrix {

    run() {
        var ctx = this.canvas.getContext('2d');

        ctx.font = 'bold 16px Verdana';
        ctx.fillStyle = 'blue';
        ctx.textAlign = 'center';
        ctx.textBaseline = 'middle';
        ctx.fillText('X', this.width / 2, this.height / 2);

        this.render();

        setTimeout(() => {}, 3000);
    }
};
var sample = new Sample({mode:'canvas', width:32, height:32});
sample.run();

The example above displays the letter 'X' centered on the display. To use fonts not already installed on you Raspberry Pi, make sure to call Matrix.Canvas.registerFont() before any graphics are drawn.

See https://github.com/meg768/rpi-matrix/tree/master/examples/scripts for more examples.

Dependents (0)

Package Sidebar

Install

npm i rpi-matrix

Weekly Downloads

11

Version

1.0.72

License

ISC

Unpacked Size

523 kB

Total Files

39

Last publish

Collaborators

  • meg768