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