Библиотека для работы с 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, к которому подключён модуль, например I2C1address — адрес модуля, по умолчанию 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);