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!