El problema viene creo a la hora de enviar los paramettros por lo que acabo de ver, estoy enviando:
printf("AT+NAMEMICROCHIP");
e igual tendría que enviar :
printf("AT+NAMEMICROCHIP;\r\n");
Deberias pero lo que me parece raro es que en Arduino no te lo agrega a eso por si solo. El string se va a guardar de la misma forma sea cual sea el compilador. Y el envio en arduino no hay nada que le agregue, El envio como podes observar en esta parte que voy a poner a continuacion, no es simple de encontrar por que la clase SoftwareSerial es derivada de Stream y Stream es derivada de Print, Por lo tanto el write (con una string de parametro) termina perteneciendo a la clase Print
//Print.h
virtual size_t write(const uint8_t *buffer, size_t size);
size_t write(const char *buffer, size_t size) {
return write((const uint8_t *)buffer, size);
}
//Print.cpp
size_t Print::write(const uint8_t *buffer, size_t size)
{
size_t n = 0;
while (size--) {
if (write(*buffer++)) n++;
else break;
}
return n;
}
Como ves es un simple envio por UART y no le agrega nada. Por eso lo primero que me vino a la mente es un problema con el printf, Y realize un programa casi igual al de Arduino para el envio de las cosas.
Todo me parece muy raro iscume lo que estas planteando. Porque se descartaron todos los posibles problemas.
- En Arduino funciona, por lo cual el modulo funciona correctamente.
- En PIC podes escribir y te lo toma como texto a enviar... Por lo cual quiere decir que el PIC esta bien configurado la UART (baudrate/stopbit/etc) y puede comunicarse.
- Se esta enviando lo mismo en ambos casos, no se le agrega nada de nada.
La unica que queda sera ese delay de 2 segundos antes de iniciarlo. Otra diferencia no hay por lo que planteas. BT1.begin simplemente llama al constructor de la clase que completa las variables para la comunicacion por software en caso de hacerse.
La otra diferencia es que estas enviando 1 caracter antes ademas del comando AT (Sin contar que si envias 10 caracteres estas 2 instrucciones se realizan 10 veces):
BT1.print(c);
BT1.print("AT+NAMETODOPIC");
Si ninguna de estas 2 es la solucion, ya no se que mas decirte. Ya que estariamos haciendo exactamente lo mismo.