Sto provando solo alcune cose, dato che voglio usare il mio Arduino Nano come interfaccia per il mio computer con un paio di LED e pulsanti. Quindi ho bisogno di inviare alcuni comandi e dati ad Arduino dal mio PC. Tuttavia trovo la comunicazione seriale di Arduino piuttosto lenta. Infatti, dal momento in cui preme Invio per inviare il mio comando nel monitor seriale, ci vuole quasi un secondo prima che il comando esegua (in questo caso per controllare un LED).Comunicazione seriale lenta con arduino? Latenza di quasi 1 sec?
Si tratta di una limitazione o posso accelerarlo in qualche modo?
Ecco il mio codice semplice:
String cmd;
int loopNum;
int ledPin = 13;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
if(loopNum == 0) {
Serial.println("Waiting for commands"); // Only display this when sketch is initiated.
}
cmd = Serial.readString();
if(cmd == "LEDON") {
digitalWrite(ledPin, HIGH);
Serial.println("LED ON");
}
if(cmd == "LEDOFF") {
digitalWrite(ledPin, LOW);
Serial.println("LED OFF");
}
if(cmd == "HELP") {
Serial.println("Available commands:\nLEDON\nLEDOFF\nHelp");
}
loopNum++; // Counts the loop...
delay(50);
}
Cambiare la velocità di trasmissione della serie non sembra cambiare nulla.
Qualche aiuto sarebbe apprezzato! :)
Non si sta verificando se c'è qualcosa da leggere quando si chiama Serial.readString(). Hai scoperto che il valore predefinito per Serial.setTimeout() è 1000 millisecondi. –