Arduino: korzystanie z Serial i Software Serial z modułem Bluetooth
Moim celem jest wykorzystanie Arduino do skonfigurowania komunikacji między komputerem a urządzeniem z systemem Android za pomocą modułu Bluetooth HC-05.
Korzystam z komunikacji USB między komputerem PC a Arduino (Serial Monitor) i SoftwareSerial, aby połączyć się z HC-05.
Moim problemem jest to, że komunikacja działa dobrze z BT na PC, ale nie działa w oczekiwany sposób w inny sposób. Podczas wysyłania z komputera PC do BT wszystkie wysłane znaki są odbierane przez urządzenie BT tylko po zamknięciu monitora szeregowego na komputerze lub po zresetowaniu Arduino.
Wykluczyłem problem z modułem BT lub aplikacją na Androida, ponieważ jeśli w Arduino implementuję kod „ECHO” (pisz w Androidzie i wysyłam w Androidzie), wszystko działa dobrze.
Z kodem Arduino opublikowanym poniżej oczekiwane zachowanie to: Reset Arduino-> Wysłane słowo Hello, Monitor szeregowy otwarty-> nic się nie dzieje, znak zapisany na monitorze szeregowym-> znak odebrany przez BT, znak zapisany na BT-> znak odebrany na Serial Monitor , Monitor szeregowy zamknięty-> nic się nie dzieje.
Prawdziwe zachowanie to: Reset Arduino-> Wysłane słowo Hello, otwarty monitor szeregowy-> 2 Witaj słowo na BT i 1 („dobranoc”) na PC, znak zapisany na monitorze szeregowym-> nic, znak zapisany na BT-> znak odebrany na Serial Monitor, Serial monitor closed-> poprzedni zapisany znak (y) w otrzymanym monitorze szeregowym + Hello Word.
Jak mogę rozwiązać ten problem?
Kod:
#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);
}
}