Added DRDYn pin support.
This commit is contained in:
parent
8c2880d718
commit
1c54cca234
|
@ -2,8 +2,9 @@ HDC1000 = require("HDC1000")
|
||||||
|
|
||||||
sda = 1
|
sda = 1
|
||||||
scl = 2
|
scl = 2
|
||||||
|
drdyn = false
|
||||||
|
|
||||||
HDC1000.init(sda, scl)
|
HDC1000.init(sda, scl, drdyn)
|
||||||
HDC1000.config() -- default values are used if called with no arguments. prototype is config(address, resolution, heater)
|
HDC1000.config() -- default values are used if called with no arguments. prototype is config(address, resolution, heater)
|
||||||
|
|
||||||
print(string.format("Temperature: %.2f °C\nHumidity: %.2f %%", HDC1000.getTemp(), HDC1000.getHumi()))
|
print(string.format("Temperature: %.2f °C\nHumidity: %.2f %%", HDC1000.getTemp(), HDC1000.getHumi()))
|
||||||
|
|
|
@ -25,6 +25,7 @@ _G[modname] = M
|
||||||
local id = 0
|
local id = 0
|
||||||
local i2c = i2c
|
local i2c = i2c
|
||||||
local delay = 20000
|
local delay = 20000
|
||||||
|
local _drdyn_pin
|
||||||
|
|
||||||
local HDC1000_ADDR = 0x40
|
local HDC1000_ADDR = 0x40
|
||||||
|
|
||||||
|
@ -69,7 +70,8 @@ function M.batteryDead()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- initalize i2c
|
-- initalize i2c
|
||||||
function M.init(sda, scl)
|
function M.init(sda, scl, drdyn_pin)
|
||||||
|
_drdyn_pin = drdyn_pin
|
||||||
i2c.setup(id, sda, scl, i2c.SLOW)
|
i2c.setup(id, sda, scl, i2c.SLOW)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -84,14 +86,22 @@ end
|
||||||
-- outputs temperature in Celsius degrees
|
-- outputs temperature in Celsius degrees
|
||||||
function M.getHumi()
|
function M.getHumi()
|
||||||
setReadRegister(HDC1000_HUMI)
|
setReadRegister(HDC1000_HUMI)
|
||||||
tmr.delay(delay)
|
if(_drdyn_pin ~= false) then
|
||||||
|
gpio.mode(_drdyn_pin, gpio.INPUT)
|
||||||
|
while(gpio.read(_drdyn_pin)==1) do
|
||||||
|
end
|
||||||
|
else tmr.delay(delay) end
|
||||||
return(read16()/65535.0*100)
|
return(read16()/65535.0*100)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- outputs humidity in %RH
|
-- outputs humidity in %RH
|
||||||
function M.getTemp()
|
function M.getTemp()
|
||||||
setReadRegister(HDC1000_TEMP)
|
setReadRegister(HDC1000_TEMP)
|
||||||
tmr.delay(delay)
|
if(_drdyn_pin ~= false) then
|
||||||
|
gpio.mode(_drdyn_pin, gpio.INPUT)
|
||||||
|
while(gpio.read(_drdyn_pin)==1) do
|
||||||
|
end
|
||||||
|
else tmr.delay(delay) end
|
||||||
return(read16()/65535.0*165-40)
|
return(read16()/65535.0*165-40)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
HDC1000 NodeMCU module
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Here's my NodeMCU module for the TI HDC1000 temperature and humidity sensor. It should work with the HDC1008 too but I haven't tested it.
|
||||||
|
|
||||||
|
### Setup your sensor:
|
||||||
|
First, require it:
|
||||||
|
|
||||||
|
`HDC1000 = require("HDC1000")`
|
||||||
|
|
||||||
|
Then, initialize it:
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
`HDC1000.init(sda, scl, drdyn)`
|
||||||
|
|
||||||
|
If you don't want to use the DRDYn pin, set it to false: a 20ms delay will be automatically set after each read request.
|
||||||
|
|
||||||
|
`HDC1000.init(sda, scl, false)`
|
||||||
|
=======
|
||||||
|
`HDC1000.init(sda, scl)`
|
||||||
|
>>>>>>> origin/master
|
||||||
|
|
||||||
|
Configure it:
|
||||||
|
|
||||||
|
`HDC1000.config()`
|
||||||
|
|
||||||
|
Default options set the address to 0x40 and enable both temperature and humidity readings at 14-bit resolution, with the integrated heater on. You can change them by initializing your sensor like this:
|
||||||
|
|
||||||
|
`HDC1000.config(address, resolution, heater);`
|
||||||
|
|
||||||
|
"resolution" can be set to 14 bits for both temperature and humidity (0x00 - default) 11 bits for temperature (0x40), 11 bits for humidity (0x01), 8 bits for humidity (0x20)
|
||||||
|
"heater" can be set to ON (0x20 - default) or OFF (0x00)
|
||||||
|
|
||||||
|
### Read some values
|
||||||
|
You can read temperature and humidity by using the following commands:
|
||||||
|
|
||||||
|
`temperature = HDC1000.getTemp()` in Celsius degrees.
|
||||||
|
|
||||||
|
`humidity = HDC1000.getHumi()` in %
|
||||||
|
|
||||||
|
### Check your battery
|
||||||
|
|
||||||
|
The following code returns true if the battery voltage is <2.8V, false otherwise.
|
||||||
|
|
||||||
|
`isDead = HDC1000.batteryDead();`
|
||||||
|
|
||||||
|
Happy making! Also, check out my Breakout Board and Arduino library for this chip: http://b.truzzi.me/hdc1000-temperature-and-humidity-sensor-breakout-with-arduino-library/.
|
Loading…
Reference in New Issue