Arduino: utilizando serie y software serie con módulo bluetooth
Mi propósito es usar Arduino para configurar la comunicación entre una PC y un dispositivo Android usando un módulo bluetooth HC-05.
Uso la comunicación USB entre la PC y el Arduino (Monitor de serie) y un SoftwareSerial para conectarme al HC-05.
Mi problema es que la comunicación funciona bien desde BT a la PC, pero no funciona como se esperaba en la otra forma. Al enviar desde la PC a BT, todos los caracteres enviados son recibidos por el dispositivo BT solo cuando cierro el Monitor Serial en la PC o cuando reinicio el Arduino.
He excluido un problema con el Módulo BT o la aplicación de Android porque si en Arduino implemento un código "ECHO" (escribir en Android y enviar en Android) todo funciona bien.
Con el código Arduino publicado debajo, el comportamiento esperado es: Arduino restablecer-> Hola palabra enviada, Serial monitor abierto-> no pasa nada, carácter escrito en serial monitor-> carácter recibido en BT, carácter escrito en BT-> carácter recibido en Serial Monitor , Monitor de serie cerrado-> no pasa nada.
El comportamiento real es: Arduino reset-> Hola palabra enviada, Monitor de serie abierto-> 2 Hola palabra en BT y 1 ("buenas noches") en PC, carácter escrito en serie monitor-> nada, carácter escrito en BT-> carácter recibido en el Monitor de serie, el Monitor de serie cerrado-> caracteres anteriores escritos en el monitor de serie recibido + Hello Word.
¿Como puedo solucionar este problema?
Código:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int a=0;
char c;
char d;
void setup() {
Serial.begin(9600);
Serial.println("Goodnight moon!");
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
void loop() {
delay(10);
if (Serial.available()) {
c=Serial.read();
delay(10);
Serial.write(c);
}
delay(10);
if (mySerial.available()) {
d=mySerial.read();
delay(10);
mySerial.write(d);
}
}