Followed Vladimir Dronnikov's advices.
https://github.com/nodemcu/nodemcu-firmware/pull/156
This commit is contained in:
parent
9cab751363
commit
f45e6fece3
|
@ -7,48 +7,51 @@
|
|||
-- MIT license, http://opensource.org/licenses/MIT
|
||||
-- ***************************************************************************
|
||||
local moduleName = ...
|
||||
local M = {}
|
||||
_G[moduleName] = M
|
||||
--I2C slave address of GY-30
|
||||
local GY_30_address = 0X23
|
||||
-- i2c interface ID
|
||||
local id = 0
|
||||
--LUX
|
||||
local l
|
||||
--CMD
|
||||
local CMD = 0x10
|
||||
local init = false
|
||||
function M.init(sda, scl)
|
||||
i2c.setup(id, sda, scl, i2c.SLOW)
|
||||
--print("i2c ok..")
|
||||
init = true
|
||||
end
|
||||
local function read_data(ADDR, commands, length)
|
||||
i2c.start(id)
|
||||
i2c.address(id, ADDR, i2c.TRANSMITTER)
|
||||
i2c.write(id, commands)
|
||||
i2c.stop(id)
|
||||
i2c.start(id)
|
||||
i2c.address(id, ADDR,i2c.RECEIVER)
|
||||
tmr.delay(200000)
|
||||
c = i2c.read(id, length)
|
||||
i2c.stop(id)
|
||||
return c
|
||||
end
|
||||
local function read_lux()
|
||||
dataT = read_data(GY_30_address, CMD, 2)
|
||||
UT = string.byte(dataT, 1) * 256 + string.byte(dataT, 2)
|
||||
l = (UT*1000/12)
|
||||
return(l)
|
||||
end
|
||||
function M.read()
|
||||
if (not init) then
|
||||
print("init() must be called before read.")
|
||||
else
|
||||
read_lux()
|
||||
end
|
||||
end
|
||||
function M.getlux()
|
||||
return l
|
||||
end
|
||||
return M
|
||||
local M = {}
|
||||
_G[moduleName] = M
|
||||
--I2C slave address of GY-30
|
||||
local GY_30_address = 0x23
|
||||
-- i2c interface ID
|
||||
local id = 0
|
||||
--LUX
|
||||
local l
|
||||
--CMD
|
||||
local CMD = 0x10
|
||||
local init = false
|
||||
--Make it more faster
|
||||
local i2c = i2c
|
||||
function M.init(sda, scl)
|
||||
i2c.setup(id, sda, scl, i2c.SLOW)
|
||||
--print("i2c ok..")
|
||||
init = true
|
||||
end
|
||||
local function read_data(ADDR, commands, length)
|
||||
i2c.start(id)
|
||||
i2c.address(id, ADDR, i2c.TRANSMITTER)
|
||||
i2c.write(id, commands)
|
||||
i2c.stop(id)
|
||||
i2c.start(id)
|
||||
i2c.address(id, ADDR,i2c.RECEIVER)
|
||||
tmr.delay(200000)
|
||||
c = i2c.read(id, length)
|
||||
i2c.stop(id)
|
||||
return c
|
||||
end
|
||||
local function read_lux()
|
||||
dataT = read_data(GY_30_address, CMD, 2)
|
||||
--Make it more faster
|
||||
UT = dataT:byte(1) * 256 + dataT:byte(2)
|
||||
l = (UT*1000/12)
|
||||
return(l)
|
||||
end
|
||||
function M.read()
|
||||
if (not init) then
|
||||
print("init() must be called before read.")
|
||||
else
|
||||
read_lux()
|
||||
end
|
||||
end
|
||||
function M.getlux()
|
||||
return l
|
||||
end
|
||||
return M
|
||||
|
|
Loading…
Reference in New Issue