Lenteur de la communication série avec arduino? La latence de près de 1 sec?

Juste essayer quelques choses, que je veux utiliser mon Arduino Nano comme une interface pour mon ordinateur avec un couple de LED et les boutons. J'ai donc besoin d'envoyer certaines commandes et de données à l'Arduino à partir de mon PC. Cependant, je trouve la communication série de l'Arduino assez lent. En fait, à partir du moment où j'appuie sur Entrée pour envoyer ma commande dans la Série du Moniteur prend presque une seconde à exécuter (dans ce cas, pour contrôler une LED).

Est-ce une limitation ou peut-il être accéléré en quelque sorte?

Voici mon code simple:

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);
}

Changer le débit en bauds de la série ne semble pas changer quoi que ce soit.

Un peu d'aide serait appréciée! 🙂

  • Vous n'êtes pas vérifier si il n'y a rien à lire lorsque vous appelez le numéro de Série.readString(). Vous avez découvert que le défaut de la Série.setTimeout() est de 1000 millisecondes.