Comandare arduino da tastiera

Salve, sono un neofita e per questo chiedo il vostro aiuto.
Ho scritto questo programmino:

const unsigned int LED_PIN = 13;
const unsigned int BAUD_RATE =9600;

void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(BAUD_RATE);
}

void loop(){
if (Serial.available() > 0){
int commandByte = Serial.read();
if (commandByte == 'n'){
digitalWrite(LED_PIN, HIGH);
Serial.println("LED on");
} else if (commandByte == 'f') {
digitalWrite(LED_PIN, LOW);
Serial.println("LED off");
} else {
Serial.print("Unknown commandByte: ");
Serial.println(commandByte);
}
}
}

Tale programma, mi permette tramite il serial monitor di controllare l'accensione-spegnimento di un led da tastiera, semplicemente digitando n (per accendere il led) e f (per spegnere il led).
Ora vorrei chiedervi gentilemente se sapresti dirmi come fare accendere il led digitando on e spegnerlo digitando off.
Ho già provato a sostituire le lettere n e f con le parole on e off ma non mi funziona. Avete dei consigli?

nella documentazione del serial dice che:
"Returns
the first byte of incoming serial data available (or -1 if no data is available) - int"
quindi solo il primo byte di tutto il buffer, quindi con un solo read non potrai mai avere due lettere assieme.
devi fare un loop che fa il read n volte, ed ad ogni lettura l'accodi in un tuo buffer, in modo da ricomporre la parola.

Devi scrivere il byte che arrivano dalla seriale in un array e poi fare un confronto tra 2 stringhe.
Le cose non sono cosí semplici come potresti pensare.
Il primo inghippo é la lunghezza differente delle 2 parole.
Ti aiuto starera.
Ciao Uwe

Va bene Uwe.
Allora aspetto un tuo aiuto, grazie.

Questo se non altro funziona, ma ci sono centinaia di soluzioni migliori... e più adattabili ad altri scopi.

int LED_PIN = 13;
int oldCommandByte;
boolean activeOff = false;

void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  if (Serial.available()){
    int commandByte = Serial.read();
    if (commandByte == 'n' && oldCommandByte == 'o') {
      digitalWrite(LED_PIN, HIGH);
      Serial.println("LED on");
      activeOff = false;
    } else if (commandByte =='o') {
      activeOff = true;
      oldCommandByte = 'o';
    } else if (oldCommandByte == 'o' && commandByte == 'f') {
      oldCommandByte = 'f';
      activeOff = true;
    } else if (commandByte == 'f' && oldCommandByte =='f' && activeOff == true) {
      digitalWrite(LED_PIN, LOW);
      Serial.println("LED off");
      activeOff = false;
    } else {
      activeOff = false;
      Serial.print("Unknown commandByte: ");
      Serial.println(commandByte);
    }
  }
}

Il codice per leggere piú caratteri é

char Data[8];
int i;
unsigned long Tempo;

void setup()
{
  Serial.begin(9600);
}

void loop(){
 
   do {
     if (Serial.available()) {       
       Data[i] = Serial.read();
       i++;
       }     
     if(i<1)Tempo = millis(); 
     } while (i<7&&(millis()-Tempo) < 500);
  
   Data[i] = 0;    
 }

Questo codice riceve fino a 7 byte aspettando mezzo secondo il termine della trasmissione.
In questo modo puoi trasmettere un numero diverso di caratteri.

Poi devi controllare se nell#array c’é scritto on o off.

Ciao Uwe

Mi riallaccio a questo discorso per non aprire un nuovo topic.... credo sia possibile fare ciò: con una tastiera e 2 led e se inserisco un codice su tastierino se è esatto mi accende il led verde se errato mi accende il led rosso.... come posso fare? diciamo che i miei dubbi sono più sul collegamento del tastierino ad arduino e sulla scritta del programma...

ps: ma cosa sono le librerie? scusate la mia ignoranza ma non è nemmeno una settimana che pratico con arduino...

fonik, devi aprire una nuova discussione.
Ciao Uwe