Module: DhtSensor

Extended by:
FFI::Library
Defined in:
lib/dht-sensor-ffi.rb,
lib/dht-sensor/app.rb,
lib/dht-sensor/reading.rb

Defined Under Namespace

Classes: App, Reading

Class Method Summary collapse

Class Method Details

.read(pin, type = 22) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/dht-sensor-ffi.rb', line 14

def self.read(pin, type=22)

  temperature = FFI::MemoryPointer.new(:float)
  humidity = FFI::MemoryPointer.new(:float)

  tries = 50
  ret = 0
  while tries > 0 do
    tries -= 1
    ret = DhtSensor.readDHT(type, pin, temperature, humidity)
    break if ret == 0 && !(temperature.read_float == 0.0 && humidity.read_float == 0.0)
    sleep 0.1
  end

  if ret != 0 then
    raise "Failed to read from sensor (read call returned #{ret})"
  end

  Reading.new(temperature.read_float, humidity.read_float)
end