本帖最後由 liu5123 於 2017-9-5 22:12 編輯
我的電路材料是 兩個UNO 和兩個HC-05的藍芽晶片
原本先用AT配對完 用發送端程式 來讓兩個HC-05來進行溝通是可行
兩邊都可以收發 顯示出來
但當我想把一個當接收端 一個發送端的模式
程式內容是我把它寫成在接收端上的13接腳
接收到發送端的訊號 來亮燈
當我寫好 兩個HC-05都連線了確
但是就沒有動作 沒有反應
因為剛入門 所以不知道該怎麼DEBUG
所以求助各位專家
發送端程式
#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(38400);
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");
}
}
} |