#include
#include
#include
const char *monthName[12] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
tmElements_t tm;
void setup() {
bool parse=false;
bool config=false;
// get the date and time the compiler was run
if (getDate(__DATE__) && getTime(__TIME__)) {
parse = true;
// and configure the RTC with this info
if (RTC.write(tm)) {
config = true;
}
}
Serial.begin(9600);
while (!Serial) ; // wait for Arduino Serial Monitor
delay(200);
if (parse && config) {
Serial.print("DS1307 configured Time=");
Serial.print(__TIME__);
Serial.print(", Date=");
Serial.println(__DATE__);
} else if (parse) {
Serial.println("DS1307 Communication Error :-{");
Serial.println("Please check your circuitry");
} else {
Serial.print("Could not parse info from the compiler, Time="");
Serial.print(__TIME__);
Serial.print("", Date="");
Serial.print(__DATE__);
Serial.println(""");
}
}
void loop() {
}
bool getTime(const char *str)
{
int Hour, Min, Sec;
if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
tm.Hour = Hour;
tm.Minute = Min;
tm.Second = Sec;
return true;
}
bool getDate(const char *str)
{
char Month[12];
int Day, Year;
uint8_t monthIndex;
if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false;
for (monthIndex = 0; monthIndex < 12; monthIndex++) {
if (strcmp(Month, monthName[monthIndex]) == 0) break;
}
if (monthIndex >= 12) return false;
tm.Day = Day;
tm.Month = monthIndex + 1;
tm.Year = CalendarYrToTm(Year);
return true;
}
#include
#include
#include
ถ่าน const * MonthName [12] = {
"แจ", "กุมภาพันธ์", "มาร์", "เมษายน", "พฤษภาคม", "มิถุนายน"
"กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", " พฤศจิกายน "," ธันวาคม "
}; tmElements_t TM; การติดตั้งเป็นโมฆะ () { บูลแจง = false; การตั้งค่าบูล = false; // ได้รับวันที่และเวลาคอมไพเลอร์วิ่งถ้า (GETDATE (__ DATE__) && getTime (__ TIME__)) { แยก = true; // และกำหนดค่า RTC ด้วยข้อมูลนี้ถ้า (RTC.write (TM)) { การตั้งค่า = true; } } Serial.begin (9600); (! อนุกรม) ในขณะที่; // รอการตรวจสอบ Arduino อนุกรมล่าช้า (200); if (แยกการตั้งค่า &&) { Serial.print ("DS1307 กำหนดค่าเวลา ="); Serial.print (__ TIME__); Serial.print ("วัน ="); อนุกรม .println (__ DATE__); } else if (แจง) { Serial.println ("DS1307 การสื่อสารผิดพลาด: - {"); Serial.println ("กรุณาตรวจสอบวงจรของคุณ"); } else { Serial.print ("ไม่สามารถแยก ข้อมูลจากคอมไพเลอร์, เวลา = ""); Serial.print (__ TIME__); Serial.print ("" วัน = ""); Serial.print (__ DATE__); Serial.println ("" ") ; } } ห่วงเป็นโมฆะ () { } บูล getTime (ถ่าน const * STR) { int ชั่วโมง, นาที, วินาที; if (sscanf (STR, "% d:% d:% d", & ชั่วโมงและนาทีและวินาที) = 3) กลับเท็จ; tm.Hour = ชั่วโมง; tm.Minute Min =; = tm.Second วินาที; กลับจริง; } บูล GETDATE (const char * STR) { ถ่านเดือน [12]; int วันปี; uint8_t monthIndex; ถ้า (sscanf (STR, "% s% d% d" เดือนและวันและปี) = 3!) กลับเท็จ; สำหรับ (monthIndex = 0; monthIndex <12; monthIndex ++) { if (strcmp (เดือน MonthName [monthIndex ]) == 0) แบ่ง; } ถ้า (monthIndex> = 12) กลับเท็จ; tm.Day = วัน; tm.Month = monthIndex + 1; tm.Year = CalendarYrToTm (ปี); กลับจริง; }
การแปล กรุณารอสักครู่..

#รวมถึง < สาย H >
< #รวมเวลา H >
< ds1307rtc #รวม H >
Const char * มะเร็งตับ [ 12 ] = {
" มกราคม " , " กุมภาพันธ์ " , " มีนาคม " , " เมษายน " , " อาจจะ " , " มิถุนายน "
" ก.ค. " " ส.ค. " , " กันยายน " , " ตุลาคม " , " พฤศจิกายน " , " ธันวาคม "
} ;
tmelements_t TM ;
เป็นโมฆะ setup() {
บูลแยก = false ;
บูล config = false ;
/ / รับวันที่และเวลา คอมไพเลอร์ใช้
ถ้า ( getdate ( __date__ ) && gettime ( __time__ ) ) {
แยก = true ;/ / และปรับค่า RTC กับข้อมูล
นี้ถ้า ( RTC . เขียน ( TM ) ) {
} config = true ;
}
แบบต่อเนื่อง เริ่ม ( 9600 ) ;
ในขณะที่ ! อนุกรม ) ; / / รอ Arduino อนุกรมตรวจสอบ
ล่าช้า ( 200 ) ;
( ถ้าแยก&& config ) {
ต่อเนื่อง พิมพ์ ( " ds1307 กําหนดเวลา = " ) ;
ต่อเนื่อง พิมพ์ ( __time__ ) ;
ต่อเนื่อง พิมพ์ ( " วันที่ = " ) ;
println ( __date__ ) ต่อเนื่อง ;
} {
คนอื่นถ้า ( แยก ) ต่อเนื่อง println ( " ds1307 การสื่อสารผิดพลาด : - { ;
" )ต่อเนื่อง println ( " กรุณาตรวจสอบวงจร " ) ; } อื่น {
ต่อเนื่อง พิมพ์ ( " ไม่สามารถแยกข้อมูลจากคอมไพเลอร์ , เวลา = " ) ;
ต่อเนื่อง พิมพ์ ( __time__ ) ;
ต่อเนื่อง พิมพ์ ( " n " , วันที่ = " ) ;
อนุกรม พิมพ์ ( __date__ ) ;
ต่อเนื่อง println ( " " ) ; } }
} { โมฆะ loop() บูล gettime ( Const char * STR )
{
1 ชั่วโมง , นาที , วินาที ;
ถ้า ( sscanf ( STR , " % d : D : D " &ชั่วโมง &มิน &วินาที ) = 3 ) กลับเท็จ ;
TM . ชั่วโมง = ชั่วโมง ;
TM .นาที = มิน ;
TM . วินาทีที่สอง = ;
กลับจริง ;
}
บูล getdate ( Const char * STR )
{
char เดือน [ 12 ] ;
วันที่ , ปี uint8_t monthindex int ;
;
ถ้า ( sscanf ( STR , " %s %d %d " , เดือน && , วัน , ปี ) กลับเท็จ ;
3 ) = ( monthindex = 0 ; monthindex < 12 ; monthindex ) {
ถ้า ( strcmp ( เดือน มะเร็งตับ [ monthindex ] ) = = 0 )
ถ้าแบ่ง ; } ( monthindex > = 12 ) กลับเท็จ ;
TM . วัน = วันและเดือน = monthindex ;
. 1 ;
TM ปี = calendaryrtotm ( ปี ) ;
}
ผลตอบแทนจริง
การแปล กรุณารอสักครู่..
