Browse Source

BH1750 Module, Written by xiaohu

Martin Han 9 years ago
parent
commit
555d64af2a
1 changed files with 54 additions and 0 deletions
  1. 54 0
      lua_modules/bh1750/bh1750.lua

+ 54 - 0
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