• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Реле времени ESP8266_12

Andy1977

New member
Время суток доброе граждане ! :) Возникло затруднение - кому не сложно подскажите,я сам железячник больше поэтому с lua затруднения.. :)

ниже схема (не монтажная а для понятия сути)...
Если можно примерный код для включение реле от кнопки (S1->Rel1),(S2->Rel2) - НО с условием ,что при нажатии кнопки, независимо от времени ее удержания замкнутой !!! (хоть 0.1сек,хоть 3 сек), реле замкнется сразу после нажатия на определенное время (~0,5сек) и отключится. (т.е. влючится не дожидаясь отпускания кнопки), по сути реле времени..

сильно это сложно будет выглядеть программно ?
пока собрал на 555 таймере, но есть проблемы, попробую с ESP

спасибо...


 

Andy1977

New member
всем спасибо со советы новичку.... :) скурил гугл, накопипастил с разных источников.., вроде работает...
Код:
--init.lua

pinL = 2 --D2 pin Led Left
buttonPinL = 5 -- D5 pin button Left
gpio.mode(pinL, gpio.OUTPUT)
gpio.write(pinL, gpio.LOW)
gpio.mode(buttonPinL,gpio.INT,gpio.PULLUP)

pinR = 3 --D3 pin Led Left
buttonPinR = 6 -- D6 pin Button Right
gpio.mode(pinR, gpio.OUTPUT)
gpio.write(pinR, gpio.LOW)
gpio.mode(buttonPinR,gpio.INT,gpio.PULLUP)

dofile("blink.lua")

Код:
--blink.lua

function debounce (func)
    local last = 0
    local delay = 900000
    gpio.write(pinL, gpio.LOW)
    gpio.write(pinR, gpio.LOW)
    return function (...)
        local now = tmr.now()
        if now - last < delay then return end
           
        last = now
        return func(...)
    end
end


function onChangeL()
    if gpio.read(buttonPinL) == 1 then
        print("Включить реле 1 на 500 мсек")
        gpio.write(pinL, gpio.HIGH)
        tmr.delay(400000)
   
        print("Выключить реле 1")
        gpio.write(pinL, gpio.LOW)
end
end
     
function onChangeR()

    if gpio.read(buttonPinR) == 1 then
        print("Включить реле 2 на 500 мсек")
        gpio.write(pinR, gpio.HIGH)
        tmr.delay(400000)
     
        print("Выключить реле 2")
        gpio.write(pinR, gpio.LOW)
     
    end
    end
 

gpio.trig(buttonPinL,"down", debounce(onChangeL))
gpio.trig(buttonPinR,"down", debounce(onChangeR))

gpio.write(pinL, gpio.LOW)
gpio.write(pinR, gpio.LOW)
 
Сверху Снизу