本帖最後由 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"); 
    } 
  } 
} |