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
|