coolwolf / 10/08/2019

NodeMCU serial Communication with Nextion using LUA

  1. Never forget to set a fuse in init.lua
gpio.mode(6, gpio.INPUT)
EnableBoot=gpio.read(6)

if EnableBoot==0 then dofile("main.lua") 
else print("Device will not continue booting...")
end

Consider we have a text with id t0 on Nextion.
To test two way communication, we put a button on Nextion, which send “Hello from Nextion” over serial.
This incoming data is also printed to the debug screen.
The last component on Nextion is a gauge with id z0.

Below you can found main.lua file wihch does two way communication with Nextion. It sends the Pot value to the Nextion on input trigger. And at at every second it sends Pot value to Nextion’s gauge as integer value.

print("Normal Boot")

local MyInput=5
local Threshold=1000
local LastTrig=0
local PotValue=0

gpio.mode(MyInput,gpio.INT)

local mytimer = tmr.create()

local function SendToNextion(Object,Property,Value,IsInt)
    if IsInt then
        uart.write(0,Object.."."..Property.."="..Value..(string.char (255))..(string.char (255))..(string.char (255)))
    else 
        uart.write(0,Object.."."..Property.."=\""..Value.."\""..(string.char (255))..(string.char (255))..(string.char (255)))
    end  
end

local function InputTrigger(State, Time)
    local ms=tmr.now()/1000
    local diff=ms-LastTrig
    if diff



I hope this helps.

coolwolf / 18/04/2019

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




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