乐鑫技术交流
直播中

张明

8年用户 1087经验值
私信 关注
[问答]

用LUA脚本的工作部分制作一个模块报错的原因?怎么处理?

嗨,我试图用 LUA 脚本的工作部分制作一个模块,出现错误:
SHT21_usage.lua:6: attempt to call field 'Init'
代码:全选 local moduleName = ...
local M = {}
_G[moduleName] = M

local pinSDA = 6
local pinSCL = 7
local SHTAddr = 0x40
local id = 0
local eTempHoldCmd        = 0xE3
local eRHumidityHoldCmd   = 0xE5
local eTempNoHoldCmd      = 0xF3
local eRHumidityNoHoldCmd = 0xF5

function M.Init(Ide,SDA,SCL)
  return i2c.setup(Ide, pinSDA, pinSCL, i2c.SLOW)
end

function M.Read_User_Reg(Ide)
  i2c.start(Ide)
  i2c.address(Ide, SHTAddr ,i2c.TRANSMITTER)
  i2c.write(Ide,0xE7)
  i2c.stop(Ide)

  i2c.start(Ide)
  i2c.address(Ide, SHTAddr,i2c.RECEIVER)
  --tmr.delay(1000)
  c=i2c.read(Ide,1)
  i2c.stop(Ide)
  return string.byte(c)
end

function M.Read_Temp(Ide)
  i2c.start(Ide)
  i2c.address(Ide, SHTAddr ,i2c.TRANSMITTER)
  i2c.write(Ide,eTempNoHoldCmd)
  i2c.stop(Ide)
  tmr.delay(100000)

  i2c.start(Ide)
  i2c.address(Ide, SHTAddr,i2c.RECEIVER)
  c=i2c.read(Ide,3)
  i2c.stop(Ide)
  --print("Raw",string.byte(c,1,2))
  d=bit.clear(bit.lshift(string.byte(c,1),8)+string.byte(c,2),1,3)
  return (((d*17572)/65536)-4685)/100;
end

function M.Read_Hum(Ide)
  i2c.start(Ide)
  i2c.address(Ide, SHTAddr ,i2c.TRANSMITTER)
  i2c.write(Ide,eRHumidityNoHoldCmd)
  i2c.stop(Ide)
  tmr.delay(50000)

  i2c.start(Ide)
  i2c.address(Ide, SHTAddr,i2c.RECEIVER)
  c=i2c.read(Ide,3)
  i2c.stop(Ide)
  --print("Raw",string.byte(c,1,2))
  d=bit.clear(bit.lshift(string.byte(c,1),8)+string.byte(c,2),1,3)
  return (((d*12500)/65536)-600)/100
end

--print("Speed ",Init(id,pinSDA, pinSCL))
--print("User reg",Read_User_Reg(id))

--print(string.format("%02.2f",Read_Temp(id)),"deg C")
--print(string.format("%02.2f",Read_Hum(id)),"RH")

return M


和用法:
代码:全选SHT21 = require("sht21_2")

pinSDA = 6
pinSCL = 7
id = 0
SHT21.Init(id,pinSDA, pinSCL)

print("Speed ",SHT21.Init(id,pinSDA, pinSCL))
print("User reg",SHT21.Read_User_Reg(id))

print(string.format("%02.2f",SHT21.Read_Temp(id)),"deg C")
print(string.format("%02.2f",SHT21.Read_Hum(id)),"RH")

SHT21 = nil
package.loaded["sht21_2"]=nil


哪里有问题?相同的结构适用于其他模块。

更多回帖

发帖
×
20
完善资料,
赚取积分