@amperka/analog-line-sensor

Библиотека для чтения аналогового датчика линии.

При изменении внешних условий освещённости и при изменении расстояния между сенсором и поверхностью значение сигнала для одного и того же рисунка меняется. Если вы делаете, например, робота, следующего по линии и настроили его в яркий день, поведение при искусственном освещении вечером будет сильно отличаться.

Эту проблему помогает решить библиотека. Перед началом использования, вы можете указать датчику какую освещённость считать белым цветом (сигнал — единица), а какую — чёрным (сигнал — ноль). Для этого есть метод calibrate.

Все промежуточные оттенки между настроенными границами проецируются в диапазон от 0 до 1.

Такой подход позволяет получать одни и те же значения с поверхности вне зависимости от условий внешней освещённости.

var mySensor = require('@amperka/analog-line-sensor').connect(A0);
 
mySensor.calibrate({
  black: 0.2,
  white: 0.8
});
 
console.log(mySensor.read());

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

connect(pin)

Возвращает новый объект AnalogLineSensor для чтения сенсора подключённого к пину pin.

AnalogLineSensor

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

AnalogLineSensor.read([units])

Возвращает значение с датчика в единицах, заданных параметром units. В качестве единиц принимаются:

  • 'mV' — значение как есть, в милливольтах;
  • 'V' — значение как есть, в вольтах;
  • 'u' — значение как есть в условных единицах из диапазона [0.0, 1.0];
  • не задан — калиброванное значение серого в диапазоне [0.0, 1.0].

При использовании калиброванной шкалы, значения сенсора, которые принимаются за крайний чёрный и крайний белый необходимо задать с помощью метода calibrate.

AnalogLineSensor.calibrate(opts)

Устанавливает крайние значения белого и чёрного для работы с калиброванной шкалой.

В качестве opts принимается объект с полями:

  • black — значение чёрного по шкале 'u';
  • white — значение белого по шкале 'u'.

В объекте может отсутствовать одно из полей. В этом случае соответствующая граница не будет изменена.

Вместо конкретного значения поля можно передать true. В этом случае в качестве значения будет использовано текущее значение сигнала модуля.