Получение тарабарщины последовательного порта до тех пор, пока кнопка не будет нажата, плюс кнопка выключает светодиоды, а не включает

Я подключаю кнопку к ESP8266. Подключение происходит так: 3 В с одной стороны кнопки, другая сторона подключена к GND и контакту № 2 (без резистора).

Каждый раз, когда я подключаю ESP, оба встроенных светодиода остаются включенными до тех пор, пока я не нажму кнопку, и выключаются, пока я не отпущу ее (хотя в коде указано иное). Кроме того, когда я отслеживаю серийный номер, тарабарщина запускается, игнорируя мои команды печати, пока я не нажму кнопку, серийный номер полностью перестанет выводиться.

Когда я запускаю сериал без кнопки, все работает нормально. Я неправильно подключаю, или кнопка повреждена, или какой-то другой источник проблемы? Заранее спасибо.

EDIT: я добавил pinMode(BTN_PIN, INPUT_PULLUP), чтобы взять на себя роль резистора; к коду, все равно не помогает.

, 👍1

Обсуждение

Обязательно нужен резистор. В настоящее время у вас короткое замыкание источника питания. Это отключит ваш esp и в конечном итоге убьет ваш блок питания или esp (в зависимости от того, как у вас все подключено)., @chrisl

Так и думал. Вы на 100% уверены, что мне нужен резистор? Я думаю, что у меня все подключено правильно, как я описал выше., @Santino

Где-то нужен резистор. Вы можете решить, хотите ли вы использовать внешний или внутренний, который вы активируете с помощью оператора INPUT_PULLUP., @chrisl

Я добавил оператор на входной контакт. Но есть ли обходной путь для контактного резистора GND? или мне нужно вставить фактический физический?, @Santino

В конце концов, он заработал, очевидно, если я использую команду PULLUP, я должен удалить соединение GND. Спасибо за помощь!, @Santino


1 ответ


1

Когда контакт 2 подключен к земле, как вы это сделали, чип переходит в недопустимый режим загрузки. Он будет выдавать сообщения на скорости 74880 бод с жалобами на недопустимый режим загрузки.

Вы не должны подключать контакт 2 к земле. Во время загрузки он должен быть подключен к 3,3 В через резистор (который должен быть предоставлен платой для вас, если вы используете макетную плату, а не голый модуль).

Подключая кнопку между 3,3 В и GND, вы вызываете короткое замыкание, которое отключает питание от модуля и рискует повредить блок питания на вашей плате.

Правильный способ подключения кнопки:

pinMode(2, INPUT_PULLUP);

а затем соедините контакт GPIO с землей через кнопку.

INPUT_PULLUP действует как требуемый подтягивающий резистор, удерживая вход ВЫСОКИМ в то время, когда он «бездействует», а кнопка соединяет вход с GND, когда вы хотите «активировать» его, переводя его в НИЗКИЙ уровень.

Это единственные связи, которые вам следует устанавливать. Если вы хотите использовать внешний резистор вместо внутреннего резистора с INPUT_PULLUP, тогда он находится между входным контактом и 3,3 В.

Никогда не подключайте 3,3 В напрямую к GND.

,