刚拿到ESP8266板子, 迫不及待网上找到DEMO程序如下:

ledswitch=0
pin=4
gpio.mode(pin,gpio.OUTPUT)
tmr.alarm(0,2000,1,function()
    if ledswitch==0 then
        ledswitch=1 --led on
        gpio.write(pin,gpio.LOW)
    else
        ledswitch=0 --led off
        gpio.write(pin,gpio.HIGH)
    end
end)
 

    该代码保存、上传,然后愉快点了RUN,结果悲剧了,居然报错了“ attempt to call field 'alarm' (a nil value) ”, 该DEMO程序刷固件前还是好的可以运行啊, 为啥忽然来一个坑?

ESP8266踩坑记01     一番bing搜索,原来最新的固件在使用timer定时器时,需要先定义。呕吐呀,这个nodemcu的lua编程环境的向前兼容性简直太垃圾了,赶紧换新的语法伺候,新代码如下:

ledswitch=0
pin=4
gpio.mode(pin,gpio.OUTPUT)
local tObj = tmr.create()
tObj:alarm(1000, 1, function ()
    if ledswitch==0 then
        ledswitch=1 --led on
        gpio.write(pin,gpio.LOW)
    else
        ledswitch=0 --led off
        gpio.write(pin,gpio.HIGH)
    end
  end)

    新代码终于没问题可以运行了,LED灯终于开始一闪一闪了。

相关文章: