@amperka/led-matrix

Библиотека для управления монохромной LED матрицей 8×8 (Troyka-модуль). Используйте редактор пиктограмм для красивых изображений.

// Подгружаем объект простых печатных символов
var symbols = require('@amperka/basic-font').font;
 
// Настраиваем интерфейс I2C и подключаем библиотеку
PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 100000});
var matrix = require('@amperka/led-matrix').connect(PrimaryI2C);
 
// Печатаем символы в строке 'Amperka'
var amperka= 'Amperka';
var index = 0;
setInterval(function() {
  // записываем символ под номером index в строке 'Amperka'
  var char = amperka[index];
  index += 1;
  if (index == 7) index = 0;
  matrix.print(symbols[char]);
}, 200);

Функции модуля

connect(i2c[, opts])

Создаёт новый объект Matrix. Параметры функции:

  • i2c — i2c, к которому подключен модуль
  • opts — объект дополнительных параметров: Поле address задаёт адрес модуля, если он отличается от стандартного. Можно подключить до четырёх модулей с разными адресами. Стандартный адрес 0x60. Допустимые адреса: 0x60, 0x61, 0x62, 0x63.

Strip

Класс для подключения матрицы. Для создания нового объекта, используйте функцию connect.

Matrix.print(byteArray)

Выводит изображение на матрицу. Изображение передаётся в массиве из 8 целых чисел. Каждое число — строка матрицы. Разряд числа — столбец. Нумерация строк и столбцов с 0 до 7.

// создаём массив «пикселей». Нарисуем английскую букву F.
var picture = [
  0b11111100,
  0b11111100,
  0b11000000,
  0b11111100,
  0b11111100,
  0b11000000,
  0b11000000,
  0b11000000
];
// Нарисует 
matrix.print(picture);

Редактор пиктограмм создаёт массив изображений. Каждое доступно по индексу.

// скопировали массив из редактора
var pictures = [
  [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10],
  [0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10],
  [0x00, 0x00, 0x00, 0x28, 0x10, 0x10, 0x00, 0x00],
  [0x00, 0x00, 0x46, 0x28, 0x04, 0x08, 0x00, 0x00],
  [0x20, 0x92, 0x46, 0x00, 0x03, 0x00, 0x00, 0x00],
  [0x20, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00]
];
// Рисуем GIF`ку
var frame = 0;
setInterval(function() {
  matrix.print(pictures[(frame++) % pictures.length]);
}, 100);

Matrix.write(x, y, state)

Изменяет изображение по одном пикселю. Если state == 1, зажжёт светодиод в строке x в столбце y. Погасит светодиод, если state == 0. Начало координат в верхнем левом углу.

// Закрасим нижний правый угол
matrix.write(6, 6, 1)
  .write(6, 7, 1)
  .write(7, 6, 1)
  .write(7, 7, 1);
// Нарисуем квадратный бублик: закрасим всё, кроме центральных пикселей
matrix.print([255,255,255,255,255,255,255,255]);
matrix.write(3, 3, 0)
  .write(3, 4, 0)
  .write(4, 3, 0)
  .write(4, 4, 0);

Matrix.read()

Возвращает массив из 8 целых чисел, соответствующий текущему изображению на матрице.

Matrix.brightness(value)

Устанавливает яркость матрицы. Параметр value принимает значения в диапазоне 0.0…1.0. Яркость изменяется ступенчато, всего 16 градаций. При запуске модуля яркость устанавливается примерно в половину от максимальной.

// устанавливаем яркость в 2 раза меньше максимальной
matrix.brightness(0.5);
// полностью выключена
matrix.brightness(0);
// максимум яркости
matrix.brightness(1);
// меняем яркость с помощью потенциометра
var brightnessControl = require('@amperka/pot').connect(A1);
 
setInterval(function() {
  matrix.brightness(brightnessControl.read());
}, 100);

Matrix.clear()

Устанавливает все светодиоды в выключенное состояние. Эквивалентно вызову matrix.print([0,0,0,0,0,0,0,0]);

// гасим все светодиоды
matrix.clear();

Matrix.power(state)

Выключает матрицу, если state == false. Включает, если state == true. По умолчанию матрица включена.

// выключаем матрицу для экономии энергии
matrix.power(false);

Matrix.equalizer(state)

Включает режим эквалайзера, если state == true, иначе переводит в обычный режим. Перед запуском необходимо вызвать функцию analogInput(true);.

// переводим матрицу в режим эквалайзера
matrix.analogInput(true).equalizer(true);

Matrix.analogInput(state)

Устанавливает пин S на модуле в режим аналогово входа.

Matrix.audioGain(value)

Устанавливает коэффициент усиления на аналоговом входе. Параметр value принимает значения от 0 до 1. Усиление меняется ступенчато.

// меняем усиление эквалайзера с помощью потенциометра
var gainControl = require('@amperka/pot').connect(A0);
 
setInterval(function() {
  matrix.audioGain(gainControl.read());
}, 100);