Parlare con arduino attraverso monitor seriale

Allora ragazzi in pratica vorrei realizzare un progetto dove io scrivo delle frasi sul monitor seriale e lui mi risponde con altre frasi...solo che non so da dove cominciare. Ho iniziato scrivendo questo codice. Però ho notato subito qualcosa che non andava perchè avevo messo all'inizio una variabile di tipo char...e in seguito l'ho cambiata con un array di char...ma non funziona lo stesso..e non so cosa fare.

Sketch.ino (366 Bytes)

Ciao, la seriale deve essere letta carattere per carattere (seriale per l'appunto :slight_smile: ) inoltre il case non può essere costruito così non puoi utilizare stringhe nei case. Per iniziare guarda l'esempio presente nell'ide SerialEvent e poi l'altro esempio StringComparisonOperators.
Poi una volta compreso il meccanismo se vuoi un altro consiglio lascia perdere le stringhe e converti il tutto con istruzioni c standard e l'utilizzo si vettori di char al posto delle stringhe.

Okay grazie mille

@skyzzo, perchè vuoi fare sta cosa ?
Arduino e queste piccole MCU sono pensate come controllori di circuiti elettrici. Hanno poca memoria SRAM, con le frasi la esaurisci subito.
Quello che vuoi fare mi pare più una cosa da PC-raspberry

Niente mi era venuta in mente questra idea e visto che ho ancora molto da imparare su arduino volevo saperne di più. Una domanda: Ma in qualche modo la memoria di Arduino può essere aumentata?

Se parli la memoria dove è memorizzato il programma e le relative variabilidi lavoro no, se invece parli di eeprom allora la risposta è si utilizzando, ad esempio, una eeprom I2C

Le stringhe occupano un byte a carattere, quindi esauriscono risorse ram, ma la cosa che vuoi fare non è difficile, direi banale, se si utilizza il metodo Serial.ReadString(), che restituisce appunto una stringa, in C++, è possibile confrontare una stringa con l'operatore ==
Quindi una possibile soluzione è.

String testo;
void loop()
{

     if (Serial.available() > 0) {
              
          testo=Serial.readString();
          if(testo=="codice"){

               //fai qualcosa


          }
          else if(testo=="altro"){

                  //fai altro
         }
             

  }

}

Non si può usare switch() col le stringhe perché accettano o char o int in C++ e C...