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

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

  1. ИгорьК

    ИгорьК Гуру

    Не делай такие странные вещи - они не часто нужны.
    У ESP32 нет более полезных инструментов. Например wifi.sta.status() и это ставит в тупик куда больше.
    С MQTT тоже не все однозначно.

    Вот я пока не могу перестроиться - как с потерями wifi работать на чистых callback(ах) и восстанавливать связь с брокером. Это полезнее задачка будет.
     
  2. ИгорьК

    ИгорьК Гуру

    SmartSelect_20181010-002456_Opera Mini.jpg
     
  3. Mitrandir

    Mitrandir Гуру

    Код (C++):
    function long1()
    for i = 1, 10 do
      for j =1,100000 do
         k = j*i
      end
      print("long 1:"..i);
     
    end
    end
    function long2()
    for i = 1, 10 do
      for j =1,100000 do
         k = j*i
      end
      print("long 2:"..i);
    end
    end


    m1 = tmr.create()
    m1:register(1000,tmr.ALARM_SINGLE,long1)

    m2 = tmr.create()
    m2:register(10000,tmr.ALARM_SINGLE,long2)

    m1:start();
    m2:start();
     
    Отрабатывает на ура
     
  4. ИгорьК

    ИгорьК Гуру

    И где это применить?

    А вот что происходит с клиентом mqtt при выключении wifi - вот это вопрос.
     
  5. Mitrandir

    Mitrandir Гуру

    Хочу сделать такой сценарий
    Код (C++):
    while(true){
      Do_my_work();
    Do_system_work();
    }
    Пока приходит только такая мысль

    Mytimer:register (1, tmr.TIMER_AUTO, MY_func)
     
    Последнее редактирование: 10 окт 2018
  6. ИгорьК

    ИгорьК Гуру

    Угу. И вот как только отвыкнешь так мыслить, возвращаться к сям становится тяжело.

    От абстракций (уже вторая ) переходи к конкретике, и все наладится.
    Перечитай первый пост. Самый. Там однозначно - нет у Lua NodeMcu никаких loop.
    Начни писать что-то практическое и все поймешь.
     
    Последнее редактирование: 10 окт 2018
  7. ИгорьК

    ИгорьК Гуру

    И вот еще какая засада для ESP32:
    upload_2018-10-10_9-44-8.png
     
  8. Quartz1912

    Quartz1912 Нуб

    Подскажите пожалуйста как устранить дребезжание кнопки програмно.
     
  9. Mitrandir

    Mitrandir Гуру

    Есть такой код под ESP-32
    Код (C++):

    do
    uart.setup(2,115200,8,uart.PARITY_NONE,uart.STOPBITS_1,{tx=17,rx=16})
    uart.start(2)
    uart.write(2,"hello world");
    uart.stop(2)
    end
    Приходит подобная ерунда: uartbug.jpg
    Причем при каждом запуске приходит разный пакет данных.
     
  10. ИгорьК

    ИгорьК Гуру

    Надо исследовать. Я пока с wifi/mqtt c места не двинулся.
     
  11. Добрый день.
    Не подскажете как на LUA написать такой код:
    Код (C++):
    //подключаемся к WiFi
    ...
    udp.begin(PORT);
    ...

    if (udp.parsePacket()) //проверяем пришли данные
    {
        udp.read(hData, 318); //Записываем в буфер
    }
     
  12. ИгорьК

    ИгорьК Гуру


    https://nodemcu.readthedocs.io/en/latest/en/modules/net/#netserverlisten
     
  13. ИгорьК

    ИгорьК Гуру


    Или так:

    Код (Lua):

    -- Функция обработки данных, нам нужен второй аргумент (data)
    writetobuf = function(_, data)
        print('Got UDP:', data)
        -- Что-то делаем с данными
        dosmth(data)....
    end

    con = net.createConnection(net.UDP) -- Объявляем UDP соединение
    con:on("receive", writetobuf) -- Объявляем что делать по получении данных

    -- Запускаем соединение
    con:connect(port, address)

    UPD. Поправил.
     
    Последнее редактирование: 19 окт 2018
  14. Спасибо, буду пробовать.
     
  15. Добрый вечер.
    Заработало с таким кодом:
    Код (C++):
    writetobuf = function(_, data)
    print(data)
        -- Что-то делаем с данными
    end

    udpSocket = net.createUDPSocket()
    udpSocket:listen(port)
    udpSocket:on("receive", writetobuf)
    этот код можно использовать для ArtNet (порт 6454) - проверенно.
     
  16. Осталось подключить "умные" светодиоды WS2812.
    Может у кого есть рабочий код?
     
  17. parovoZZ

    parovoZZ Гуру

    в вашей абдурине же есть библиотека.
     
  18. ИгорьК

    ИгорьК Гуру

    Паровоз все про абурину знает. Он в ней по-уши.
     
    Airbus нравится это.
  19. ИгорьК

    ИгорьК Гуру

    upload_2018-10-23_16-56-54.png

    Код (Lua):
    do
    uart.setup(1, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1, {tx = 16, rx = 17})
    uart.start(1)
    tmr.create():alarm(100, 0, function()
        uart.write(1,' Hello World ')
        uart.write(1,' Its My Life ')
    end)
    print('End Now')
    end
    В общем, там требуется время для внесения изменений в жизнь нового порта. Ни старт, ни стоп его нельзя делать сразу. Запустил скрипт что выше. Потом по паре раз отправлял на исполнение строки записи в порт.
    Все работает. И все как-то неустойчиво.
     
    Последнее редактирование: 23 окт 2018
    Mitrandir нравится это.