Problema inizializzazione serial1

Scusa ma avendolo cancellato e poi riscritto non mi ero accorto di ciò.Corretto adesso

Per orso2001.Scusa ma come ormai avrai capito non sono un esperto,qui non ciò proprio capito(inserendo il char letto solo se diverso da '\n'. ) puoi farmi un esempio di quello che intendi.Riguardo alla \ in meno ho riscritto in questo modo if (content == "Cucina\n") e comunque l'if è sempre false

L'ho riscritto ,credo interpretando le tue indicazioni, in questo modo e sembra che vada anche il terzo if

 //.....................
  if (Serial.available()) {  // Guarda sulla seriali se ci sono dati in arrivo
    character = Serial.read();  // Leggi il carattere seriale

    content.concat(character);  // Aggiungi carattere a stringere String
    if (character == '\n') { // Carattere speciale che indica fine riga
      Blynk.virtualWrite(V0, content);  // invia una stringa al terminale

      // content = "";  // Clear holding String
       //Serial.print(content);
      //________________
 
//
      if (content != "Cucina\n")

      {
        Serial.print(content);
        Blynk.virtualWrite(V1, 255);
        led1.on();
      }
      else{
        led1.off();
      }
//----------------------
if (content == "Luci1")

      {
        Serial.print(content);
        Blynk.virtualWrite(V1,255);
        led2.on();
      }
      else{
        led2.off();

Mentre prima Luci1 non andava adesso sembra funzionare anche lui,anche se ha il segno== il che riferito al primo if non sarebbe dovuto funzionare.

tralasciando che mancano, nel tuo codice, un po' di graffe di chiusura...io farei così:

  if (Serial.available() > 0) {

    character = Serial.read();

    if (character != '\n') {
      content.concat(character);
    }

    else {

      if (content == "Cucina") {
        //fai qualcosa
      }
      else {
        //fai altro
      }

      if (content == "Luci1") {
        //fai qualche cosa 2
      }

      else {
        //fai altro 2
      }
      content = "";
    }
  }

Attenzione che se invii "Cucina" l'else di "Luci1" viene eseguito...al contrario se invii "Luci1" l'else di "Cucina" viene eseguito...non so cosa vuoi fare...forse è meglio gestire un messaggio di ON e di OFF per ogni luce

Si hai ragione si attiva su tutto. Cercherò di riscrivere seguendo le tue indicazioni.Quello che io voglio ottenere e che alla ricezione di Cucina si attivi il led1 e alla ricezione di Luci1 il led2,sembrava una cosa più semplice ma si sta rivelando più dura del previsto

anche perchè se invii una stringa che non è ne "Cucina" ne "Luci1" i due else vengono eseguiti...

Non va questo è il codice riscritto la serialprint non stampa e di conseguenza tutto il resto

void SerialInput() {
  //.................

 if (Serial.available() > 0) {

    character = Serial.read();

    if (character != '\n') {
      content.concat(character);
       Blynk.virtualWrite(V0, content);  // invia una stringa al terminale
    }

    else {

      if (content == "Cucina") { 
         Serial.println("Cuci");//non stampa per cui l'if è false
        Serial.print(content);
        
        Blynk.virtualWrite(V1, 255);
        led1.on();
      }
      else {
        Blynk.virtualWrite(V1, 0);
        led1.off();
      }

      if (content == "Luci1") {
        Serial.println("LUci");// non stampa
        Serial.print(content);
        
        Blynk.virtualWrite(V3,255);
        led2.on();
      }

      else {
        Blynk.virtualWrite(V3,0);// 
        led2.off();
      }
      content = "";
    }
  }

L'unico che funziona è il terminale ma impiega troppo tempo a fermarsi dopo che è mancato il segnale.Mi spiego meglio dopo aver fermato la seriale lui continua a stampare

prova questo...ho diviso per comandi ON ed OFF...e dovrebbe tenere conto anche delle stringhe non riconosciute come comando.
ho usato l'istruzione F() che ti salva le stringhe statiche nella flash...così risparmi un po' di memoria utile per le variabili.

void SerialInput() {
  //.................

  if (Serial.available() > 0) {

    character = Serial.read();

    if (character != '\n') {
      content.concat(character);
    }

    else {
      Blynk.virtualWrite(V0, content);  // invia una stringa al terminale
      if (content == F("CucinaON")) {
        Serial.println(F("Cuci ON"));//non stampa per cui l'if è false
        Serial.println(content);

        Blynk.virtualWrite(V1, 255);
        led1.on();
        content = "";
      }
      else if (content == F("CucinaOFF")) {
        Serial.println(F("Cuci OFF"));//non stampa per cui l'if è false
        Serial.println(content);
        Blynk.virtualWrite(V1, 0);
        led1.off();
        content = "";
      }

      else if (content == F("Luci1ON")) {
        Serial.println(F("Luci1 ON"));// non stampa
        Serial.println(content);

        Blynk.virtualWrite(V3,255);
        led2.on();
        content = "";
      }

      else if (content == F("Luci1OFF")) {
        Serial.println(F("Luci1 OFF"));// non stampa
        Serial.println(content);

        Blynk.virtualWrite(V3,0);//
        led2.off();
        content = "";
      }
      else {
        Serial.println(F("Codice non valido"));
        content = "";
      }
    }
  }
}

Niente qualsiasi comando invio mi da sempre" codice non valido"

Per essere sicuri...scrivi "CucinaON" e non "cucinaON"...!?
E nel monitor seriale hai abilitato la sola new linea e non il CR?

PS: non è che nel resto del programma hai altre serial.rrad()?

Allora adesso sembra andare bene solo che leggendo in un post vecchio del 2012 di questo forum si accennava a questo comando "trim" l'ho inserito e ripeto sembra andare bene(content.trim();// elimina spazi iniziali e finali)Adesso debbo adattare il tuo schek alle mie esigenze.Se avro problemi mi rifarò vivo,e questo è un dato certo.

Sto facendo vari test e sembra rispondere bene. Ho provato con altre stringhe, cioè diverse da quelle che deve riconoscere, e mi risponde bene.No non ho alcuna serial.read.
Grazie ed Auguroni di buon anno

bhe...se con trim() ti va bene vuol dire che prima inviavi anche "spazi vuoti" o all'inizio od alla fine della Stringa....trim() elimina appunto gli "spazi vuoti" alle due estremità.

Non ti so dire a vista e sul monitor seriale sembra che non c'è ne siano. Adesso ho un altro problema, come posso svuotare il buffer a fine trasmissione?.Mi spiego,continuo a ricevere dati per altri pochi secondi anche se non ne trasmetto più .Ma se aumento la velocità lo svuoto più rapidamente?

ciao...non mi è chiaro...chi trasmette questi dati "in più"?...arduino verso altro dispositivo oppure altro dispositivo verso arduino?

i Dati li trasmette il mega ed in rx ho un shield esp

Se ad ogni Serial.print() fai seguire una Serial.flush() il programma resta li fino allo svuotamento del buffer

Salve e buon anno.Dopo vari test sono giunto alla conclusione che non e solo il buffer di arduino,lui influisce minimamente ,ma sono i dati ancora memorizzati sul server e che hanno il loro tempo di latenza