ESP8266 Lua: просто и со вкусом.

Тема в разделе "Проводная и беспроводная связь", создана пользователем ИгорьК, 23 апр 2015.

  1. ИгорьК

    ИгорьК Гуру

    Собственно, одна полезная ссылка по языку Lua для ESP8266: http://esp8266.co.uk/tutorials/lua-basics/
    Там же есть симпатичный код антидребезга кнопки. Специалисты по С++ будут в ауте.
    Вот он:
    Код (Lua):
    local pin = 4    --> GPIO2

    function debounce (func)
        local last = 0
        local delay = 200000

        return function (...)
            local now = tmr.now()
            if now - last < delay then
                 return
            end

            last = now
            return func(...)
        end
    end

    function onChange ()
        print('The pin value has changed to '..gpio.read(pin))
    end

    gpio.mode(pin, gpio.INT)
    gpio.trig(pin, 'both', debounce(onChange))
     
    И вот интересная ссылка: http://tylerneylon.com/a/learn-lua/
     
    Последнее редактирование: 15 июн 2016
  2. Классно! У тачки появились указатели поворота! Есть реализации языка еще круче. Бесперспективно для задач Ардуино. Даже ERP II можно реализовать на бейсике.
     
  3. ИгорьК

    ИгорьК Гуру

    Позиция требует пояснения. ESP на Lua вполне самостоятельный модуль. Для коннекта с Ардуино применяется другая прошивка.
     
    Последнее редактирование: 27 апр 2015
  4. Shimano

    Shimano Нерд

    а не могли бы вы объяснить суть кода,не понятно без комментариев.Хочу сделать детектор нуля, для диммера, но никак не могу понять как это сделать на lua, в бейсике куда проще было
     
  5. ИгорьК

    ИгорьК Гуру

    Код (Lua):
    -- нога номр 4
    local pin = 4    --> GPIO2

    -- Принимаем в качестве аргумента функцию
    function debounce (func)
        -- Переменные для работой со временем
        local last = 0
        local delay = 200000
     
        -- возвращаем функцию, которая принимает любой набор аргументов, если таковые есть
        return function (...)
            -- время сейчас
            local now = tmr.now()
            -- прошло времени - дельта
            local delta = now - last
            -- исправляем дельту с учетом того, что счетчик сбрасывается
            -- в 0 при достижении 31 разряда в 32 битном числе
            if delta < 0 then delta = delta + 2147483647 end
            -- если меньше уставновленного времени - возврат
            if delta < delay then return end
            -- запоминаем время
            last = now
            -- выполняем функцию обработки нажатия с передачей ей любых аргументов
            return func(...)
        end
    end
    -- Это исполняется по нажатию кнпки
    function onChange ()
        print('The pin value has changed to '..gpio.read(pin))
    end
    -- режим ноги - ввод
    gpio.mode(pin, gpio.INT)
    -- при любом изменении состояния ноги - вызов функции с передачей ей аргумента
    gpio.trig(pin, 'both', debounce(onChange))
     
    arkadyf и Mitrandir нравится это.
  6. Shimano

    Shimano Нерд

    Вот спасибо большое, а то никак не мог разобраться, луа достаточно странный язык, но всё же интересный
     
  7. ИгорьК

    ИгорьК Гуру

    Неужели поможет? :) Ох, сомневаюсь :)
     
    SergeiL нравится это.
  8. SergeiL

    SergeiL Оракул Модератор

    Тоже сомневаюсь в нормальной работоспособности диммера с детектором нуля на ESP.
    По этой причине делал диммер на Tiny85, а тиньку подключал к ESP
     
  9. Shimano

    Shimano Нерд

    Откуда такой пессимизм?
     
  10. Shimano

    Shimano Нерд

    Почему вы так не уверены, что получится?там ведь по сути ничего сложного нет. я кстати делал диммер по этой статье - http://avrproject.ru/publ/poleznaja_informacija/setevoj_dimmer_220v_na_mikrokontrollere/4-1-0-140 . К сожалению так и не получилось программно сделать 6 каналов.
     
  11. parovoZZ

    parovoZZ Гуру

    смешной ты =)
     
  12. Shimano

    Shimano Нерд

    Что тут смешного? вы вообще по ссылке переходили, видели, что там диммер реализуется совершенно на другой платформе(не есп)?
     
  13. SergeiL

    SergeiL Оракул Модератор

    Так я об этом и говорил. Вы понимаете в чем разница между ESP и ATtiny?
    Вы на чем собираетесь диммер делать, на каком языке код писать?
     
  14. Нет никакой проблемы в диммере на esp.
     
  15. SergeiL

    SergeiL Оракул Модератор

    Вы делали? С Wi-Fi? C кодом на LUA?
     
  16. Shimano

    Shimano Нерд

    Я прекрасно понимаю разницу, я лишь кинул ссыль на проект, который был мной повторён.В данный момент пытаюсь изучить Луа, но к сожалению весьма трудно даётся, так как развёрнутой инфы по различным командам маловато, уже задумался о переходе на дурынду, хоть она мне и не нравится.
     
  17. Shimano

    Shimano Нерд

    не поделитесь информацией?
     
  18. Shimano

    Shimano Нерд

    Я так понимаю что при подключении Wi fi могут быть проблеммы с диммированием? Где то читал, что при подгрузке wi fi еспха может "забить " на выполнение других задач, так ли это?
     
  19. Делал без lua. И с lua никакой проблемы не будет. Если вы думаете, что производительности не хватит, то вы ее сильно занижаете.
     
  20. SergeiL

    SergeiL Оракул Модератор

    Не, у Дяди Вити нет проблем, проблем с диммированием на ESP/
    Тоже очень интересно, присаживаюсь и внимательно слушаю! :)