Condicionales if y else if fallan

Tengo unos problemillas con mi código, se supone que tengo que mandar una letra mediante bluetooth y al reconocerla me imprime la letra y si es a: avanza, si es r: retrocede y si es p:pausa, ahora bien, lo que me imprime siempre es el código que le he indicado en el else, incluso cuando envio esas letras que decia anteriormente sigue apareciendome el codigo del else, no entiendo por que, espero puedan ayudarme. Gracias

#include <SoftwareSerial.h>
SoftwareSerial BT1(0,1); // RX, TX recorder que se cruzan

void setup()
{
Serial.begin(9600);
Serial.println("Enter AT commands:");
BT1.begin(9600);
}

void loop()
{
if (BT1.available())
Serial.write(BT1.read());

if (Serial.available())
{ String S = GetLine();
BT1.print(S);
Serial.println("---> ");
if(S == "a"){
Serial.println("Avanzar");
}else if(S == "p"){
Serial.println("Pausar");
}else if(S == "r"){
Serial.println("Retroceder");
}else{
Serial.println("No se ha enviado una señal correcta");
}
}
}

String GetLine()
{ String S = "" ;
if (Serial.available())
{ char c = Serial.read(); ;
while ( c != '\n') //Hasta que el caracter sea intro
{ S = S + c ;
delay(25) ;
c = Serial.read();
}
return(S) ;
}
}

Lo primero, has posteado 2 veces lo mismo, lo segundo el post en ingles no pinta nada en el foro en español, lo tercero no te has leido las normas y posteas sin las etiquetas, y por ultimo, este es un claro caso de usar un switch con sus case, no tanto if...

:wink:

Perdon, pero es que no lo había usado nunca antes, vale, al usar el switch me dice que necesito un entero:

#include <SoftwareSerial.h>
SoftwareSerial BT1(0, 1); // RX, TX recorder que se cruzan

void setup()
{
Serial.begin(9600);
Serial.println("Enter AT commands:");
BT1.begin(9600);
}

void loop()
{
if (BT1.available())
Serial.write(BT1.read());
if (Serial.available())
{ String S = GetLine();
/* BT1.print(S);
Serial.println("---> ");*/
switch(S){
case 'a':
Serial.println("Avanzar");
break;
case 'p':
Serial.println("Parar");
break;
case 'r':
Serial.println("Retroceder");
break;
}
}
}

String GetLine()
{ String S = "" ;
if (Serial.available())
{ char c = Serial.read(); ;
while ( c != '\n') //Hasta que el caracter sea intro
{ S = S + c ;
delay(25) ;
c = Serial.read();
}
return (S);
}
}

Estas conectando el modulo bluetooth en los pines 0 y 1 ?

Porque no intentas en otros pines porque esos se usan para la comunicación serie.

#include <SoftwareSerial.h>
SoftwareSerial BT1(2,3);
char dato=' ';

void setup(){
   Serial.begin(115200);            
   BT1.begin(9600); 
}

void loop(){
   if (BT1.available())  {
      dato = BT1.read();
      Serial.print(dato);
      Serial.print(" ---> ");
      switch(dato){
      case 'a':
         Serial.println("Avanzar");
         break;
      case 'p':
         Serial.println("Parar");
         break;
      case 'r': 
         Serial.println("Retroceder");
         break;
      default:
         Serial.println("Ese no lo conozco");
      }
   }
}

Lagger18:
Lo primero, has posteado 2 veces lo mismo, lo segundo el post en ingles no pinta nada en el foro en español, lo tercero no te has leido las normas y posteas sin las etiquetas

Te he enviado un privado para que prestes atención y edites los dos post que tienen código sin etiquetas.