comunicazione pc-arduino

Non devi bloccare il programma.

Da computer invii un comando, scriverai un programma per PC col linguaggio che conosci, il comando può essere un semplice carattere, ad ogni carattere ricevuto richiami una funzione specifica che fa una determinata cosa. Al posto di un carattere, puoi inviare una stringa "una parola", e in questo caso farai il confronto con le parole-stringhe.

Non c'è bisogno che blocchi il programma, arduino per gestire la seriale dispone del metodo
Serial.available(), che dice se sulla seriale ci sono caratteri da leggere.

Quindi nel loop(), metterai un controllo,

se sulla seriale ci sono caratteri, leggi il comando

se il comando è uguale a xxxx esegui questa funzione

void loop(){
    
       if(Serial.available()){ // Solo se ci sono caratteri sulla seriale
       
            char comando=Serial.read(); // Legge il carattere di comando
           
            switch(comando){
                 case 'a':
                      funzione1();
                      break;
                  case 'b':
                       funzione2();
                       break;
                  case 'c':
                        funzione3();
                        break;

            }
       }


}

void funzione1(){

  // codice da eseguire col comando 'a'
}

void funzione2(){
  //codice da eseguire col comando 'b'

}


void funzione3(){
  
  //codice da eseguire col comando 'c'

}

Se invece il comando è una stringa procederai in un modo un po più complicato, cioè prima un ciclo che legga tutta la stringa, e poi il confronto delle stringhe tramite funzione strcmp(), se le stringhe sono in stile C. Se la stringa è un oggetto string si procede in un modo ancora diverso, ma è meglio usare stringhe in stile C cioè array di char.