把自己的电脑做网站服务器,如何用dw制作网页文字链接,做一个家乡网站有什么可以做,阿里网站怎样做seo常量 常量 类型 解释 i2c.FAST number 高速 i2c.SLOW number 低速
i2c.exist(id)
i2c编号是否存在
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2
返回值 返回值类型 解释 bool 存在就返回true,否则返回false
例子
-- 检查i2c1是否存…常量 常量 类型 解释 i2c.FAST number 高速 i2c.SLOW number 低速
i2c.exist(id)
i2c编号是否存在
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2
返回值 返回值类型 解释 bool 存在就返回true,否则返回false
例子
-- 检查i2c1是否存在
if i2c.exist(1) thenlog.info(存在 i2c1)
endi2c.setup(id, speed, slaveAddr)
i2c初始化
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2 int I2C速度, 例如i2c.FAST
返回值 返回值类型 解释 int 成功就返回1,否则返回0
例子
-- 初始化i2c1
i2c.setup(1, i2c.FAST) -- 端口正确就一定成功
-- 如需判断i2c id是否合法, 请使用 i2c.exist 函数i2c.createSoft(scl,sda,delay)
新建一个软件i2c对象
参数 传入值类型 解释 int i2c SCL引脚编号(GPIO编号) int i2c SDA引脚编号(GPIO编号) int 每个操作的延时, 单位us, 默认5
返回值 返回值类型 解释 软件I2C对象 可当作i2c的id使用
例子
-- 注意这个接口是软件模拟i2c速度可能会比硬件的慢
-- 不需要调用i2c.close接口
-- 初始化软件i2c
local softI2C i2c.createSoft(1, 2, 5)
i2c.send(softI2C, 0x5C, string.char(0x0F, 0x2F))
-- 注意, 第3个参数是 2023.06.19 添加的delay
-- 通过调整delay参数的值, 可增加或降低I2C的速度i2c.send(id, addr, data,stop)
i2c发送数据
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2 int I2C子设备的地址, 7位地址 integer/string/table 待发送的数据,自适应参数类型 integer 可选参数 是否发送停止位 1发送 0不发送 默认发送(105不支持)
返回值 返回值类型 解释 true/false 发送是否成功
例子
-- 往i2c0发送1个字节的数据
i2c.send(0, 0x68, 0x75)
-- 往i2c1发送2个字节的数据
i2c.send(1, 0x5C, string.char(0x0F, 0x2F))
i2c.send(1, 0x5C, {0x0F, 0x2F})i2c.recv(id, addr, len)
i2c接收数据
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2 int I2C子设备的地址, 7位地址 int 接收数据的长度
返回值 返回值类型 解释 string 收到的数据
例子
-- 从i2c1读取2个字节的数据
local data i2c.recv(1, 0x5C, 2)i2c.writeReg(id, addr, reg, data,stop)
i2c写寄存器数据
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2 int I2C子设备的地址, 7位地址 int 寄存器地址 string 待发送的数据 integer 可选参数 是否发送停止位 1发送 0不发送 默认发送(105不支持)
返回值 返回值类型 解释 true/false 发送是否成功
例子
-- 从i2c1的地址为0x5C的设备的寄存器0x01写入2个字节的数据
i2c.writeReg(1, 0x5C, 0x01, string.char(0x00, 0xF2))i2c.readReg(id, addr, reg, len)
i2c读寄存器数据
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2 int I2C子设备的地址, 7位地址 int 寄存器地址 int 待接收的数据长度 integer 可选参数 是否发送停止位 1发送 0不发送 默认发送(105不支持)
返回值 返回值类型 解释 string 收到的数据
例子
-- 从i2c1的地址为0x5C的设备的寄存器0x01读出2个字节的数据
i2c.readReg(1, 0x5C, 0x01, 2)i2c.close(id)
关闭i2c设备
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2
返回值 返回值类型 解释 nil 无返回值
例子
-- 关闭i2c1
i2c.close(1)i2c.readDHT12(id)
从i2c总线读取DHT12的温湿度数据
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2 int DHT12的设备地址,默认0x5C
返回值 返回值类型 解释 boolean 读取成功返回true,否则返回false int 湿度值,单位0.1%, 例如 591 代表 59.1% int 温度值,单位0.1摄氏度, 例如 292 代表 29.2摄氏度
例子
-- 从i2c0读取DHT12
i2c.setup(0)
local re, H, T i2c.readDHT12(0)
if re thenlog.info(dht12, H, T)
endi2c.readSHT30(id,addr)
从i2c总线读取DHT30的温湿度数据(由”好奇星”贡献)
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2 int 设备addr,SHT30的设备地址,默认0x44 bit7
返回值 返回值类型 解释 boolean 读取成功返回true,否则返回false int 湿度值,单位0.1%, 例如 591 代表 59.1% int 温度值,单位0.1摄氏度, 例如 292 代表 29.2摄氏度
例子
-- 从i2c0读取SHT30
i2c.setup(0)
local re, H, T i2c.readSHT30(0)
if re thenlog.info(sht30, H, T)
endi2c.transfer(id, addr, txBuff, rxBuff, rxLen)
i2c通用传输包括发送N字节发送N字节接收N字节接收N字节三种功能在发送转接收过程中发送reStart信号,解决类似mlx90614必须带restart信号但是又不能用i2c.send来控制的比如air105
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2 int I2C子设备的地址, 7位地址 integer/string/zbuff 待发送的数据,自适应参数类型如果为nil则不发送数据 zbuff 待接收数据的zbuff 如果不用zbuff则接收数据将在return返回 int 需要接收的数据长度如果为0或nil则不接收数据
返回值 返回值类型 解释 boolean true/false 发送是否成功 string or nil 如果参数5是interger则返回接收到的数据
例子
local result, _ i2c.transfer(0, 0x11, txbuff, rxbuff, 1)
local result, _ i2c.transfer(0, 0x11, txbuff, nil, 0) --只发送txbuff里的数据不接收数据典型应用就是写寄存器了这里寄存器地址和值都放在了txbuff里
local result, _ i2c.transfer(0, 0x11, \x01\x02\x03, nil, 1) --发送0x01 0x020x03不接收数据如果是eeprom就是往0x01的地址写02和03或者往0x0102的地址写03看具体芯片了
local result, rxdata i2c.transfer(0, 0x11, \x01\x02, nil, 1) --发送0x01 0x02然后接收1个字节典型应用就是eeprom
local result, rxdata i2c.transfer(0, 0x11, 0x00, nil, 1) --发送0x00然后接收1个字节典型应用各种传感器i2c.xfer(id, addr, txBuff, rxBuff, rxLen, transfer_done_topic, timeout)
i2c非阻塞通用传输类似transfer但是不会等到I2C传输完成才返回调用本函数会立刻返回I2C传输完成后通过消息回调
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2 int I2C子设备的地址, 7位地址 zbuff 待发送的数据由于用的非阻塞模型为保证动态数据的有效性只能使用zbuff发送的数据从zbuff.addr开始长度为zbuff.used zbuff 待接收数据的zbuff如果为nil则忽略后面参数 不接收数据。接收的数据会放在zbuff.addr开始的位置会覆盖掉之前的数据注意zhuff的预留空间要足够 int 需要接收的数据长度如果为0或nil则不接收数据 string 传输完成后回调的消息 int 超时时间如果填nil则为100ms
返回值 返回值类型 解释 boolean true/false 本次传输是否正确启动true启动false有错误无法启动。传输完成会发布消息transfer_done_topic和boolean型结果
例子
local result i2c.xfer(0, 0x11, txbuff, rxbuff, 1, I2CDONE) if result then result, i2c_id, succ, error_code sys.waitUntil(I2CDONE) end if not result or not succ then log.info(i2c fail, error code, error_code) else log.info(i2c ok) endi2c.scan(id)
扫描i2c设备
参数 传入值类型 解释 int 设备id, 例如i2c1的id为1, i2c2的id为2
返回值 返回值类型 解释 nil 当前无返回值
例子
-- 本函数于2023.07.04添加
-- 这个函数的主要目标是为了在开发期扫描i2c设备
-- 有些BSP在指定addr无响应时会输出日志,导致输出会被打乱
i2c.scan()