Robofun 機器人論壇

標題: HC-05轉送資料的問題 [打印本頁]

作者: liu5123    時間: 2017-9-9 21:08
標題: 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");
    }
  }
}




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2