main.lua 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. PROJECT = "sensor"
  2. VERSION = "1.0.0"
  3. require "log"
  4. require "sys"
  5. require "misc"
  6. -- i2c ID
  7. i2cid = 2
  8. -- i2c 速率
  9. speed = 100000
  10. -- 初始化
  11. function init(address)
  12. if i2c.setup(i2cid, speed, -1, 1) ~= speed then
  13. log.error("i2c", "setup fail", addr)
  14. return
  15. end
  16. addr = address
  17. end
  18. -- 读取数据
  19. function send(...)
  20. sys.wait(10)
  21. if not addr then
  22. log.info("i2c", "addr err")
  23. return
  24. end
  25. local t = {...}
  26. if i2c.send(i2cid, addr, t) ~= #t then
  27. log.error("i2c", "send fail", #t)
  28. return
  29. end
  30. return true
  31. end
  32. -- 发送数据
  33. function read(n)
  34. sys.wait(10)
  35. if not addr then
  36. log.info("i2c", "addr err")
  37. return "\x00"
  38. end
  39. val = i2c.recv(i2cid, addr, n)
  40. if val and #val>0 then
  41. return val
  42. end
  43. return "\x00"
  44. end
  45. -- 颜色识别传感器
  46. function TCS34725()
  47. init(0x29)
  48. send(0x83, 0xff)
  49. send(0x81, 0x00)
  50. send(0x8f, 0x00)
  51. send(0x80, 0x03)
  52. sys.wait(800)
  53. while true do
  54. sys.wait(1000)
  55. send(0x94)
  56. _, c, red, green, blue = pack.unpack(read(8), "<HHHH")
  57. if red and green and blue then
  58. lux = (-0.32466 * red) + (1.57837 * green) + (-0.73191 * blue)
  59. log.info("red", red)
  60. log.info("green", green)
  61. log.info("blue", blue)
  62. log.info("c, lux", c, lux)
  63. else
  64. log.info("TCS34725", "err")
  65. end
  66. end
  67. end
  68. sys.taskInit(function()
  69. sys.wait(3000)
  70. TCS34725()
  71. end)
  72. sys.init(0, 0)
  73. sys.run()