====== @amperka/led-matrix ====== Библиотека для управления [[amp>/product/troyka-led-matrix|монохромной LED матрицей 8×8 (Troyka-модуль)]]. Используйте [[https://igrztv.github.io/led-matrix-editor/|редактор пиктограмм]] для красивых изображений. // Подгружаем объект простых печатных символов 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); ===== Функции модуля ===== func:: connect(i2c[, opts]) Создаёт новый объект Matrix. Параметры функции: * ''i2c'' — i2c, к которому подключен модуль * ''opts'' — объект дополнительных параметров: Поле ''address'' задаёт адрес модуля, если он отличается от стандартного. Можно подключить до четырёх модулей [[продукты:troyka-led-matrix#площадки_выбора_адреса|с разными адресами]]. Стандартный адрес ''0x60''. Допустимые адреса: ''0x60'', ''0x61'', ''0x62'', ''0x63''. class:: Strip Класс для подключения матрицы. Для создания нового объекта, используйте функцию ''connect''. func:: Matrix.print(byteArray) Выводит изображение на матрицу. Изображение передаётся в массиве из 8 целых чисел. Каждое число — строка матрицы. Разряд числа — столбец. Нумерация строк и столбцов с 0 до 7. // создаём массив «пикселей». Нарисуем английскую букву F. var picture = [ 0b11111100, 0b11111100, 0b11000000, 0b11111100, 0b11111100, 0b11000000, 0b11000000, 0b11000000 ]; // Нарисует matrix.print(picture); [[https://igrztv.github.io/led-matrix-editor/|Редактор пиктограмм]] создаёт массив изображений. Каждое доступно по индексу. // скопировали массив из редактора 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); func:: 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); func:: Matrix.read() Возвращает массив из 8 целых чисел, соответствующий текущему изображению на матрице. func:: 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); func:: Matrix.clear() Устанавливает все светодиоды в выключенное состояние. Эквивалентно вызову ''matrix.print([0,0,0,0,0,0,0,0]);'' // гасим все светодиоды matrix.clear(); func:: Matrix.power(state) Выключает матрицу, если ''state == false''. Включает, если ''state == true''. По умолчанию матрица включена. // выключаем матрицу для экономии энергии matrix.power(false); func:: Matrix.equalizer(state) Включает режим эквалайзера, если ''state == true'', иначе переводит в обычный режим. Перед запуском необходимо вызвать функцию ''analogInput(true);''. // переводим матрицу в режим эквалайзера matrix.analogInput(true).equalizer(true); func:: Matrix.analogInput(state) Устанавливает пин S на модуле в режим аналогово входа. func:: Matrix.audioGain(value) Устанавливает коэффициент усиления на аналоговом входе. Параметр ''value'' принимает значения от 0 до 1. Усиление меняется ступенчато. // меняем усиление эквалайзера с помощью потенциометра var gainControl = require('@amperka/pot').connect(A0); setInterval(function() { matrix.audioGain(gainControl.read()); }, 100);