找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3080|回复: 1
收起左侧

ESP8266 lua控制定时器详解

[复制链接]
ID:81424 发表于 2018-11-5 20:45 | 显示全部楼层 |阅读模式
本帖最后由 沙漠之痕 于 2018-11-7 12:41 编辑

通过使用定时器控制LED闪烁并通过串口打印信息

一.方式1
init.lua文件
LED_Pin=4
gpio.mode(LED_Pin, gpio.OUTPUT)
gpio.write(LED_Pin, 0)
tmr.alarm(0,2000,1, function()
    gpio.write(LED_Pin,1-gpio.read(LED_Pin))
    print("hello jiangxin")
end)
init.lua文件结束

使用定时器0, 2秒执行一次回调函数”function() end”
1.png
二. 方式2
下面我们在用另一种方式实现定时器调用函数:
通过关键字”local ”和”function”定义一个本地局部函数LED() ;在定时器的回调函数中调用
init.lua文件:
LED_Pin=4
gpio.mode(LED_Pin, gpio.OUTPUT)
gpio.write(LED_Pin, 0)
local function LED()
    gpio.write(LED_Pin,1-gpio.read(LED_Pin))
    print("hello everyone")
end
tmr.alarm(0,2000,1, LED)
init.lua文件结束
2.png
此处只有通过使用print()函数打印观看定时器的运行状态,led 的闪烁状态,实在是贴不上效果了

二. 方式3
重新创建一个init.lua文件当定时时间到时执行打印操作,且只执行一次
init.lua文件
LED_Pin=4
gpio.mode(LED_Pin, gpio.OUTPUT)
gpio.write(LED_Pin, 0)
local function LED()
    gpio.write(LED_Pin,1)
    print("hello tmr0")
end
tmr.alarm(0,2000,0, LED)
init.lua文件结束
下面开始写lua程序,上电打开led;通过2秒后串口打印“hello tmr0” 并熄灭led
3.png
看一下led;外接插装的红色ledwifi模块内部蓝色led接的同一个GPIO引脚
4.png
通过查看原理图可以GPIO输出高电平,led反而熄灭
5.png

使用的函数介绍:

1. tmr.alarm(id, interval_ms, mode, func())
  参数: id:  timer id0-6
   interval_ms: 定时时间ms
   mode: 定时器模式 “0” 只运行该定时器 ;  “1” 循环运行该定时器
   func(): 定时时间到后调用的函数
比如使用定时器0,定时1秒循环打印”hello” :
tmr.alarm(0,1000,1,function()print(“hello”)end)

2. print() 直接通过串口打印数据.
使用方式:print(“hello”)打印”hello”
data = “ok”  
print(data) 打印data的内容”ok”


ESP8266 定时器 lua程序源码(单文件).zip (1.31 KB, 下载次数: 11)
回复

使用道具 举报

ID:424598 发表于 2019-1-6 12:09 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表