ESP-8266/ESP32 NodeMCU Lua: азы программирования.

Тема в разделе "ESP8266, ESP32", создана пользователем ИгорьК, 25 июл 2017.

  1. swc

    swc Нерд

    Сам потратил кучу времени. Документировал для себя. Сейчас форматирование поправлю.
     
    ИгорьК нравится это.
  2. ИгорьК

    ИгорьК Давно здесь Команда форума

    Вынес пост в заголовок.
     
  3. Домосед

    Домосед Нерд

    Продолжаю изучать Lua на ESP8266. Благодарю за эту тему.
    И вновь вопрос.
    Пытаюсь подключить датчик температуры DS18b20. Почему-то не получается. Вроде всё делаю верно.
    Последовательность моих действий.
    Подготавливаю прошивку на https://nodemcu-build.com
    Получаю после прошивки
    Вроде всё необходимое подключено.

    После этого заливаю пример с nodemcu.readthedocs.io
    Код (C++):
    local t = require("ds18b20")
    local pin = 3 -- gpio0 = 3, gpio2 = 4
    local function readout(temp)
      if t.sens then
        print("Total number of DS18B20 sensors: ".. #t.sens)
        for i, s in ipairs(t.sens) do
          print(string.format("  sensor #%d address: %s%s",  i, ('%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X'):format(s:byte(1,8)), s:byte(9) == 1 and " (parasite)" or ""))
        end
      end
      for addr, temp in pairs(temp) do
        print(string.format("Sensor %s: %s °C", ('%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X'):format(addr:byte(1,8)), temp))
      end
      -- Module can be released when it is no longer needed
      t = nil
      package.loaded["ds18b20"] = nil
    end

    t:read_temp(readout, pin, t.C)
    К сожалению, получаю ошибку:
    Что я делаю не так? Думал, что может подключил неверно датчик. Но перепроверил и пробовал разные варианты. Ну и, по идеее, работать должно вообще без датчика. Просто показания будут нулевые (или -127 скорей всего).
    Может кто сталкивался с подобным? Куда копать?
     
  4. ИгорьК

    ИгорьК Давно здесь Команда форума

    Попробуйте так:

    Код (Lua):
    do
    pin = 3
    wth = {}
    ds18b20.setup(pin)
    ds18b20.read(
        function(_,_,_,temp)
            wth.ds18b20 = string.format("%.1f",temp)
            print(wth.ds18b20)
        end,{})
    end
     
  5. Домосед

    Домосед Нерд

    К сожалению, библиотека сменилась. Раньше была на С, а теперь стала на LUA https://nodemcu.readthedocs.io/en/dev/lua-modules/ds18b20/
    Так что, Ваш пример не подходит. Там нет ds18b20.setup теперь.
    Проблема даже не в самом моём коде. Проблема в том, что esp не видит среди библиотек именно ds18b20. Хотя в перечне её указывает, что типа есть. Вероятно, какой-то глюк.
    Я поставил эту библиотеку вручную в виде файла. Вроде так заработала. Это конечно костыль. Но для того, чтобы в целом разобраться с этими датчиками на LUA, пока и так пойдёт.
    Спасибо, что пытаетесь помочь.
     
  6. ИгорьК

    ИгорьК Давно здесь Команда форума

    Вы слегка запутались. Но, к сожалению, пока нет времени вникнуть глубже.
     
  7. Домосед

    Домосед Нерд

    Вот какое сообщение выдаётся, когда я пытаюсь запустить ваш код (два поста назад):
     
  8. ИгорьК

    ИгорьК Давно здесь Команда форума

    И что говорит перевод?
     
  9. Домосед

    Домосед Нерд

    Что этот код устарел и будет удалён. Рекомендуют использовать вместо него другой. Как раз тот, который я пытаюсь использовать. И этот другой уже описан в документации (ссылку на которую в этой теме я и нашёл).
    Но он почему-то не работает. Причём, странно как-то не работает же. Если файл с библиотекой использовать, то работает. А если в прошивку его прицеплять, то нет.
     
  10. Домосед

    Домосед Нерд

    Вроде одна-единственная строчка t:read_temp(readout, pin, t.C). Но даёт ошибку "attempt to call method 'read_temp' (a nil value)". Непонятно почему не присваивается значение.
     
  11. ИгорьК

    ИгорьК Давно здесь Команда форума

    А как вы его в прошивку цепляете?
     
  12. Домосед

    Домосед Нерд

    Здесь https://nodemcu-build.com ставлю галочку ds18b20
     
  13. Домосед

    Домосед Нерд

     
  14. ИгорьК

    ИгорьК Давно здесь Команда форума

    А это вы не его в прошивку цепляете. Это вы цепляете тот, что deprecated .
     
  15. Домосед

    Домосед Нерд

    Ясно... Спасибо. Тогда почему же ваш код не работает? Он же как раз для того, что deprecated?
     
  16. Домосед

    Домосед Нерд

    В общем, больше спасибо. Я всё понял. Попал как раз на смену библиотек. Придётся пока прицепить вручную файл, а потом уже поменять прошивку (надеюсь, что выпустят раньше, чем я устройство доделаю).
     
  17. ИгорьК

    ИгорьК Давно здесь Команда форума

    Можете моей библиотекой воспользоваться.
     
  18. Домосед

    Домосед Нерд

    Дайте пожалуйста ссылку. Помню, что видел, но найти не могу.
     
  19. ИгорьК

    ИгорьК Давно здесь Команда форума

  20. Ferdinand

    Ferdinand Нерд

    Имеется ли возможность на Lua управления шаговым двигателем (28BYJ-48 + ULN2003), не могу найти, хотя бы примерный скрипт под ESPlorer (( Может кто подскажет куда копать?