The Thermometer class constructs objects that represents a single Thermometer/Temperature sensor attached to the physical board.

Johnny-Five currently supports several kinds of Thermometer/Temperature sensors:

This list will continue to be updated as more devices are confirmed.

Parameters

  • General Options

    PropertyTypeValue/DescriptionDefaultRequired
    controllerstringANALOG, LM35, TMP36, DS18B20, MPU6050, GROVE, BMP180, MPL115A2, MPL3115A2, HTU21D, MCP9808, SI7020, SI7021, LSM303C. The Name of the controller to use.ANALOGno
    pinstring or intAnalog Pin. Use with analog sensor.Yes1
    toCelsiusfunctionfunction toCelsius(raw) {} A raw-to-celsius transform overrideno
    freqNumberMilliseconds. The rate in milliseconds to emit the data event25msno
    enabledbooleanWhether to start emitting events right away (>= v0.11)trueno

1 Yes for analog devices. No for digital devices (MPU6050 or DS18B20)

Shape

Property NameDescriptionRead Only
idA user definable id value. Defaults to a generated uidNo
celsiusThe temperature in celsius degrees.Yes
fahrenheitThe temperature in fahrenheit degrees.Yes
kelvinThe temperature in kelvin degrees.Yes
CA convenience alias for celsius.Yes
FA convenience alias for fahrenheit.Yes
KA convenience alias for kelvin.Yes
freqThe rate in milliseconds to emit the data event. Disables the event if set to null. (>= v0.11)No

Component Initialization

Analog

// Create an analog Thermometer object:
new five.Thermometer({
  pin: "A0",
  toCelsius: function(raw) { // optional
    return (raw / sensivity) + offset;
  }
});

LM35

new five.Thermometer({
  controller: "LM35",
  pin: "A0"
});

LM35

TMP36

new five.Thermometer({
  controller: "TMP36",
  pin: "A0"
});

TMP36

TMP102

new five.Thermometer({
  controller: "TMP102"
});

TMP102

DS18B20

new five.Thermometer({
  controller: "DS18B20",
  pin: "A0"
});

DS18B20

MPU6050

// Create an MPU-6050 Thermometer object:
//
//  - attach SDA and SCL to the I2C pins on your board (A4 and A5 for the Uno)
//  - specify the MPU6050 controller
new five.Thermometer({
  controller: "MPU6050"
});

MPU6050

MPL115A2

new five.Thermometer({
  controller: "MPL115A2"
});

MPL115A2

MPL3115A2

new five.Thermometer({
  controller: "MPL3115A2"
});

MPL3115A2

BMP180

new five.Thermometer({
  controller: "BMP180"
});

BMP180

HTU21D

new five.Thermometer({
  controller: "HTU21D"
});

HTU21D HTU21D HTU21D HTU21D

HIH6130

new five.Thermometer({
  controller: "HIH6130"
});

HIH6130

MCP9808

new five.Thermometer({
  controller: "MCP9808"
});

MCP9808 MCP9808

MS5611

new five.Thermometer({
  controller: "MS5611"
});

MS5611

TH02

new five.Thermometer({
  controller: "TH02"
});

TH02

DHT11_I2C_NANO_BACKPACK

new five.Thermometer({
  controller: "DHT11_I2C_NANO_BACKPACK"
});

DHT11_I2C_NANO_BACKPACK

DHT21_I2C_NANO_BACKPACK

new five.Thermometer({
  controller: "DHT21_I2C_NANO_BACKPACK"
});

DHT21_I2C_NANO_BACKPACK

DHT22_I2C_NANO_BACKPACK

new five.Thermometer({
  controller: "DHT22_I2C_NANO_BACKPACK"
});

DHT22_I2C_NANO_BACKPACK

SI7020

new five.Thermometer({
  controller: "SI7020"
});

SI7020

SI7021

new five.Thermometer({
  controller: "SI7021"
});

SI7021

LSM303C

// Create an LSM303C Thermometer object:
//
//  - attach SDA and SCL to the I2C pins on your board (A4 and A5 for the Uno)
//  - specify the LSM303C controller
new five.Thermometer({
  controller: "LSM303C"
});

imu-lsm303c.png

Usage

var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {

  var temperature = new five.Thermometer({
    pin: "A0"
  });

  temperature.on("data", function() {
    console.log("celsius: %d", this.C);
    console.log("fahrenheit: %d", this.F);
    console.log("kelvin: %d", this.K);
  });
});

API

  • enable() Start emitting "data" and "change" events, at a rate determined by the user defined freq in milliseconds. No-op if Thermometer is already enabled. (>= v0.11)

  • disable() Stop emitting "data" and "change" events. No-op if Thermometer is already disabled. (>= v0.11)

Events

  • change The "change" event is emitted whenever the value of the temperature changes.

  • data The "data" event is fired as frequently as the user defined freq will allow in milliseconds. ("data" replaced the "read" event)

Examples

Hi! The Johnny-Five community is building new projects every day. We made this newsletter to tell you about what's new, what's good, and what's next for Open Source robotics. Join us in exploring what we can make together.

Fork me on GitHub