main.lua 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "sht30demo"
  3. VERSION = "1.0.0"
  4. -- sys库是标配
  5. sys = require("sys")
  6. -- 接线
  7. --[[
  8. SHT30 --- 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. -- sht30的默认i2c地址
  18. local addr = 0x44
  19. -- 按实际修改哦
  20. local id = 0
  21. log.info("i2c", "initial",i2c.setup(id))
  22. while true do
  23. --第一种方式
  24. i2c.send(id, addr, string.char(0x2C, 0x06))
  25. sys.wait(5) -- 5ms
  26. local data = i2c.recv(id, addr, 6)
  27. log.info("sht30", data:toHex())
  28. if #data == 6 then
  29. local _,tval,ccrc,hval,hcrc = pack.unpack(data, ">HbHb")
  30. -- local cTemp = ((((data:byte(1) * 256.0) + data:byte(2)) * 175) / 65535.0) - 45
  31. -- local fTemp = (cTemp * 1.8) + 32
  32. -- local humidity = ((((data:byte(4) * 256.0) + data:byte(5)) * 100) / 65535.0)
  33. local cTemp = ((tval * 175) / 65535.0) - 45
  34. -- local fTemp = (cTemp * 1.8) + 32
  35. local humidity = ((hval * 100) / 65535.0)
  36. log.info("sht30", cTemp, humidity)
  37. end
  38. sys.wait(2000)
  39. end
  40. end)
  41. -- 用户代码已结束---------------------------------------------
  42. -- 结尾总是这一句
  43. sys.run()
  44. -- sys.run()之后后面不要加任何语句!!!!!