diff --git a/lua_modules/bh1750/bh1750.lua b/lua_modules/bh1750/bh1750.lua new file mode 100644 index 00000000..99131131 --- /dev/null +++ b/lua_modules/bh1750/bh1750.lua @@ -0,0 +1,54 @@ +-- *************************************************************************** +-- BH1750 module for ESP8266 with nodeMCU +-- BH1750 compatible tested 2015-1-22 +-- +-- Written by xiaohu +-- +-- 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