Получение тарабарщины последовательного порта до тех пор, пока кнопка не будет нажата, плюс кнопка выключает светодиоды, а не включает
Я подключаю кнопку к ESP8266. Подключение происходит так: 3 В с одной стороны кнопки, другая сторона подключена к GND и контакту № 2 (без резистора).
Каждый раз, когда я подключаю ESP, оба встроенных светодиода остаются включенными до тех пор, пока я не нажму кнопку, и выключаются, пока я не отпущу ее (хотя в коде указано иное). Кроме того, когда я отслеживаю серийный номер, тарабарщина запускается, игнорируя мои команды печати, пока я не нажму кнопку, серийный номер полностью перестанет выводиться.
Когда я запускаю сериал без кнопки, все работает нормально. Я неправильно подключаю, или кнопка повреждена, или какой-то другой источник проблемы? Заранее спасибо.
EDIT: я добавил pinMode(BTN_PIN, INPUT_PULLUP), чтобы взять на себя роль резистора; к коду, все равно не помогает.
@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.
- Скетч останавливается, если кнопка нажата при загрузке
- AT-команда не отвечает на последовательный монитор
- Последовательная связь между ESP8266 и Arduino Uno
- Напряжение меняется, но цифровой поток всегда HIGH
- Последовательная связь ESP8266 с ATMega328P
- ESP8266 12e Arduino IDE выводит мусорные значения на serial monitor
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
- Почему мы используем client.flush() в коде, когда мы подключаем Esp8266 к Интернету или серверу?
Обязательно нужен резистор. В настоящее время у вас короткое замыкание источника питания. Это отключит ваш esp и в конечном итоге убьет ваш блок питания или esp (в зависимости от того, как у вас все подключено)., @chrisl
Так и думал. Вы на 100% уверены, что мне нужен резистор? Я думаю, что у меня все подключено правильно, как я описал выше., @Santino
Где-то нужен резистор. Вы можете решить, хотите ли вы использовать внешний или внутренний, который вы активируете с помощью оператора INPUT_PULLUP., @chrisl
Я добавил оператор на входной контакт. Но есть ли обходной путь для контактного резистора GND? или мне нужно вставить фактический физический?, @Santino
В конце концов, он заработал, очевидно, если я использую команду PULLUP, я должен удалить соединение GND. Спасибо за помощь!, @Santino