main.lua 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "sht20demo"
  3. VERSION = "1.0.0"
  4. -- sys库是标配
  5. sys = require("sys")
  6. pm.ioVol(pm.IOVOL_ALL_GPIO, 3300)
  7. --[[ mcu.altfun(mcu.I2C, 0, 66, 2, nil)
  8. mcu.altfun(mcu.I2C, 0, 67, 2, nil) ]]
  9. gpio.setup(2,1)--GPIO2打开给camera_3.3V供电
  10. -- 接线
  11. --[[
  12. SHT20 --- 模块
  13. SDA - I2C_SDA
  14. SCL - I2C_SCL
  15. VCC - VDDIO
  16. GND - GND
  17. ]]
  18. -- 启动个task, 定时查询SHT20的数据
  19. sys.taskInit(function()
  20. local tmp,hum -- 原始数据
  21. local temp,hump -- 真实值
  22. --1010 000x
  23. local addr = 0x40
  24. -- 按实际修改哦
  25. local id = 1
  26. log.info("i2c", "initial",i2c.setup(id))
  27. --i2c.scan()
  28. while true do
  29. --第一种方式
  30. i2c.send(id, addr, string.char(0xF3))
  31. sys.wait(100)
  32. tmp = i2c.recv(id, addr, 2)
  33. log.info("SHT20", "read tem data", tmp:toHex())
  34. i2c.send(id, addr, string.char(0xF5))
  35. sys.wait(100)
  36. hum = i2c.recv(id, addr, 2)
  37. log.info("SHT20", "read hum data", hum:toHex())
  38. local _,tval = pack.unpack(tmp,'>H')
  39. local _,hval = pack.unpack(hum,'>H')
  40. if tval and hval then
  41. temp = (((17572 * tval) >> 16) - 4685)/100
  42. hump = (((12500 * hval) >> 16) - 600)/100
  43. log.info("SHT20", "temp,humi",temp,hump)
  44. end
  45. sys.wait(1000)
  46. end
  47. end)
  48. -- 启动个task, 定时查询SHT40测试代码的数据
  49. --[[ sys.taskInit(function()
  50. local tmp,hum -- 原始数据
  51. local temp,hump -- 真实值
  52. --1010 000x
  53. local addr = 0x44
  54. -- 按实际修改哦
  55. local id = 0
  56. log.info("i2c", "initial",i2c.setup(id))
  57. --i2c.scan()
  58. while true do
  59. --第一种方式
  60. local resalt=i2c.send(id, addr, string.char(0x89))
  61. log.info("打印状态=", resalt)
  62. sys.wait(100)
  63. tmp = i2c.recv(id, addr, 6)
  64. log.info("MT6701", "read 03 data", tmp:toHex())
  65. i2c.send(id, addr, string.char(0x04))
  66. sys.wait(100)
  67. hum = i2c.recv(id, addr, 2)
  68. log.info("MT6701", "read 04 data", hum:toHex())
  69. local _,tval = pack.unpack(tmp,'>H')
  70. local _,hval = pack.unpack(hum,'>H')
  71. if tval and hval then
  72. temp = (((17572 * tval) >> 16) - 4685)/100
  73. hump = (((12500 * hval) >> 16) - 600)/100
  74. log.info("MT6701", "03,04",temp,hump)
  75. end
  76. sys.wait(1000)
  77. end
  78. end) ]]
  79. -- 启动个task, 定时查询MT6701的数据
  80. --[[ sys.taskInit(function()
  81. local tmp,hum -- 原始数据
  82. local temp,hump -- 真实值
  83. --1010 000x
  84. local addr = 0x06
  85. -- 按实际修改哦
  86. local id = 1
  87. log.info("i2c", "initial",i2c.setup(id))
  88. --i2c.scan()
  89. while true do
  90. --第一种方式
  91. local resalt=i2c.send(id, addr, string.char(0x03))
  92. log.info("打印状态1=", resalt)
  93. local resalt=i2c.send(id, addr, string.char(0x03))
  94. log.info("打印状态2=", resalt)
  95. sys.wait(100)
  96. tmp = i2c.recv(id, addr, 2)--tmp是字符串
  97. log.info("MT6701", "read 03 data", tmp:toHex())
  98. i2c.send(id, addr, string.char(0x04))
  99. sys.wait(100)
  100. hum = i2c.recv(id, addr, 2)
  101. log.info("MT6701", "read 04 data", hum:toHex())
  102. --local raw_value =(tmp << 6) | (hum & 0x3F)
  103. -- 步骤4: 转换为角度(0~360°)
  104. local _,tval = pack.unpack(tmp,'>H')
  105. log.info("MT6701", "tval=",tval)
  106. local _,hval = pack.unpack(hum,'>H')
  107. log.info("MT6701", "hval=",hval)
  108. if tval and hval then
  109. --temp = ((tval & 0x00ff) << 8) | ((hval & 0x00fc)>>2)
  110. --temp = (tval << 6) | (hval & 0x3F)
  111. temp = (tval >> 2)
  112. log.info("MT6701", "temp=",temp)
  113. local angle = (temp / 16383) * 360
  114. log.info("MT6701", "angle=",angle)
  115. end
  116. sys.wait(5000)
  117. end
  118. end) ]]
  119. -- 用户代码已结束---------------------------------------------
  120. -- 结尾总是这一句
  121. sys.run()
  122. -- sys.run()之后后面不要加任何语句!!!!!