나는 Arduino Uno R3과 Bluetooth Mate를 가지고 있습니다. 메이트를 Arduino 하드웨어 직렬 (핀 0,1)에 연결할 때 연결된 장치에서 여러 문자를 한 번에 보낼 수 있지만 소프트웨어 직렬 (예 : 4,2 핀 사용)으로 동일한 것을 만들려고 할 때만 첫 번째 문자를 가져오고 나머지 문자는 엉망이됩니다.소프트웨어 시리얼을 사용하여 한 번에 여러 개의 문자 수신
내 코드 :
예를 들어#include <SoftwareSerial.h>
int bluetoothTx = 4;
int bluetoothRx = 2;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup()
{
Serial.begin(115200);
bluetooth.begin(115200);
}
void loop()
{
if(bluetooth.available())
{
Serial.print((char)bluetooth.read());
}
}
나는이 문자 보내는 경우 : 내 안드로이드 장치에서 ABCD을 나는 시리얼 모니터에이 얻을 : ±,
이 코드 ö 그 Hardware Serial (블루투스를 0 번과 1 번 핀에 연결)을 사용하면 문제가 없습니다.
void setup()
{
Serial.begin(115200);
}
void loop()
{
if(Serial.available())
{
Serial.print((char)Serial.read());
}
}
나는 심지어 전송 속도를 변경하려고 시도했지만 도움이되지 않았다.
만약 문자 하나 하나를 보내면 잘 동작하지만 문자열로 보낼 수 있기를 바란다.
먼저 SoftwareSerial의 보오율을 최대한 낮게 조정 해보십시오. 문제가 해결되면 비트 밴잉 (bit-banging)의 한계에 부딪치게됩니다. – user373884
여기에 나와있는 가이드가 내 이론을 뒷받침하는 것처럼 보입니다. https://learn.sparkfun.com/tutorials/using-the-bluesmirf/example-code-using-command-mode – user373884
고려해야 할 또 다른 사항. 이 보드는 16MHz에서 작동하여 62.5ns의 사이클 시간을 제공합니다. 115200bps에서 단일 비트의 너비는 8.6uS (약 140 사이클)입니다. RX의 경우 비트 당 8 번 샘플링하여 올바르게 프레임을 만들어야한다고 가정합니다. 동시에 TX의 출력 상태 변경을 처리해야합니다. 애플리케이션 코드를 실행하는 동안 모두. 프레임이 약간 왜곡되면 놀랍지 않습니다. – user373884