一般按鍵大都只做一件事,但是nodemcu 可以利用 tmr.alarm 這個功能
在指定時間內讀取按鍵被按了幾次,
這樣一個按鍵就可以執行多種不同的功能。
(nodemcu 一共可以設 6個alarm)
在 init.lua 裡定義 b=0
並 dofile('button.lua')
在button.lua 裡定義如下
function buttdo()
if b == 1 then
do something as 1
elseif b == 2 then
do something as 2
elseif b == 3 then
do something as 3
elseif b == 4 then
do something as 4
else
print(b)
end
b=0
end
function buttcheck()
if b == 0 then
tmr.alarm(4,1100,0, function() buttdo() end)
-- 利用 alarm 1100(1.1 秒) 時間來累積按鍵次數
-- 時間到,由buttdo() 去查總共按了幾次,執行對應的事
end
end
gpio.trig(2,"down", function() buttcheck() b=b+1 tmr.delay(200000) end)
-- 如果按鍵已經被按下,按鍵在接下來的1.1 秒之間只用來累積次數
-- tmr.delay(200000) 是用來避免按鍵按下時在極短時間內被算成按很多次
-- 200000 是 0.2 秒,這是我自己試的經驗值,或許你的狀況不一樣
在指定時間內讀取按鍵被按了幾次,
這樣一個按鍵就可以執行多種不同的功能。
(nodemcu 一共可以設 6個alarm)
在 init.lua 裡定義 b=0
並 dofile('button.lua')
在button.lua 裡定義如下
function buttdo()
if b == 1 then
do something as 1
elseif b == 2 then
do something as 2
elseif b == 3 then
do something as 3
elseif b == 4 then
do something as 4
else
print(b)
end
b=0
end
function buttcheck()
if b == 0 then
tmr.alarm(4,1100,0, function() buttdo() end)
-- 利用 alarm 1100(1.1 秒) 時間來累積按鍵次數
-- 時間到,由buttdo() 去查總共按了幾次,執行對應的事
end
end
gpio.trig(2,"down", function() buttcheck() b=b+1 tmr.delay(200000) end)
-- 如果按鍵已經被按下,按鍵在接下來的1.1 秒之間只用來累積次數
-- tmr.delay(200000) 是用來避免按鍵按下時在極短時間內被算成按很多次
-- 200000 是 0.2 秒,這是我自己試的經驗值,或許你的狀況不一樣
1 則留言:
很贊哦!
張貼留言