esp8266- как использовать GPIO0 в качестве входа?

Во-первых, мои настройки: У меня есть Arduino Uno с Adafruit Audio Shield. У меня есть Wemos D1 Mini, управляющий проектом.

Мне нужно, чтобы D1 знал, когда воспроизводится файл.

У меня есть контакт GPIO на Uno, запрограммированный на высокий уровень при воспроизведении файла. Низкий в противном случае. У меня есть два контакта GPIO на Wemos, которые не используются, D3 и D4 (GPIO0 и GPIO2). (Я использую схему делителя 10K через резистор 20K, чтобы снизить 5V от Uno до 3v3 для Wemos). D4 уже является проблемой, потому что он должен быть высоким для загрузки, а GPIO от Uno обычно низкий. D3 (GPIO0) должен быть высоким для загрузки и имеет внутреннюю подтяжку.

Вот моя проблема. Как отключить подтягивание на GPIO0? Даже когда Uno GPIO имеет низкий уровень (0 В), GPIO0 измеряет 2,4 В, что в моем скетче рассматривается как логическая 1.

Любые советы будут оценены. (Я думал изменить полярность на Uno так, чтобы low = true, но даже когда Uno подает на вывод низкий уровень, вывод Wemos GPIO0 по-прежнему находится на уровне 2,4 В, поэтому логика low-true тоже не будет работать.).

, 👍1


1 ответ


1

Не используйте делитель напряжения и никогда не устанавливайте вывод Uno в ВЫСОКИЙ уровень.

Потяните io 0 esp8266 LOW с помощью pinMode вывода Uno.

pinMode(TO_ESP_IO0, OUTPUT); // устанавливает на пин НИЗКИЙ уровень

pinMode(TO_ESP_IO0, INPUT); // пускаем на подтягивающий резистор io0
,