liu5123 發表於 2017-9-9 21:08:10

HC-05轉送資料的問題

本帖最後由 liu5123 於 2017-9-10 03:01 編輯

我剛學會HC-05的通訊
但我現在有一個問題想要像電話一樣 那樣 轉送/轉接
就是說兩個連線中的HC-05一個是主控端
一個是被控端可以由主控端傳資料給被控端來控制LED
這是基本的
現在是想用手機藍芽透過HC-05的主控端傳送資料給被控端

已經想好主控端上面有兩塊HC-05一個有設定AT+ROLE=1主控端的藍芽
另一塊則是沒有設定 透過他來接收手機資料

但是現在問題是!
我要怎麼把從HC-05接收到的手機訊息後 啟動主控端的HC-05
並轉給主控端的HC-05讓她傳送給被控端
傳送完關閉主控端的HC-05
怎麼改變程式比較好

以下是主控端程式

#include <SoftwareSerial.h>   // 引用程式庫

// 定義連接藍牙模組的序列埠
SoftwareSerial BT(8, 9); // 接收腳, 傳送腳
char val;// 儲存接收資料的變數

void setup() {
Serial.begin(9600);   // 與電腦序列埠連線
Serial.println("BT is ready!");

// 藍牙透傳模式的預設連線速率。
BT.begin(9600);
}

void loop() {
// 若收到「序列埠監控視窗」的資料,則送到藍牙模組
if (Serial.available()) {
    val = Serial.read();
    BT.print(val);
}

// 若收到藍牙模組的資料,則送到「序列埠監控視窗」
if (BT.available()) {
    val = BT.read();
    Serial.print(val);
}
}

以下是被控端(接收端)程式

#include <SoftwareSerial.h>   // 引用程式庫

// 定義連接藍牙模組的序列埠
SoftwareSerial BT(8, 9); // 接收腳, 傳送腳
char val;// 儲存接收資料的變數
const byte LED_PIN = 13;// 定義LED腳位

void setup() {
// 設定HC-05藍牙模組,AT命令模式的連線速率。
BT.begin(9600);
pinMode(LED_PIN, OUTPUT);
}

void loop() {
// 若收到藍牙模組的資料,則送到「序列埠監控視窗」
if (BT.available()) {
    val = BT.read();
    if (val == '1') {
      digitalWrite(LED_PIN, HIGH);
      // 回應命令發送端,告知「已開燈」
      BT.println("LED ON");
    } else if (val == '0') {
      digitalWrite(LED_PIN, LOW);
      // 回應命令發送端,告知「已關燈」
      BT.println("LED OFF");
    }
}
}
頁: [1]
查看完整版本: HC-05轉送資料的問題