ESP8266 -- lua开发学习之路 七 (DHT11模块和pwm配置)

站在应用层写程序就是方便

一.  读取 DHT11数据  使用 lua 只需要一个函数  当时使用stm32读DHT11数据时一个时序问题搞了半天....时钟没弄好/xk

ESP8266之lua操作dht11 --->  status, temp, humi, temp_dec, humi_dec = dht.read11(5)      该函数返回5个数据包含状态位,温度整数位, 湿度整数位, 温度小数位 ,  湿度小数位  -------至于读出来的数据怎么使用那是用户的事

但是有个问题 读取数据时经常返回错误状态 ,但是数据还是正常的.......

在程序和打印的数据一会体现出来....

init.lua文件: 这次在这个文件中加载两个文件

gpio.mode(4,gpio.OUTPUT)
gpio.write(4,1)--关闭模块自动的蓝色LED 一会pwm控制时观察这个LED

tmr.alarm(1, 3000, 0, function()
    dofile("dht11.lua")
    dofile("pwm.lua")
end)

dht11.lua文件: 通过定时器循环读取模块数据并通过串口打印数据

dht11Pin = 5 --定义dht11数据引脚 索引号5 对应GPIO 14

--定时器3 每2s循环读取一次DHT11数据
tmr.alarm(3,2000,1,function()

    status, temp, humi, temp_dec, humi_dec = dht.read11(dht11Pin)  -- 一句话读取dht11数据
    if status == dht.OK then  --根据返回的状态
        print("DHT OK")
        print(string.format("DHT Temperature:%d.%03d;Humidity:%d.%03d\r\n",
              math.floor(temp), temp_dec, math.floor(humi), humi_dec))
      
    
    elseif status == dht.ERROR_CHECKSUM then 
        print( "DHT Checksum error." )
        print(string.format("DHT Temperature:%d.%03d;Humidity:%d.%03d\r\n",
              math.floor(temp), temp_dec, math.floor(humi), humi_dec))
     
    elseif status == dht.ERROR_TIMEOUT then  
        print( "DHT timed out." )
        print(string.format("DHT Temperature:%d.%03d;Humidity:%d.%03d\r\n",
              math.floor(temp), temp_dec, math.floor(humi), humi_dec))
         --通过print组合数据并通过串口打印
    end
 end)

通过串口打印的数据

二.  PWM 也是比较灵活的只要关联号GPIO_Pin 就可以启动PWM了

pwm.lua文件:

PwmValue = 1023 --设置pwm初始值 重置pwm用

pwm.setup(4, 100, 1023) --设置pwm输出引脚 索引号4  GPIO2 ,频率为100 ,初始值范围0~1023 

--通过定时器 每10ms循环进入一次回调函数
--回调函数就是不停改变PwmValue 然后通过函数pwm.setduty() 重置占空比
--开始想5ms中断一次但是会重启
tmr.alarm(4,10,1,function() 
    PwmValue = PwmValue-1
    if PwmValue==0 then   PwmValue = 1023 end
    pwm.setduty(4,PwmValue)
end)
 
pwm.start(4) --启动pwm输出

把这三个.lua文件上传到木块内 就可以观察 模块上的蓝LED 渐变状态 通过串口观看dht11数据.......

猜你喜欢

转载自blog.csdn.net/dianzishi123/article/details/82592852