ESP82266MCU

Ciao a tutti,
ho un problema con questa scheda e non so se e' a livello hardware o software,
di tanto in tanto quando il codice e' in esecuzione si blocca e non mi da nessuna possibilita' di comando, ho guardato su internet vari post e ho pensato che fosse un problema di watchdog
e ho cercato di inserirlo nel codice ma primo non so se l'ho inserito correttamente e non so piu'
cosa pensare e fare.
Guardando la serial port l' ultima stringa che compare prima del blocco e' "new client"
Se qualcuno ha avuto un problema similare Vi posto il codice.
Grazie

#include <ESP8266WiFi.h>

const char* ssid = ""; 
const char* password = "";  
int ledPin = 13;
int ResultSomma;
int StatoPinD4; 
WiFiServer server(80);

void setup() {  
      Serial.begin(115200);
      
      ESP.wdtDisable(); 
      
      pinMode(ledPin, OUTPUT);
      pinMode(D4, OUTPUT);
      digitalWrite(ledPin, LOW); 
      delay(10);      
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid); 
      WiFi.begin(ssid, password); 
      while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
      }
      Serial.println("");
      Serial.println("WiFi connected");       
      server.begin();
      Serial.println("Server started");       
      Serial.print("Use this URL to connect: ");
      Serial.print("http://");
      Serial.print(WiFi.localIP());
      Serial.println("/"); 
      Serial.printf("\n\nrinfo->reason=%d\n\n", ESP.getResetInfoPtr()->reason);       
      
      ESP.wdtEnable(WDTO_500MS);
            
}
void LampeggioD4() {             
      digitalWrite(D4, HIGH);
      StatoPinD4 = digitalRead(D4); 
      Serial.print(StatoPinD4);
      delay(500);        
      digitalWrite(D4, LOW);
      StatoPinD4 = digitalRead(D4); 
      Serial.print(StatoPinD4);
      delay(500);
      }
 
void loop() {         
     
      LampeggioD4();     
      
       
      WiFiClient client = server.available();
      if (!client) 
          {
            return;
          } 
    
      Serial.println("new client");
      while(!client.available())
          {
            delay(500);
          }
      yield(); 
      // Read the first line of the request
      String request = client.readStringUntil('\r');
      Serial.println(request);
      client.flush(); 
      // Match the request 
      int value = LOW;
      if (request.indexOf("/LED=ON") != -1)  
          {      
            digitalWrite(ledPin, HIGH);
            value = HIGH;
          }
      if (request.indexOf("/LED=OFF") != -1)  
          {
            digitalWrite(ledPin, LOW);
            value = LOW;
          }
      client.flush(); 
      
      client.println("HTTP/1.1 200 OK");
      client.println("Content-Type: text/html");
      client.println(""); //  do not forget this one 
      //client.println("<!DOCTYPE HTML>");
      //client.println("<html>"); 
      //client.print("Led pin is now: "); 
      if(value == HIGH) 
          {
            client.print("INSERITO");
          } 
          else 
          {
            client.print("DISINSERITO");
          } 
    
      delay(1);
      Serial.println("Client disonnected");
     //Serial.println("");  
      ESP.wdtFeed();      
  }

Ipotesi. Spesso su microcontrollori (MCU) con poca memoria la classe String dopo un pò da problemi, deframmentazione della memoria SRAM.

Grazie per la risposta intanto, ma secondo te cosa posso fare?

cambiare le String con gli array di char?.... :smiley:

Ciao, ho visto alcuni codici nel web per ESP8266 molto complessi, e questo codice l' ho preso e leggermente modificato dal web ed e' di poche righe, come fanno a girare gli altri Skatch piu' complessi senza fermarsi?

normalmente gli skatct gli scratc gli skhatch i programmi :smiley: , funzionano se sono scritti correttamente, a prescindere dalla loro lunghezza :wink: quindi dipende sempre da come sono scritti, ti abbiamo detto quale è il probabile motivo del fatto che il tuo non gira....