คือผมอยากทราบครับว่า ถ้าจะต้องการส่งค่าเวลาที่จะทำการเปิด-ปิดอุปกรณ์ โดยให้ DS3231 เป็นตัวเช็คเวลาเปิด-ปิด โดยสามารถเลือกช่วงเวลาได้ประมาณว่า
ส่งค่าจาก web ว่าให้เปิด 8 โมงเช้า และ ปิด 6 โมงเย็น หรือ เปิด 10 โมงเช้า ปิด 2 ทุ่ม จะทำการรับค่ายังไงหรอครับ ตอนนี้ผมทำได้แค่ set เวลาไว้ ให้เปิดแค่ช่วงเวลานึงเท่านั้นครับ
int hr=now.hour();
int mi=now.minute();
int se=now.second();
if((hr==8 && mi==0 && se==0)){
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);//ไฟติด
//delay(10000);// 10 วินาที
}
if((hr==18 && mi==0 && se==0)){
digitalWrite(relay1,LOW);
digitalWrite(relay2,LOW);
//delay(10000);
}
นี้คือ code ที่ผมใช้ set เวลาอยู่ตอนนี้ครับ ขอบคุณครับ
เก็บค่าเวลาเป็นแบบ string ไว้ในตัวแปร Array แล้ววนลูปเช็ค
ผมเขียนตัวอย่างให้ดูคร่าว ๆ ในตัวอย่างนี้สามารถตั้งเวลาเปิด/ปิดได้ 10 ช่วงเวลา
ลองรันและศึกษาดูนะครับ
void setup() {
Serial.begin(9600);
}
void loop() {
String timeOn[10];
String timeOff[10];
timeOn[0] = "10.25.30";
timeOff[0] = "18.0.0";
int hr = 10;
int mi =25;
int se = 30;
String now = String(hr);
now+=".";
now+=String(mi);
now+=".";
now+=String(se);
//Serial.println(now);
for(int i=0;i<10;i++){
String time_on = timeOn[i];
String time_off = timeOff[i];
if(time_on==now){
Serial.println("Time ON");
}
if(time_off==now){
Serial.println("Time OFF");
}
}
delay(1000);
}
สำหรับการบันทึกค่าการตั้งเวลา บันทึกลงใน EEPROM ของ arduino ก็ได้ครับ