@amperka/gpio-expander
Библиотека для работы с I2C-расширителем портов даёт доступ к привычным Arduino-подобным функциям управления пинами: цифровые чтение и запись, а также АЦП и ШИМ.
// настраиваем I2C1 для работы модуля I2C1.setup({sda: SDA, scl: SCL, bitrate: 100000}); // подключаем модуль к I2C1 var ext = require('@amperka/gpio-expander').connect({i2c: I2C1, address: 42}); // устанавливаем пин 2 на модуле в режим выхода ext.pinMode(2, 'output'); var pinState = 1; // раз в секунду меняем выходной сигнал с 1 на ноль и наоборот setInterval(function() { ext.digitalWrite(2, pinState); pinState = !pinState; }, 1000);
Функции модуля
Создаёт новый объект Expander. Объект opts
должен содержать поля:
i2c
— I2C, к которому подключён модуль, напримерI2C1
address
— адрес модуля, по умолчанию 42.
Класс для работы с расширителем. Для создания экземпляра используйте функцию connect
.
Программно сбрасывает модуль, перезагружает его.
Устанавливает на пине pin
логическую единицу (value = 1
) или ноль (value = 0
).
var pinState = 1; ext.digitalWrite(2, pinState);
Считывает цифровое значения пина pin
.
pinState = ext.digitalRead(3);
Устанавливает режим работы пина pin
. Возможны 4 значения:
'input'
— режим входа (высокий импеданс)'output'
— режим выхода'input_pullup'
— режим входа с подтяжкой к линии питания'input_pulldown'
— режим входа с подтяжкой к линии 0 вольт.
ext.pinMode(4, 'input_pulldown');
Устанавливает ШИМ на пине pin
с коэффициентом заполнения value
в диапазоне 0.0–1.0. Частота ШИМ-сигнала задаётся функцией pwmFreq
.
ext.analogWrite(4, 0.7);
Устанавливает угол качалки серво на пине pin
на угол angle
. Для работы с серво предварительно установите частоту ШИМ-сигнала равной 50 Гц.
ext.pwmFreq(50); ext.servoWrite(4, 140); ext.servoWrite(4, 130); ext.servoWrite(4, 110);
Задаёт частоту ШИМ-сигнала в герцах. Допустимые значения freq
от 15–3000 Гц.
Считывает аналоговое напряжение на пине pin
. Диапазон возвращаемых значений: 0.0–1.0.
Меняет адрес модуля на addr
. Адрес хранится до первого сброса питания или вызова функции reset
. Чтобы сохранить новый адрес в постоянной памяти, используйте функцию saveAddr
.
Сохраняет в памяти модуля новый адрес I2C.
Пример работы с двумя модулями одновременно
Поменяйте адрес на одном модуле.
I2C1.setup({sda: SDA, scl: SCL, bitrate: 400000}); var ext = require('@amperka/gpio-expander').connect({i2c: I2C1, address: 42}); ext.changeAddr(43); ext.saveAddr();
Подключите второй модуль.
I2C1.setup({sda: SDA, scl: SCL, bitrate: 400000}); var expanders = require('@amperka/gpio-expander'); var extA = expanders.connect({i2c: I2C1, address: 42}); // адрес модуля extA — 42 var extB = expanders.connect({i2c: I2C1, address: 43}); // адрес модуля extB — 43 extA.pinMode(5, 'output'); extB.pinMode(6, 'input'); var pinState = 1; setInterval(function() { extA.digitalWrite(5, pinState); pinState = !pinState; var value = extA.analogRead(6); print(value); }, 1000);