123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- -- ***************************************************************************
- -- 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
- --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)
- local c = i2c.read(id, length)
- i2c.stop(id)
- return c
- end
- local function read_lux()
- local dataT = read_data(GY_30_address, CMD, 2)
- --Make it more faster
- local 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
|