Слияние кода завершено, страница обновится автоматически
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "dht12"
VERSION = "1.0.0"
-- sys库是标配
_G.sys = require("sys")
-- https://datasheet.lcsc.com/szlcsc/DHT12-Digital-temperature-and-humidity-sensor_C83989.pdf
-- Air302只有一个i2c, id=0
-- 如果读不到数据, 请尝试以下操作
-- 1. 调换SCL和SDA
-- 2. 确保SCL和SDA均有上拉到VCC(3.3v), 1k~10k
-- -- 初始化并打开I2C操作DHT12
-- local function read_dht12(id)
-- local data = i2c.readReg(id, 0x5C, 0, 5)
-- if not data then
-- log.info("i2c", "read reg fail")
-- return
-- end
-- log.info("DHT12 HEX data: ", data:toHex())
-- -- 分别是湿度整数,湿度小数,温度整数,温度湿度
-- local _, h_H, h_L, t_H, t_L,crc = pack.unpack(data, 'b5')
-- log.info("DHT12 data: ", h_H, h_L, t_H, t_L)
-- -- 计算校验和, 前4位的值相加应该等于最后一位的值
-- if (((h_H + h_L + t_H + t_L) & 0xFF )) ~= crc then
-- log.info("DHT12", "check crc fail")
-- return "0.0", "0.0"
-- end
-- -- 需要考虑温度低于0度的情况, t_L第0位是符号位
-- local t_L2 = tonumber(t_L)
-- if t_L2 > 127 then
-- return h_H .. ".".. h_L, "-" .. t_H .. "." .. tostring(t_L2 - 128)
-- else
-- return h_H .. ".".. h_L, t_H .. "." .. t_L
-- end
-- end
sys.taskInit(function()
local id = 0--i2c的id,请按需更改
while 1 do
sys.wait(5000) -- 5秒读取一次
i2c.setup(id, i2c.SLOW)
--log.info("dht12", read_dht12(0)) -- 如果想用传统方式读取,请取消read_dht12方法的注释
log.info("dht12", i2c.readDHT12(id))
i2c.close(id)
end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.