BV1AL 之無所不記

2015-11-08

ESP8266 nodemcu 多功能單按鍵

一般按鍵大都只做一件事,但是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 秒,這是我自己試的經驗值,或許你的狀況不一樣

標籤: , ,

1 Comments:

張貼留言

<< Home