main.lua 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "sht20demo"
  3. VERSION = "1.0.0"
  4. -- sys库是标配
  5. sys = require("sys")
  6. -- 接线
  7. --[[
  8. SHT20 --- Air302
  9. SDA - I2C_SDA
  10. SCL - I2C_SCL
  11. VCC - VDDIO
  12. GND - GND
  13. ]]
  14. -- 提示, 老板子上的I2C丝印可能是反的, 如果读取失败请调换一下SDA和SLA
  15. -- 启动个task, 定时查询SHT20的数据
  16. sys.taskInit(function()
  17. local tmp,hum -- 原始数据
  18. local temp,hump -- 真实值
  19. --1010 000x
  20. local addr = 0x40
  21. -- 按实际修改哦
  22. local id = 0
  23. log.info("i2c", "initial",i2c.setup(id))
  24. while true do
  25. --第一种方式
  26. i2c.send(id, addr, string.char(0xF3))
  27. sys.wait(100)
  28. tmp = i2c.recv(id, addr, 2)
  29. log.info("SHT20", "read tem data", tmp:toHex())
  30. i2c.send(id, addr, string.char(0xF5))
  31. sys.wait(100)
  32. hum = i2c.recv(id, addr, 2)
  33. log.info("SHT20", "read hum data", hum:toHex())
  34. local _,tval = pack.unpack(tmp,'>H')
  35. local _,hval = pack.unpack(hum,'>H')
  36. if tval and hval then
  37. temp = (((17572 * tval) >> 16) - 4685)/100
  38. hump = (((12500 * hval) >> 16) - 600)/100
  39. log.info("SHT20", "temp,humi",temp,hump)
  40. end
  41. sys.wait(1000)
  42. end
  43. end)
  44. -- 用户代码已结束---------------------------------------------
  45. -- 结尾总是这一句
  46. sys.run()
  47. -- sys.run()之后后面不要加任何语句!!!!!