반응형
데이터를 보내도 앞의 문자들이 같으면 같은 것으로 인식하는 경우가 발생
그러니까 stop 문자와 stopoff를 같은 문자열로 인식하는 경우 해결
원래 코드
// Read received messages
if (SerialBT.available()){
char incomingChar = SerialBT.read();
if (incomingChar != '\n'){
message += String(incomingChar);
}
else{
message = "";
}
Serial.write(incomingChar);
}
// Check received message and control output accordingly
if (message =="stop"){
digitalWrite(LSTOP, HIGH);
SerialBT.print("LSTOP on");
}
else if (message =="stopoff"){
digitalWrite(LSTOP, LOW);
SerialBT.print("LSTOP off");
}
Serial Bluetooth Terminal로 테스트 하면 같은 문자열로 인식해 위 코드처럼 LSTOP ON 메시지가 연속으로 찍히는 일이 발생한다. 아래 수정 코드를 반영하니 명확히 인식한다.
수정한 코드
Bluetooth가 몇 가지 추가 변수를 전송한다는 것을 알고 있었지만 이를 감지하고 삭제하는 방법을 몰랐습니다. 하지만 이미 해결책을 찾았습니다.
먼저 text = SerialBT.read(); 를 사용하여 추가 문자를 감지했습니다. 블루투스는 문자열 데이터 끝에 추가 문자를 전송합니다. 그래서 text.remove(text.length()-1,1); 를 사용했고 모든 것이 이미 올바르게 작동하고 있습니다.
코드 완성:
#include "BluetoothSerial.h"
String text = "";
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32"); //Bluetooth device name
;}
void loop() {
if (SerialBT.available() > 0) {
text = SerialBT.readStringUntil('\n');
Serial.println(text);
if(text == "go") {
Serial.println("Info");
}
}
delay(20);
}
반응형
'ESP32' 카테고리의 다른 글
ESP32-S3 개발 기판 2.4G Wi-Fi 모듈용 아두이노용 ESP IDF ESP32-S3-WROOM-1 N8R2 N16R8 44핀 Type-C 8M PSRAM ESP32 S3 (1) | 2024.11.24 |
---|---|
ESP32 부저 회로도 (0) | 2024.11.22 |
ESP32 WROOM 핀아웃: ESP32 GPIO 핀 사용 (1) | 2024.11.19 |
BLE 통신 방법과 프로토콜 구조, 라이브러리 설명 (3) | 2024.11.17 |
ESP32 Arduino Websocket 서버: JSON 콘텐츠 수신 및 파싱 (1) | 2024.11.14 |
TM74 LED Driver - 4 digit 7 segment (1) | 2024.11.11 |
ESP32 4-digit 7-segment display (4) | 2024.11.11 |
Android 폰에서 ESP32로 데이터를 보내는 방법 (5) | 2024.11.11 |
더욱 좋은 정보를 제공하겠습니다.~ ^^