14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/dht-sensor-ffi.rb', line 14
def self.read(pin, type=22, tries=50)
temperature = FFI::MemoryPointer.new(:float)
humidity = FFI::MemoryPointer.new(:float)
ret = nil
1.upto(tries) do
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
|