• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Пины для digitalRead

Отлаживаю работу шагового мотора с енкодером, позволяющим проверить симметрию вращения по и против часовой стрелки и контролирровать положение ротора мотора. Использую мултипрограмный вариант скетча. Столкнулся с тем, что отслеживание контактов енкодера по digitalRead (как в многочисленных найденных примерах) не проходит из-за нечувствительности digitalRead к значению на пине (проверяется тестером), получаемое значение всегда 0, значение analoglRead изменяется. Поиск в интернете показал, что проблема у многих. Начал перебор пинов (ни в одном из опсаний моей платы "esp32 Wroom 32" особенностей исопользования пинов для digitalRead не нашел) Методом "тыка" нашел,что пин GPIO3 позволяет правильно использовать digitalRead. Но мне надо еще один пин. Поделитесь опытом. Может быть кто-то имеет описание ситуации с digitalRead.
 
Спасибо! Посмотрел предложенное. Слишком сложно и для моих целей избыточно. Проблему с управлением мотором я решил в деталях без исползования библиотек. Вопрос же мой сводится к поиску для используемых плат детальных описаний , разъясняющих какие пины могут использоваться для digitaRead. Например, длля платы wemos d1 (esp8266) таких пинов только один.
 

tretyakov_sa

Moderator
Команда форума
Спасибо! Посмотрел предложенное. Слишком сложно и для моих целей избыточно. Проблему с управлением мотором я решил в деталях без исползования библиотек. Вопрос же мой сводится к поиску для используемых плат детальных описаний , разъясняющих какие пины могут использоваться для digitaRead. Например, длля платы wemos d1 (esp8266) таких пинов только один.
digitaRead для d1mini так же как и для всех модулей esp8266 все пины, могут digitaRead, кроме gpio16 на wemos это D0. a0 только аналоговое чтение analogRead. Прежде чем читать пин, его нужно настроить на чтение. Помните, что на gpio0 и gpio2 подтянуты к vcc через резисторы.
 
Наверно то, что на моей плате я не нашел, посредством проверки скетчем "кнопки" ни одной кроме четвертого пина, способного изменять значение digitalRead, является результатом использования китайското аналога. Правда, я нашел описание платы, полностью совпадающей с моей, в котором пин 4 выделен: "pull_up, builtin_led", чего нет в спецификации других пинов.
 

ghost21

Member
посредством проверки скетчем "кнопки" ни одной кроме четвертого пина, способного изменять значение digitalRead
Где код, схема? Кофейная гуща знаете ли прокисла, хрустальный шар запотел.

использования китайското аналога
Аналога чего? Если вы не в курсе, то esp8266/esp32 изначально китайское произведение.

нашел описание платы
Что там искать? Этого не достаточно?
 
Ответы по очереди с последнего. В "этом" изображена не моя плата. По поводу аналога: возможноо я ошибся, но удалось найти только один пригодный пин. Наконец, если нужен код пробки - то прицеплен, а схема проста до предела. Голая плата и проводок, замыкающий проверяемый пин на землю вручную.
 

Вложения

ghost21

Member
еще раз для тех кто в танке: в первом сообщении указано
из опсаний моей платы "esp32 Wroom 32"
в прикрепленном коде
Код:
wemos d1 8266
читаем пост #7 и для начала отвечаем на вопрос - какой у вас модуль?
Если 8266 то
Код:
value = analogRead(BUTTON_PIN);
полный бред. У этого модуля только 1 (один!!!) аналоговый вход ADC0 он же А0 , он же Гога, он же для которого применима эта команда. Если esp32, то смотрим опять же ссылку в #7 где расписаны все "аналоговые" пины
 
По-моему мы уже уклонились в дебри информации. Мне все ясно, у меня все работает. Итог: если возникают неожиданности типа пин не реагирует на сигнал, проверенный тестером, надо проверять голый пин и искать пин, пригодный для вашей задачи. В интернете много описаний, внешне похожих на нужные, но доверять им безуслловно нельзя. Нужна непосредственная проверка "на ощупь"
 
Сверху Снизу