Module: j5e/sensor

Description

A module for working with generic sensor devices. It will emit events when the state of a sensor changes. The sensor module is generic in that it can be used to read any sensor type that uses an ADC input.

In electronics, an analog-to-digital converter is a system that converts an analog signal, such as a sound picked up by a microphone or light entering a digital camera, into a digital signal. An ADC may also provide an isolated measurement such as an electronic device that converts an analog input voltage or current to a digital number representing the magnitude of the voltage or current. Typically the digital output is a two's complement binary number that is proportional to the input, but there are other possibilities.Read more on Wikipedia

Requires


Class: Sensor

The Sensor class allows for input from sensor devices that connect to an ADC

Constructor

new Sensor(io)

Parameters

Name
Type
Description
io
(required)
number, string, or object

Description:
Pin identifier or IO Options (See instantiation)

Examples

// Using a pin number
import Sensor from "j5e/sensor";

const sensor = await new Sensor(12);
sensor.on("change", data => {
  trace(data);
});
// Using a pin identifier
import Sensor from "j5e/sensor";

const sensor = await new Sensor("A1");
sensor.on("change", data => {
 trace(data);
});

Properties

Name
Type
Description
limit
Array.<number>
Limits the output range
threshold
number
The minimum amount of change required to emit a "change" event
interval
number
The interval between readings (in ms)
smoothing
number
The number of samples to take before finding the median
aref
number
The reference voltage
samples
number
The number of samples to take before finding the median
range
(read only)
Array.<number>
The input range of the sensor
raw
(read only)
number
Get the most recent raw ADC reading
median
(read only)
number
Get the most recent median ADC reading
resolution
(read only)
number
The maximum possible ADC reading
scaled
(read only)
number
Get the most recent scaled raw reading
value
(read only)
number

Methods

Sensor.configure

Configure a Sensor

sensor.configure(options);

Returns: The instance on which the method was called

Parameters

Name
Type
Description
options
(required)
object

Description:
Device configuration options

options.aref
number

Description:
Analog reference voltage
Default: 3.3

options.enabled
boolean

Description:
Wether the device is currently performing reads every ms
Default: true

options.interval
number

Description:
Interval between readings in millseconds
Default: 100

options.limit
Array.<number>

Description:
Limit the output range

options.range
Array.<number>

Description:
The input range of the sensor
Default: [0, N]

options.scale
Array.<number>

Description:
The output range for the sensor's value
Default: [0, N]

options.threshold
number

Description:
The minimum amount of change required to emit a "change" event
Default: 1

Example

// Passing in Cofiguration Options
import Sensor from "j5e/sensor";

const sensor = await new Sensor({
  pin: 12
});

sensor.configure({
  interval: 500
});

sensor.on("change", data => {
  trace(data);
});

Sensor.enable

Enable a disabled sensor.

sensor.enable();

Returns: instance

Example

import Sensor from "j5e/sensor";

const sensor = await new Sensor(12);

sensor.disable();

// Wait 5 seconds and then take readings
timer.setTimeout(function() {
  sensor.enable();
});

Sensor.disable

Disable an enabled sensor.

sensor.disable();

Returns: instance

Example

import Sensor from "j5e/sensor";

const sensor = await new Sensor(12);

// Take reading for 5 seconds and then stop
timer.setTimeout(function() {
  sensor.disable();
});

Sensor.read

Synchronous read of a sensor.

sensor.read();

Returns: sensor value

Example

import Sensor from "j5e/sensor";

const sensor = await new Sensor(12);

let myValue = sensor.read();

Sensor.scale

scale/scaleTo Set a value scaling range

sensor.scale(low, high, low, high);

Returns: instance

Parameters

Name
Type
Description
low
(required)
Number

Description:
Lowerbound

high
(required)
Number

Description:
Upperbound

low, high
Array

Description:
Lowerbound

Example

import Sensor from "j5e/sensor";

const sensor = await new Sensor(12);

// Scale all future values to 8-bit range
sensor.scale([0, 255]);

Sensor.scaleTo

scaleTo Scales value to integer representation

sensor.scaleTo(low, low, high);

Returns: The scaled value

Parameters

Name
Type
Description
low
(required)
Number

Description:
An array containing a lower and upper bound

low
(required)
Number

Description:
A number to use as a lower bound

high
(required)
Number

Description:
A number to use as an upper bound

Example

import Sensor from "j5e/sensor";

const sensor = await new Sensor(12);

// Scale the returned value to 8-bit range
sensor.scaleTo([0, 255]);

Sensor.fscaleTo

fscaleTo Scales value to single precision float representation

sensor.fscaleTo(low, low, high);

Returns: The scaled value

Parameters

Name
Type
Description
low
(required)
Number

Description:
An array containing a lower and upper bound

low
(required)
Number

Description:
A number to use as a lower bound

high
(required)
Number

Description:
A number to use as an upper bound

Example

import Sensor from "j5e/sensor";

const sensor = await new Sensor(12);

// Scale the returned value to float between 0 and 1
sensor.fscaleTo([0, 1]);

Sensor.within

Fire a callback when the value is within a certain range

sensor.within(range, unit, callback);

Parameters

Name
Type
Description
range
(required)
Array.<number>

Description:
The upper and lower ends of the range to watch

unit
(required)
string

Description:
The property to test

callback
(required)
function

Description:
A callback to run when the event is fired.


Sensor.on

Create an event listener

sensor.on(event, listener);

Parameters

Name
Type
Description
event
(required)
string

Description:
The name of the event to listen for

listener
(required)
function

Description:
A callback to run when the event is fired.


Sensor.removeListener

Remove an event listener

sensor.removeListener(event, listener);

Parameters

Name
Type
Description
event
(required)
string

Description:
The name of the event that we are removing a listener from

listener
(required)
function

Description:
The callback that we are removing


Sensor.emit

Note: This method is not part of the public API, and is subject to change.

Emit an event

sensor.emit(event);

Parameters

Name
Type
Description
event
(required)
string

Description:
The name of the event to emit


Sensor.once

Create an event listener that will only fire one time.

sensor.once(event, listener);

Parameters

Name
Type
Description
event
(required)
string

Description:
The name of the event to listen for

listener
(required)
function

Description:
A callback to run when the event is fired.