Аналоговое чтение не работает при использовании WiFi

У меня есть ESP32, текущая программа, запущенная на нем, использует Wi-Fi, но если я использую Wi-Fi и аналоговое чтение одновременно, аналоговое чтение не работает.

Почему это происходит и как это обойти?

Аппаратное обеспечение - ESP32, вывод 25 для АЦП

Код-

#include <WiFi.h>

void setup() {
  Serial.begin(115200);
  WiFi.begin("You really", "Want to know"); // Если эта строка закомментирована, то она работает
}

void loop() {
  Serial.println(analogRead(25));
}

, 👍0

Обсуждение

Что вы имеете в виду под “analogRead не работает”? Что происходит, когда вы пытаетесь считывать аналоговое значение с вывода? Пожалуйста, опишите настройку вашего оборудования и покажите код, демонстрирующий проблему., @StarCat

Когда используется Wi Fi значения analogRead остаются на уровне 0 независимо от того подключен ли он к 3,3 или 100 вольтам, @Coder9390

Это ненормальное поведение, так что, вероятно, оно вызвано вашей конкретной настройкой. Пожалуйста, предоставьте еще немного информации. А как насчет вашего кода и настройки оборудования? Используете ли вы правильный контакт(ы)? Если вы подключили аналоговый порт к 100 вольтам, вы, вероятно, убили свой ESP32., @StarCat

я обновлю вопрос кодом "100 Вольт", который должен был быть саркастичным, поскольку он показывает только 0 подключенных к любому напряжению, @Coder9390

Этот код является упрощенной версией, но проблема существует и здесь, @Coder9390

Пожалуйста, будьте конкретны в отношении оборудования. Здесь нет ничего, чем мы могли бы помочь. Возможно, имеет смысл устранить проблему с Wi-Fi; без какого-либо контекста я предполагаю, что это либо сбой, либо цикл., @Dave Newton

Модуль Esp32 Wroom в форм-факторе nodemcu, больше ничего, @Coder9390

.. Можете ли вы предоставить схему? И будьте *конкретны* насчет трех советов? Обобщения не помогают при обсуждении конкретных вопросов. Wi-Fi обычно не отключал аналог, поэтому я подозреваю проблему инициализации. Вы использовали Wi-Fi *без* чего-либо еще?, @Dave Newton


1 ответ


Лучший ответ:

11

ESP32 имеет два АЦП. Один из них, ADC2, активно используется Wi-Fi.

Из документации ЦАХАЛа:

Поскольку модуль ADC2 также используется Wi-Fi, только один из них может получить преимущество при совместном использовании, что означает, что adc2_get_raw() может быть заблокирован до тех пор, пока Wi-Fi не остановится, и наоборот.

Это означает, что вы не можете использовать АЦП ни на одном из каналов ADC2 при включенном Wi-Fi: GPIO4, GPIO0, GPIO2, GPIO15, GPIO13, GPIO12, GPIO14, GPIO27, GPIO25 и GPIO26.

Но вы можете использовать ADC1, который использует контакты GPIO36, GPIO37, GPIO38, GPIO39, GPIO32, GPIO33, GPIO34 и GPIO35.

,