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));
}