Невозможно добавить больше кода в цикл() при использовании server.handleClient

Вот мой код

void loop() {
  if (analogRead(A0) > 500)
  {
    statuss = true ;
  }
  if (statuss)
  {
    digitalWrite(D7, HIGH);
    if (millis() - lasttime > 500)
    {
      digitalWrite(D8, etat);
      digitalWrite(D6, etat);
      etat = !etat;
      lasttime = millis();
    }
  }
  server.handleClient();
}

Когда я использую только server.handleClient, все работает нормально, но когда я добавляю любой тип кода в функцию loop(), сервер отключается, и я не могу см. точку доступа ESP8266.

, 👍0

Обсуждение

что такое «любой тип кода»? ....также вы не задали вопрос., @jsotola

когда я использую только server.handleClient.... в вашем коде есть другие команды... ваше утверждение не имеет смысла, @jsotola

это проблема с близкой причиной «Непонятно, о чем вы спрашиваете». для меня совершенно ясно, в чем заключается этот вопрос. и я рад, что он еще не закрыт, @Juraj

@Юрай, я пытаюсь понять.... если, например, ОП добавляет в цикл() оператор Serial.print(), то сервер отключается..... как тебе это понятно? ....был ли у вас подобный опыт?, @jsotola

@jsotola, прочитай мой ответ, @Juraj

это конкретная команда, а не "какой-то тип кода".... возможно, виноват перевод с языка ОП, но все равно неясно, о чем спрашивают, @jsotola

@gre_gor, sempaiscuba, VE7JRO, MatsK, per123, вы закрыли этот вопрос без оценки/тестирования. Вопрос говорит: «Если я запущу этот код, esp8266 исчезнет из сети Wi-Fi». и это правда. вопрос "почему?, что мне следует изменить?", @Juraj

@jsotola, да, Аскер не занимался устранением неполадок, чтобы свести код к минимуму. он заслуживает отрицательных голосов, @Juraj

Голосование за повторное открытие и +1 за ваш ответ, Юрай., @VE7JRO


1 ответ


4

Проблема в аналоговом чтении. esp8266 использует АЦП для оценки мощности сигнала Wi-Fi. Жесткое использование аналогового чтения нарушает его, и сигнал пропадает. Используйте millis() для определения времени аналогового чтения.

unsigned int tempSensRead() {

  const unsigned long MEASURE_INTERVAL = 2L * 1000 * 60; // 2 минуты
  static unsigned long lastMeasureMillis;
  static unsigned int lastValue;

  if (millis() - lastMeasureMillis > MEASURE_INTERVAL) {
    lastMeasureMillis = millis();
    lastValue = analogRead(A0);
  }
  return lastValue;
}
,

@fakherhabib, пожалуйста, оставьте отзыв, @Juraj

Хороший ответ. Знаете ли вы какие-либо источники, подтверждающие утверждение «esp8266 использует АЦП для оценки силы сигнала Wi-Fi»? Я не смог найти это в [таблице данных](https://espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf), @S.H.W

https://arduino-esp8266.readthedocs.io/en/latest/reference.html#analog-input, @Juraj

Отличный ресурс, спасибо., @S.H.W