NodeMCU Lua gpio.trig() kullanımı
grpio.trig fonksiyonu ile genel kullanım giriş/çıkışlarının durumlarına göre tetikleme yapabilirsiniz. Aşağıda her bir tetikleme modununun nasıl çalıştığını anlatmaya çalıştım.
up: Pin voltajı eksiden artıya değiştiğinde tetiklenir. Bir kez tetiklendiğinde, eksi görüp tekrar artı görmediği sürece tetiklenmez. Yani tekrar tetiklenmesi için pin girişinin eksi olması ve tekrar artı olması gerekir.
Örnek Kod:
local GirisPini=1 gpio.mode(GirisPini,gpio.INT) local function PinUp(durum, zaman) print("PinUp Durum:"..durum.." Zaman:"..zaman) print("..................") end gpio.trig(GirisPini, "up", PinUp) |
down: Pin voltajı artıdan eksiye döndüğünde tetiklenir. Bir kez tetiklendiğinde tekrar tetiklenmesi için pin değerinin yeniden bir kez artı ve tekrar eksi olması gerekir.
Örnek Kod:
gpio.mode(GirisPini,gpio.INT) local function PinDown(durum, zaman) print("PinDown Durum:"..durum.." Zaman:"..zaman) print("..................") end gpio.trig(GirisPini, "down", PinDown) |
both: Pin voltajı değiştiğinde tetiklenir. Eksiden artıya veya artıdan eksiye her değiştiğinde tetiklenir.
Örnek Kod:
gpio.mode(GirisPini,gpio.INT) local function PinBoth(durum, zaman) print("PinBoth Durum:"..durum.." Zaman:"..zaman) print("..................") end gpio.trig(GirisPini, "both", PinBoth) |
low: Pin voltajı eksi olduğu sürece sürekli tetiklenir. Yukarıdakilerin tamamı bir kez tetiklenirken, low ve high sürekli olarak tekrar eder.
local GirisPini=1 gpio.mode(GirisPini,gpio.INT) tamponsure=300 zamanfarki=0 sonokuma=0 local function PinLow(durum, zaman) --sürekli tekrar etmemesi için 300 milisaniyelik aralıklarla kontrol etsin zamanfarki=(zaman-sonokuma)/1000 if zamanfarki<tamponsure then return end print("PinLow Durum:"..durum.." Zaman:"..zaman) print("..................") sonokuma=zaman end gpio.trig(GirisPini, "low", PinLow) |
high: Pin voltajı artı olduğu sürece sürekli tetiklenir.
local GirisPini=1 gpio.mode(GirisPini,gpio.INT) tamponsure=300 zamanfarki=0 sonokuma=0 local function PinHigh(durum, zaman) --sürekli tekrar etmemesi için 300 milisaniyelik aralıklarla kontrol etsin zamanfarki=(zaman-sonokuma)/1000 if zamanfarki<tamponsure then return end print("PinHigh Durum:"..durum.." Zaman:"..zaman) print("..................") sonokuma=zaman end gpio.trig(GirisPini, "low", PinHigh) |