problema con stringa

gpb01:
Esattamente, peccato che NON tieni conto della velocità di elaborazione di Arduino rispetto alla velocità di arrivo dei caratteri ...
... dato che la MCU è più veloce, mentre ancora sta arrivando un carattere, nel buffer già non ce ne sono più e quindi, giustamente, Serial.available() ritorna 0.

Devi verificare la ricezione di un "terminatore" e solo alla sua ricezione uscire dal while() ... esempio, potresti attendere la ricezione del carattere CR (0x0D).

Guglielmo

int pinOut = 8;
char c;
String controllo;

void setup()

{
  pinMode(pinOut, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  controllo = "";

  while(Serial.available() > 0 || c != '\n')
  
 {
    if(Serial.available())
    {
    c = Serial.read();
    
    if (c != '\n') 
    controllo += c;
    
    }
  }

  if(controllo == "accendi")
    digitalWrite(pinOut, HIGH);

    if(controllo == "spegni")
     digitalWrite(pinOut, LOW);
}

Perfetto così funziona, grazie mille per l'aiuto e ora mi metterò sotto per studiare le funzioni in <string.h>.

Grazie mille per gli aiuti!