[ERROR]: No Answer

I’m stumped. I first cant get the port to show for OTA, then I get No Answer. The BasicOTA works to OTA upload OK. When I switched to my sketch it didn’t work. I even put the setup bit in its own fx, added a delay(1) to the do while(1) loop that is inside loop()…

#define NAME "CandleIII 5"

/*
   Pin info
   BUILT IN LEDs are D0, D4


#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

//Brightness Q
int colorCorrect[7] { 255, 255, 255, 255, 255, 255, 255 };

int min1 = 60000;
int min2 = 120000;
int min4 = 240000;
int min5 = 300000;
int min10 = 600000;
int min12 = 720000;
int min15 = 800000;

//Program Parade
int maxPrograms = 8;
int  programs[9] = {             0,      1,    0,    2,    0,    3,    0,    1 };
long unsigned programDur[8] = { 10000, 10000, 10000,  10000, 10000, 10000, 10000, 10000 };

//Randomness (Amplitude)
float randomMult = 0.30;

//Loop delay for Candle
int tMin = 10;
int tMax = 100;

// Flashing Modes
int flashOff = 1500;
int flashOn = 50;
int flickerOff = 1600;
int flickerOn = 100;

//cycle dwell time
int cycleDur = 200;



// PIN-MAP
//*****************************************************************************************************************************************************************
// -1: InputPullup, 0: Not installed, 1: Input Positive, 2: OUTPUT
int installed[20] = {  0,   2,    2,    2,    0,    2,    2,    2,    2,    2,    1 };
int pinNumbers[20] = { D0,   D1,   D2,   D3,   D4,   D5,   D6,   D7,  D8,   D9,   D10 };
int colorID[20] = {    -1,   0,    0,    0,    -1,    1,    2,    -1,  0,   0,    -1 };
int noPins = 9;
// *****************************************************************************************************************************************************************

int lastLevel[7] = { 0 };
int LEDcurrent;

void setup() {
pl();
  Serial.begin(115200);
  Serial.print("Pumpkin starting!");

  for (int i = 0; i < noPins; i++) {
    // Array init loop

    // Set pin-modes based on installed flags
    if (installed[i] == -1) {
      pinMode(pinNumbers[i], INPUT_PULLUP);
    }
    if (installed[i] == 1) {
      pinMode(pinNumbers[i], INPUT);
    }
    if (installed[i] == 2) {
      pinMode(pinNumbers[i], OUTPUT);
    }
  }

wifiSetup();
pSetupDone();

  Serial.print("Setup done.");
}
int wifiSetup(){
   WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // Port defaults to 3232
  // ArduinoOTA.setPort(3232);

  // Hostname defaults to esp3232-[MAC]
  // ArduinoOTA.setHostname("myesp32");

  // No authentication by default
  // ArduinoOTA.setPassword("admin");

  // Password can be set with it's md5 value as well
  // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
  // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");

  ArduinoOTA.onStart([]() {
      String type;
      if (ArduinoOTA.getCommand() == U_FLASH)
        type = "sketch";
      else // U_SPIFFS
        type = "filesystem";

      // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
      Serial.println("Start updating " + type);
    });
      ArduinoOTA.onEnd([]() {
      Serial.println("\nEnd");
    });
      ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
      Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
    });
      ArduinoOTA.onError([](ota_error_t error) {
      Serial.printf("Error[%u]: ", error);
      if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
      else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
      else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
      else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
      else if (error == OTA_END_ERROR) Serial.println("End Failed");
    });

  ArduinoOTA.begin();

  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
     ArduinoOTA.handle();
  long unsigned msStart = millis();
  long unsigned prgEnd;
  int prgDur;

  for (int i = 0; i <= maxPrograms; i++) {
    int activeProgram = programs[i]; //Runs specified set of programs
    prgDur = programDur[i];
    msStart = millis();
    prgEnd = msStart + prgDur;
    Serial.print("Program: ");
    Serial.print(activeProgram);
    Serial.print(" playing for ");
    Serial.print(prgDur);
    Serial.print("ms.");
    do {
      ArduinoOTA.handle();
      delay(1);
      switch (activeProgram) {
        case 0:
          candle();
          break;
        case 1:
          cycle();
          break;
        case 2:
          flash();
          break;
        case 3:
          flicker();
          break;
      }
      yield();
    } while (millis() < prgEnd);
  } //Next program...

}
int leds(int level){
  if (level == 1) { level = 255; }
  for (int i=0;i<=noPins;i++){
    digitalWrite(pinNumbers[i],255);
  }
      digitalWrite(D0,255-level);
          digitalWrite(D4,255-level);
}
int pSetupDone() {
  //flash LEDs a bit
  leds(3);
  delay(500);
  leds(0);
  delay(500);

    leds(3);
  delay(500);
  leds(0);
  delay(2000);
}
int pl() {
  static int fullMode;
  LEDcurrent++;
  if (LEDcurrent > noPins - 1) {
    fullMode = !fullMode;
    LEDcurrent = 0;
  }
  if (fullMode = -1) {
    digitalWrite(pinNumbers[LEDcurrent], HIGH);
  }
  if (fullMode = 1) {
    digitalWrite(pinNumbers[LEDcurrent], LOW);
  }
}
int flash() {
  for (int x = 0; x <= noPins; x++) {
    digitalWrite(pinNumbers[x], LOW);
  }
  delay(flashOff);
  for (int x = 0; x <= noPins; x++) {
    digitalWrite(pinNumbers[x], HIGH);
  }
  delay(flashOn);
}
int flicker() {
  for (int x = 0; x <= noPins; x++) {
    digitalWrite(pinNumbers[x], HIGH);
  }
  delay(flickerOff);
  for (int x = 0; x <= noPins; x++) {
    digitalWrite(pinNumbers[x], LOW);
  }
  delay(flickerOn);
}
int cycle() {
  for (int x = 0; x <= noPins; x++) {
    digitalWrite(pinNumbers[x - 1], LOW);
    digitalWrite(pinNumbers[x], HIGH);
    delay(cycleDur);
  }
}
int candle() {
  int r;
  for (int i = 0; i <= noPins; i++) {
    r = random(0, colorCorrect[i]);
    int rAdj = (r * randomMult);



    int lev = lastLevel[i] + random(-1 * rAdj, rAdj);
    if ((lastLevel[i] < 25) && (lev < 5)) {
      lev = random(80,190); //occaisonal boost
    }
    if (lev > 254) {
      lev = 200;
    }
/*
    Serial.print("LED ");
    Serial.print(i);
    Serial.print("   eqn components lastLevel:");
    Serial.print(lastLevel[i]);
    Serial.print("   randomMult: ");
    Serial.print(randomMult);
    Serial.print("  random seed: ");
    Serial.println(r);
    Serial.print("  r Adj: ");
    Serial.print(rAdj);
    Serial.println("Now the eqns are rAdj = (r * randomMult * colorCorrect[i]), lev = constrain( lastLevel[i] + random(-1 * rAdj,rAdj), 0, 255 )");
     */
    Serial.print("Now the LED level is ");
    Serial.println(lev);
  
 
    lastLevel[i] = lev;
    analogWrite(pinNumbers[i], lev);
  }
  delay(random(tMin, tMax));
}

SOLVED it...

Got mad and stripped down the candle() fx to barebones... now it OTAs fine. Odd. There was only a 0-7 for loop in candle(), why would it impair OTA? I mean I had a do while (1) in the loop(), but the handler is inside!

Oh well.