[ݳXȲέp


arduino 藍芽程式碼問題~

非8051系列的單晶片軟硬體請在此區討論(CPU介面周邊,或MICRO CHIP等....)

版主: charlesliao

arduino 藍芽程式碼問題~

文章mncu6247 發表於 週四 12月 28, 2017 5:07 pm

#include <SoftwareSerial.h>

// 定義連接藍牙模組的序列埠
SoftwareSerial BT(11, 12); // HC-06/TX-->PIN11(Arduino/RX), HC-06/RX-->PIN12(Arduino/TX);
char val; // 儲存接收資料的變數
#include <Time.h>
#include <DS1302.h>
String dw = "";
String hh = "";
String mm = "";
String ss = "";
//預設12:30:10 再宣告一組手動設定的時間變數,就是讓使用者定時設定的功能
int hand_h_time = 12;
int hand_m_time = 30;
int hand_s_time = 10;//第一組時間
int hand2_h_time = 12;
int hand2_m_time = 30;
int hand2_s_time = 25;//第二組時間
int hand3_h_time = 12;
int hand3_m_time = 30;
int hand3_s_time = 40;//第三組時間
int relay1=7; //腳位7 繼電器1
int relay2=6; //腳位7 繼電器2
int relay3=5; //腳位7 繼電器3
// 初始化DS1302
// DS1302 rtc([RST], [DAT], [CLOCK]); 三個pin的接法
DS1302 rtc(10, 9, 8);

void setup() {
Serial.begin(9600); // 與電腦序列埠連線
// 設定藍牙模組的連線速率
// 如果是HC-05,請改成38400
BT.begin(38400);
pinMode(relay1,OUTPUT); //設定繼電器1 為輸出
pinMode(relay2,OUTPUT); //設定繼電器2為輸出
pinMode(relay3,OUTPUT); //設定繼電器3 為輸出
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
// 設定時鐘為正常執行模式
rtc.halt(false);
//取消寫入保護,設定日期時要這行
//rtc.writeProtect(false);
// 設定Serial
Serial.begin(9600);
// 以下是設定時間的方法,在電池用完之前,只要設定一次就行了
rtc.setTime(12,30,0);
}


void loop() {
// 若收到「序列埠監控視窗」的資料,則送到藍牙模組
if (Serial.available()) {
val = Serial.read();
BT.print(val);
}
// 若收到藍牙模組的資料,則送到「序列埠監控視窗」
String recv="";
while (BT.available()) {
delay(1);
val = BT.read();
recv += val;
}
if (recv != "")
Serial.println(recv);
if (recv.length() > 0) {
//收到字串後的處理區域
recv = "";
}
dw = rtc.getTimeStr();
Serial.println(dw);
hh = dw.substring(0,2); // 時數
mm = dw.substring(3,5); // 分鐘數
ss = dw.substring(6,8); // 秒數
int hhh = atoi(hh.c_str());
int mmm = atoi(mm.c_str());
int sss = atoi(ss.c_str());
Serial.println(hhh);
Serial.println(mmm);
Serial.println(sss);
delay(50);
if (recv="hand_h_time = hhh && hand_m_time == mmm && hand_s_time == sss")
{digitalWrite(relay1, LOW);
}
delay(50);
if (recv="hand2_h_time = hhh && hand2_m_time == mmm && hand2_s_time == sss")
{digitalWrite(relay2, LOW);
}
delay(50);
if (recv="hand3_h_time = hhh && hand3_m_time == mmm && hand3_s_time == sss")
{digitalWrite(relay3, LOW);
}
}

這是我做定時插座的程式碼 現在要加入藍芽 要可以用手機定時時間程式碼這段
int hand_h_time = 12;
int hand_m_time = 30;
int hand_s_time = 10;//第一組時間
int hand2_h_time = 12;
int hand2_m_time = 30;
int hand2_s_time = 25;//第二組時間
int hand3_h_time = 12;
int hand3_m_time = 30;
int hand3_s_time = 40;//第三組時間
不能寫死 有人會改這總嗎
mncu6247
 
文章: 1
註冊時間: 週三 12月 27, 2017 9:59 pm

回到 其他類單晶片--相關的軟硬體討論區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 3 位訪客