nodemcu用lua语言实现延迟呼吸灯。
做过单片机,用惯了c语言的,都喜欢用while或for来实现延迟,但是lua语言用while循环就没用了,因为c语言是同步语言,lua是异步语言。
同步和异步什么区别呢?
同步:第一句没执行完,不会去执行第二句语言
异步:第一句是否执行完不重要,第二句语言也会去执行,异步语言的好处是效率高,但问题是,很多编程是需要获得第一句的返回值,或等第一句执行完才能执行第二句,这样就行不通了。
所以用lua语言编程,就不能用c语言的思维
这里的延迟,需要用到的是延迟函数
ledState = 0 //定义变量
function ledPWM() //定义了个函数
if (ledState == 1) then
ledState = 0
gpio.write(0, gpio.HIGH)
gpio.write(1, gpio.LOW)
else
ledState = 1
gpio.write(0, gpio.LOW)
gpio.write(1, gpio.HIGH)
end
end
tmr.alarm(0, 1000, tmr.ALARM_AUTO, ledPWM) //定义了个定时器,编号是0,间隔1m执行,执行函数为ledPWM
nodemcu用lua语言实现延迟呼吸灯。
做过单片机,用惯了c语言的,都喜欢用while或for来实现延迟,但是lua语言用while循环就没用了,因为c语言是同步语言,lua是异步语言。
同步和异步什么区别呢?
同步:第一句没执行完,不会去执行第二句语言
异步:第一句是否执行完不重要,第二句语言也会去执行,异步语言的好处是效率高,但问题是,很多编程是需要获得第一句的返回值,或等第一句执行完才能执行第二句,这样就行不通了。
所以用lua语言编程,就不能用c语言的思维
这里的延迟,需要用到的是延迟函数
ledState = 0 //定义变量
function ledPWM() //定义了个函数
if (ledState == 1) then
ledState = 0
gpio.write(0, gpio.HIGH)
gpio.write(1, gpio.LOW)
else
ledState = 1
gpio.write(0, gpio.LOW)
gpio.write(1, gpio.HIGH)
end
end
tmr.alarm(0, 1000, tmr.ALARM_AUTO, ledPWM) //定义了个定时器,编号是0,间隔1m执行,执行函数为ledPWM
举报