coolwolf / 16/08/2019

MicroPython machine.Pin kullanımı

Öncelikle kütüphaneyi dahil etmemiz gerekiyor:

from machine import Pin

Ardından pin nesnesi oluşturalım:

EspPin = Pin(33, Pin.IN)

Pin tetiklendiğinde çalıştırılacak fonksiyonu tanımlayalım:

def PinTrigger(p):
    print("Pin Tetiklendi:"+str(p)+"||")

Şimdi Pin.irq fonksiyonu ile pin voltajına göre nasıl tetikleme yapabileceğimize bakalım.
1. trigger=Pin.IRQ_FALLING

EspPin.irq(trigger=Pin.IRQ_FALLING , handler=PinTrigger)

Bu şekilde yaptığımızda, 33 nolu pin – (eksi) değer aldığı sürece, sürekli olarak PinTrigger fonksiyonu çalışacaktır.

2. trigger=Pin.IRQ_RISING

EspPin.irq(trigger=Pin.IRQ_RISING , handler=PinTrigger)

şeklinde kullandığımızda ise pin değeri eksiden artıya döndüğünde tetiklenir.

Mekanik butonlar durum değiştirme esnasında milisaniye aralığında dalgalanma gönderirler. Bu doğal bir sonuçtur. Bu işlemin bize yansıması, pin tetikleme foksiyonumuzun butona her basıldığıdna 3-5 defa peşpeşe tetiklenmesi şeklinde olur.
Önlem olarak, fonksiyon başında, iki tetiklenme arası 200-300 milisaniye geçmemişse fonksiyondan çık şeklinde bir sorgu koyarsak sorunumuz çözülmüş olur.

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.