Demora de aprox 1 segundo para o Arduino executar a função.

Estou fazendo teste para acender/apagar um led através de comandos pela porta serial.
O problema é o seguinte, ao enviar o comando para acender ou apagar o led do pino 13 do Arduino, ele demora aproximadamente 1 segundo para executar o comando (mudar estado lógico da porta), eu havia encontrado um exemplo onde tinha um comando que fazia o Arduino executar a função imediatamente, porém não encontrei mais esse exemplo.
Alguém sabe qual o comando?? Acho que é algo como precisão do tempo de resposta. Segue abaixo o código que estou testando.
Obrigado, abraços.

String incoming;

void setup() 
{
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600); //Inicializa a serial
}

void loop() 
{
   if (Serial.available() > 0)
   {
   incoming = Serial.readString();
    
    if(incoming == "a")
    {
    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
    }
    if(incoming == "b")
    {
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    }
   }
}

E que tal usares read em vez de readString???

char incoming; 

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600); //Inicializa a serial
}

void loop()
{
   if (Serial.available() > 0)
   {
   incoming = Serial.read();
   
    if(incoming == "a")
    {
    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
    }
    if(incoming == "b")
    {
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    }
   }
}

Já agora, lendo a fraca descrição de readString, possivelmente terias de enviar um terminador de string para que a função não fique à espera antes de avançar.
Seja como for, se apenas vais enviar um caracter, não devias usar Strings.

https://www.arduino.cc/en/Serial/ReadString

bubulindo:
E que tal usares read em vez de readString???

char incoming; 

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600); //Inicializa a serial
}

void loop()
{
  if (Serial.available() > 0)
  {
  incoming = Serial.read();
 
    if(incoming == "a")
    {
    digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
    }
    if(incoming == "b")
    {
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    }
  }
}

bubulindo:
Já agora, lendo a fraca descrição de readString, possivelmente terias de enviar um terminador de string para que a função não fique à espera antes de avançar.
Seja como for, se apenas vais enviar um caracter, não devias usar Strings.

Serial.readString() - Arduino Reference

Testei o código que você postou e o led não acende/apaga.
Eu não lembro a função, mas era algo como funçãovarredura=1 e acendia/apagava instantaneamente.
No código acima eu estou enviando um único caractere, esse código é só para testar a comunicação, eu vou usar strings sim.
Obrigado pela ajuda.

Aparecido:
Testei o código que você postou e o led não acende/apaga.
(...)

Veja assim. O bubulindo não corrigiu o código original completamente.

char incoming;

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600); //Inicializa a serial
}

void loop()
{
   if (Serial.available() > 0)
   {
   incoming = Serial.read();
   
    if(incoming == 'a')
    {
    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
    }
    if(incoming == 'b')
    {
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    }
   }
}

luisilva:
Veja assim. O bubulindo não corrigiu o código original completamente.

char incoming;

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600); //Inicializa a serial
}

void loop()
{
  if (Serial.available() > 0)
  {
  incoming = Serial.read();
 
    if(incoming == ‘a’)
    {
    digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
    }
    if(incoming == ‘b’)
    {
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    }
  }
}

Testei aqui e ficou instantâneo, obrigado.
Para string tem outro exemplo? Porque esse código eu estava relembrando como funciona comunicação serial.
O que estou tentando fazer vai usar string, por exemplo ‘ledon’ e ‘ledoff’.

Demorou até perceber onde estava o erro... :slight_smile: Obrigado pela correcção.