• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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)
 
Сверху Снизу