Yeah ! cela fonctionne enfin. En fait cela ne fonctionne QUE avec certaines pines du NodeMCU. A creuser maintenant pourquoi ?

This commit is contained in:
Christian Zufferey
2019-12-16 12:07:35 +01:00
parent ca0029ecb0
commit 3350b3b21c
3 changed files with 36 additions and 37 deletions

View File

@@ -1,5 +1,5 @@
-- Lit le capteur I2C HTU21D de mesure d'humidité et de température
print("\n 0_get_data.lua zf191215.2057 \n")
print("\n 0_get_data.lua zf191216.1205 \n")
-- https://cdn-shop.adafruit.com/datasheets/1899_HTU21D.pdf
-- Comparaison DHT22, AM2302, AM2320, AM2321, SHT71, HTU21D, Si7021, BME280
@@ -13,37 +13,26 @@ print("\n 0_get_data.lua zf191215.2057 \n")
id = 0
sda = 1
scl = 2
sda = 5
scl = 6
addr = 0x40
HUMIDITY = 0xE5
TEMPERATURE = 0xE3
SOFTRESET = 0xFE
trig = 4
gpio.mode(trig, gpio.OUTPUT)
gpio.write(trig, gpio.HIGH)
i2c.setup(id, sda, scl, i2c.SLOW)
i2c.start(id)
tmr.delay(1*1000)
i2c.address(id, addr, i2c.TRANSMITTER)
i2c.write(id, SOFTRESET)
tmr.delay(20*1000)
i2c.address(id, addr, i2c.TRANSMITTER)
i2c.write(id, HUMIDITY)
i2c.stop(id)
i2c.start(id)
i2c.address(id, addr, i2c.RECEIVER)
tmr.delay(50*1000)
gpio.write(trig, gpio.LOW)
tmr.delay(0.1*1000)
gpio.write(trig, gpio.HIGH)
r = i2c.read(id,3)
i2c.stop(id)
print(string.byte(r))
print(string.byte(r,2))
print(string.byte(r,3))
@@ -68,5 +57,3 @@ print(string.byte(r,2))
print(string.byte(r,3))
]]
tmr.delay(1*1000)
i2c.stop(id)

View File

@@ -1,15 +1,10 @@
print("\n a.lua zf191215.2112 \n")
print("\n a.lua zf191216.1206 \n")
t2 = 1234
trig = 4
gpio.mode(trig, gpio.OUTPUT)
gpio.write(trig, gpio.HIGH)
id = 0
sda = 1
scl = 2
sda = 5
scl = 6
addr = 0x40
r = ""
@@ -22,16 +17,14 @@ function readHumi()
i2c.address(id, addr, i2c.TRANSMITTER)
i2c.write(id, HUMIDITY)
i2c.stop(id)
i2c.start(id)
i2c.address(id, addr, i2c.RECEIVER)
tmr.delay(20000)
gpio.write(trig, gpio.LOW)
tmr.delay(10)
gpio.write(trig, gpio.HIGH)
r = i2c.read(id,3)
i2c.stop(id)
print(r)
return (bit.band((bit.lshift(string.byte(r,1),8)+string.byte(r,2)),0xfffc)*12500)/65536-600
end
@@ -41,9 +34,7 @@ function getHumidity()
return tonumber(string.format("%.1f", tostring(readHumi()/100)))
end
tmr.delay(15000)
i2c.setup(id, sda, scl, i2c.SLOW)
tmr.delay(15000)
t2 = getHumidity()
print("Humidity: "..t2.." %")

View File

@@ -0,0 +1,21 @@
-- http://www.esp8266.com/viewtopic.php?f=19&t=771
-- Scan for I2C devices
print("\n b.lua zf191216.1158 \n")
id=0
sda=5
scl=6
-- initialize i2c, set pin1 as sda, set pin0 as scl
print("start...")
i2c.setup(id,sda,scl,i2c.SLOW)
for i=0,127 do
i2c.start(id)
resCode = i2c.address(id, i, i2c.TRANSMITTER)
i2c.stop(id)
if resCode == true then print("We have a device on address 0x" .. string.format("%02x", i) .. " (" .. i ..")") end
end
print("stop...")