Class: RubyI2C::Device::SI70XX

Inherits:
Base
  • Object
show all
Defined in:
lib/ruby_i2c/device/si70xx.rb

Constant Summary collapse

ADDRESS =
0x40
MEASURE_RH_CMD =
0xE5
MEASURE_TEMP_CMD =
0xE3
READ_FIRMWARE_REV_CMD =
[ 0x84, 0xB8 ]
READ_SERIAL_NUM_CMD =
[ 0xFA, 0x0F, 0xFC, 0xC9 ]
RESET_CMD =
0xFE

Instance Attribute Summary

Attributes inherited from Base

#adapter, #address

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#write

Constructor Details

#initialize(*args) ⇒ SI70XX

Returns a new instance of SI70XX.



32
33
34
35
# File 'lib/ruby_i2c/device/si70xx.rb', line 32

def initialize(*args)
  super
  @address ||= self.class.address
end

Class Method Details

.addressObject



14
# File 'lib/ruby_i2c/device/si70xx.rb', line 14

def self.address; ADDRESS; end

.measure_rh_cmdObject



15
# File 'lib/ruby_i2c/device/si70xx.rb', line 15

def self.measure_rh_cmd; MEASURE_RH_CMD; end

.measure_temp_cmdObject



16
# File 'lib/ruby_i2c/device/si70xx.rb', line 16

def self.measure_temp_cmd; MEASURE_TEMP_CMD; end

.read_firmware_rev_cmdObject



17
# File 'lib/ruby_i2c/device/si70xx.rb', line 17

def self.read_firmware_rev_cmd; READ_FIRMWARE_REV_CMD; end

.read_serial_num_cmdObject



18
# File 'lib/ruby_i2c/device/si70xx.rb', line 18

def self.read_serial_num_cmd; READ_SERIAL_NUM_CMD; end

.reset_cmdObject



19
# File 'lib/ruby_i2c/device/si70xx.rb', line 19

def self.reset_cmd; RESET_CMD; end

Instance Method Details

#command(cmd, length = 1, rest = nil) ⇒ Object



21
22
23
# File 'lib/ruby_i2c/device/si70xx.rb', line 21

def command(cmd, length=1, rest=nil)
  super.unpack("C"*length)
end

#firmware_revisionObject Also known as: firmware_rev



26
27
28
# File 'lib/ruby_i2c/device/si70xx.rb', line 26

def firmware_revision
  command(self.class.read_firmware_rev_cmd, 1).first
end

#nameObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/ruby_i2c/device/si70xx.rb', line 38

def name
  case serial_array[4]
  when 0x00, 0xFF
    :engineering
  when 0x0D
    :si7013
  when 0x14
    :si7020
  when 0x15
    :si7021
  else
    :unknown
  end
end

#read(cmd, length = 1, rest = nil) ⇒ Object



54
55
56
# File 'lib/ruby_i2c/device/si70xx.rb', line 54

def read(cmd, length=1, rest=nil)
  super.unpack("C"*length)
end

#relative_humidityObject Also known as: rh



59
60
61
# File 'lib/ruby_i2c/device/si70xx.rb', line 59

def relative_humidity
  ( (125 * measure(self.class.measure_rh_cmd)) / 65535 ) - 6
end

#resetObject



65
66
67
# File 'lib/ruby_i2c/device/si70xx.rb', line 65

def reset
  write self.class.reset_cmd
end

#serial_numberObject Also known as: serial



70
71
72
73
74
# File 'lib/ruby_i2c/device/si70xx.rb', line 70

def serial_number
  (1..7).reduce(0) do |serial,pow|
    serial += serial_array[pow-1] << 8*pow
  end + serial_array[7]
end

#temperatureObject Also known as: temp



78
79
80
# File 'lib/ruby_i2c/device/si70xx.rb', line 78

def temperature
  ( (175.72 * measure(self.class.measure_temp_cmd)) / 65536 ) - 46.85
end