Esp32: работа с gpio в lua

Тема в разделе "ESP8266, ESP32", создана пользователем naz, 24 авг 2021.

Метки:
  1. naz

    naz Нерд

    Доброго всем. Простейший код
    Код (C++):
    gpio.config({gpio=21, dir=gpio.OUT})
    gpio.write(21,1)
    print("Pin 21 is", gpio.read(21))
     
    даёт
    Код (C++):
    gpio.write(21,1)
    > print("Pin 21 is", gpio.read(21))
    Pin 21 is    0
     
    Что не так? Пробовал разные ноги
     

    Вложения:

  2. ИгорьК

    ИгорьК Гуру

    Где-то в документации написано, что при установке ноги на выход можно при этом читать ее состояние таким образом?
     
  3. serg3295

    serg3295 Гик

    Код (C++):
    do

      local pinOut = 22
      local pinIn  = 21
      gpio.config({ gpio = pinOut, dir = gpio.IN_OUT, pull = gpio.PULL_UP},
                  { gpio = pinIn, dir = gpio.IN,  pull = gpio.PULL_DOWN})
      gpio.write(pinOut, 1)
      print("pinOut" , gpio.read(pinOut))
      print("pinIn" , gpio.read(pinIn))

    end
     
     
    naz нравится это.
  4. naz

    naz Нерд

    Нет, пробую так. Не увидел, что надо опцию "pull" установить обязательно.
    Благодарю, serg
    Решено
     
  5. serg3295

    serg3295 Гик

    Вообще-то ключевым словом является IN_OUT.
    Pull просто для примера.
     
    naz нравится это.
  6. ИгорьК

    ИгорьК Гуру

    С целью общего развития - какая проблема решается этим действом?

    Видел такую опцию. Это реверанс любителям ардуино? Не могу придумать что-то полезное из чтения порта в который сам и пишешь. Что я не знаю? (Ещё со времён ардуино не понимал сути или не знал ее)
     
  7. issaom

    issaom Гуру

    Может быть не в тему... в Ардуине есть встроенный светодиод, его можно использовать как логическую переменную. Иногда бывает удобно для отладки программы. В каком то месте программы его зажег/погасил в другом прочитал в каком он состоянии и выполнил условие
    Код (C++):
    if (digitalRead(13)) {
    }
    Получается наглядное отображение состояния твоей переменной.....
     
  8. ИгорьК

    ИгорьК Гуру

    То есть загнал локальную переменную (0/1, true/false) в пин и по выходу она "пропала". В другом месте прочитал, что это за переменная (0/1) хранится в пине? Ну да, интересный "склад" переменных.
    Ну, наглядное (зрительно) отображение - для него чтение из порта не нужно, а вот расширение памяти за счет пинов - это круто.
     
  9. issaom

    issaom Гуру

    Зачем туда что-то загонять ? У меня была практическая задача так решена, в одном месте проверялось наличие связи - результат проверки записывался в 13-й пин (в прерывании). В другом месте по состоянию этого пина выполнялись некие действия в loop. + еще и визульное отображение есть связь/нет связи
     
    ИгорьК нравится это.
  10. parovoZZ

    parovoZZ Гуру

    программное прерывание.
     
    ИгорьК нравится это.
  11. ИгорьК

    ИгорьК Гуру

    Забавно все это, но оно конечно так :)
     
  12. naz

    naz Нерд

    Самоконтроль. Сейчас этап отладки, должен убедиться, что нога в нужном состоянии.
    Можно было бы и по- другому проверить, например, светодиод навесить.. нет под рукой
     
    Последнее редактирование: 25 авг 2021
  13. ИгорьК

    ИгорьК Гуру

    Ну я уже самоунасекомился от обилия научных подходов к чтению ноги :)
    Проверка связи в прерывании, программный вызов прерывания, контроль того что сам в ногу написал - кладезь программных самоцветов :)
     
    naz нравится это.