前提
ESP32同士(マスターとスレーブ)をbluetooth接続し、setup()のなかで信号をお互いに送受信するプログラムを書いています。
信号の送受信ができたらbluetooth接続を切断したいのですが、SerialBT.disconnect();を入れても切断できていないようです。(信号の送受信については問題ないことを確認できています。)
なにか考えられる原因があればご教示いただけますとありがたいです。よろしくお願いいたします。
発生している問題・エラーメッセージ
SerialBT.disconnect();が成功したらSerial.printするようにしていますが、何も表示されないため、切断ができていないものと思われます。
該当のソースコード
//マスター側 #include "BluetoothSerial.h" BluetoothSerial SerialBT; String MACadd = "1A:2B:3C:4D:5E:6F"; uint8_t address[6] = {0x1A, 0x2B, 0x3C, 0x4D, 0x5E, 0x6F}; //uint8_t address[6] = {0x00, 0x1D, 0xA5, 0x02, 0xC3, 0x22}; String name = "OBDII"; char *pin = "1234"; //<- standard pin would be provided by default bool connected = 0; int connect_count = 3; void setup() { Serial.begin(115200); Wire.begin(); SerialBT.begin("ESP32test", true); Serial.println("The device started in master mode, make sure remote BT device is on!"); // connect(address)は高速(最大10秒)、connect(slave_name)は低速(最大30秒) // slave_nameでの接続はMACアドレスを調べなくても良いが接続は遅い while (connected == 0) { // connectedが0(未接続)なら接続実行を繰り返す if (connect_count != 0) { // 再接続実行回数カウントが0でなければ //connected = SerialBT.connect(slave_name); // 接続実行(接続名で接続する場合) connected = SerialBT.connect(address); // 接続実行(MACアドレスで接続する場合) connect_count--; // 再接続実行回数カウント -1 } else { Serial.println("ESP_Restart"); // 再接続実行回数カウントが0なら接続失敗 ESP.restart(); } } pinMode(LED_BUILTIN, OUTPUT); pinMode(36, OUTPUT); while (1) { if (SerialBT.available()) { //受信信号があれば処理する if (SerialBT.read() == 'L') { Serial.println("switch on"); digitalWrite(LED_BUILTIN, HIGH); //信号を受信したらLチカさせる delay(100); digitalWrite(LED_BUILTIN, LOW); delay(20); goto loopout; } } } loopout:; delay(50); while (1) { if (センサ値 > 2048) { SerialBT.write('S'); //Serial.write("\n"); Serial.println("SS"); delay(20); SerialBT.disconnect(); // 接続を一時的に遮断する。 if (SerialBT.disconnect()) { Serial.println("Disconnected Succesfully!"); } delay(20); goto loopout2; } } loopout2:; } void loop(){ …省略… }
//スレーブ側 #include "BluetoothSerial.h" #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("ESP32test"); //Bluetooth device name Wire.begin(); Serial.println("The device started, now you can pair it with bluetooth!"); delay(3000); digitalWrite(33, HIGH); for (int i = 0; i < 10000; i++) { digitalWrite(25, HIGH); digitalWrite(25, LOW); delay(20); if (digitalRead(LS) == HIGH) { //スイッチをオンしたらマスターESPに信号を送信 Serial.println("Switch on"); SerialBT.write('L'); //Serial.write("\n"); delay(20); goto loopout; } } loopout:; delay(50); digitalWrite(33, LOW); for (int i = 0; i < 10000; i++) { digitalWrite(25, HIGH); digitalWrite(25, LOW); delay(20); if (SerialBT.available()) { //受信信号があれば処理する if (SerialBT.read() == 'S') { Serial.println("SS"); digitalWrite(LED_BUILTIN, HIGH); //信号を受信したらLチカさせる delay(100); digitalWrite(LED_BUILTIN, LOW); delay(20); goto loopout2; } } } loopout2:; delay(3000); } void loop(){ …省略… }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/19 03:46