Leggere caratteri specifici in una stringa nel seriale

Ciao a tutti! Sto facendo qualche piccolo esperimento con un diodo LED RGB e, premesso che col monitor seriale ci ho già lavorato per accendere e spegnere un diodo LED semplice, adesso vorrei fare qualcosa di più complesso. L'idea sarebbe quella di immettere nel monitor comandi del tipo R255, G025, B140, R000, ecc., dove la prima lettera (R, G o B) mi indicano il colore da modificare e le tre cifre dopo l'intensità (no so come dirlo) del colore in questione. Farlo con le varie opzioni (ovvero prima scegliere il colore e con un secondo comando immettere il valore) mi sembra un po' macchinoso e non mi "arricchirebbe" affato... Ciò che più che altro mi servirebbe è qualche comando che mi permetta di "smontare" la stringa ed analizzarmela pezzo pezzo... Qualcuno saprebbe come aiutarmi? Consigli ed idee in merito?

beh la seriale funziona come una lista FIFO, cioè il primo carattere ricevuto è il primo ad essere letto quindi a te basta leggere un carattere alla volta con il metodo Serial.read() e in base a ciò cambi di stato... e non dimenticare che ogni carattere è in ASCII

spero di esserti stato utile, se hai altre domande chiedi pure ;)

Non usare stringhe lavora con array. Dicciamo che il formato dellcomado é 1 lettera per il colore R G o B e 3 numeri in decimale per l' intensitá. leggi un caratere dalla seriale. controli se é R G o B. Se sí scrivi i 3 valori sucessivi un un arrey. Il arrey lo scegli a secondo della lettera. Dopo i 3 numeri devi aggiungere un ZERO per terminare il valore e poi lo trasformi con valore = atoi(array); in un numero. Decidi Tu se devi trasmettere sempre tutti i 3 colori o se vuoi agiornare il LED dopo ogni trasmissione.

Ciao Uwe

Come ha suggerito @uwe, qualcosa del genere:

char arr[4];   // cella 0=R/G/B;cella 1,2,3=cifre;   esempio:  R210=>  [0]='R'     [1]='2'   [2]='1'     [3]='0'
int cnt=0;     // conta numero caratteri arrivati 0->3   al 4 ritorna a 0
int val=0;
char c;
void loop() {
  if(Serial.available())   
  { char c=Serial.read();
    arrR[cnt]=c;
    cnt=cnt+1;
    if(cnt==4) 
    { // arrivati tutti,   ascii carattere - ascii '0' = valore singola cifra es.  '5'=53 '0'=48    53-48=5
        val=(arr[1]-'0')*100 + (arr[2]-'0')*10 + arr[3]-'0';     // es. 210=2*100+1*10+0
        if(val>255) val=255;
        switch(arr[0])
        { case 'R': digitalWrite(pinR,val); break;
          case 'G': digitalWrite(pinG,val); break;
          case 'B': digitalWrite(pinB,val); break;
        }
        cnt=0;
    }
  } // end if
} // end loop

E' essenziale che vengano trasmessi SEMPRE 4 caratteri nel formato stabilito X999. Il programma non capisce se ci sono invii errati.