ความรู้แน่น ฟรีสำหรับชุมชน ArduinoAll ที่นี่เท่านั้น

ฟรีและดีที่สุด คอร์สอบรม Arduino + NodeMCU
ทำเพื่อแบ่งปัน ห้ามนำไปจำหน่าย หรือเก็บเงินค่าเรียน
  !!!


  


AllNewStep รับประกันคุณภาพทุกชิ้น วันจันทร์-ศุกร์แจ้งชำระสินค้าก่อน 14.00 จัดส่งทันทีวันนี้ค่ะ

กรุงเทพ /ภาคกลาง ได้พรุ่งนี้


*** สินค้าทุกชิ้น ถ้าสามารถทำรายการสั่งซื้อได้ แสดงว่ามีครบทุกรายการค่ะ *** 

พิมพ์ค้นหาบทความ หัวข้อกระทู้ และสินค้าในเว็บ AllNewStep ได้ที่นี่
QUOTE 

Settime Real Time Clock Module DS1307

Heart Kittisak

ผมได้อัปโหลดโค๊ดดังนี้

#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;
}

เพื่อตั้งเวลาสำหรับบันทึกข้อมูลลง SD Card แต่ไม่สำเร็จและมีข้อความแสดงขึ้นดังนี้

Arduino: 1.8.12 (Windows 10), Board: "Arduino Uno"

In file included from C:\Users\Y520\AppData\Local\Temp\arduino_modified_sketch_299543\SetTime.ino:1:0:

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared

static bool read(tmElements_t &tm);

^~~~~~~~~~~~

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared

static bool write(tmElements_t &tm);

^~~~~~~~~~~~

C:\Users\Y520\AppData\Local\Temp\arduino_modified_sketch_299543\SetTime.ino: In function 'void setup()':

SetTime:20:21: error: no matching function for call to 'DS1307RTC::write(tmElements_t&)'

if (RTC.write(tm)) {

^

In file included from C:\Users\Y520\AppData\Local\Temp\arduino_modified_sketch_299543\SetTime.ino:1:0:

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:17: note: candidate: static bool DS1307RTC::write(int&)

static bool write(tmElements_t &tm);

^~~~~

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:17: note: no known conversion for argument 1 from 'tmElements_t' to 'int&'

exit status 1
no matching function for call to 'DS1307RTC::write(tmElements_t&)'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

ผมต้องแก้ไขตรงไหนครับ

QUOTE 
ความคิดเห็นที่ #1
เจ้าของร้าน

ในนี้แจ้งว่าไม่มีไฟล์ไลบารี ลองเช็คไลบารีหรือใช้ไลบารีตัวใหม่ครับ

QUOTE 
ความคิดเห็นที่ #2
Heart Kittisak
ผมลองใช้ไลบารี่ตัวใหม่แล้ว มันขึ้นแบบนี้ครับ

Arduino: 1.8.16 (Windows Store 1.8.51.0) (Windows 10), Board: "Arduino Uno"

In file included from C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:26:0:

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared

static bool read(tmElements_t &tm);

^~~~~~~~~~~~

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.h:20:23: error: 'tmElements_t' has not been declared

static bool write(tmElements_t &tm);

^~~~~~~~~~~~

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp: In static member function 'static time_t DS1307RTC::get()':

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:38:3: error: 'tmElements_t' was not declared in this scope

tmElements_t tm;

^~~~~~~~~~~~

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:39:14: error: expected primary-expression before ')' token

if (read(tm) == false) return 0;

^

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:40:21: error: expected primary-expression before ')' token

return(makeTime(tm));

^

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:40:10: error: 'makeTime' was not declared in this scope

return(makeTime(tm));

^~~~~~~~

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:40:10: note: suggested alternative: 'mktime'

return(makeTime(tm));

^~~~~~~~

mktime

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp: In static member function 'static bool DS1307RTC::set(time_t)':

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:45:3: error: 'tmElements_t' was not declared in this scope

tmElements_t tm;

^~~~~~~~~~~~

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:46:18: error: expected primary-expression before ')' token

breakTime(t, tm);

^

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:46:3: error: 'breakTime' was not declared in this scope

breakTime(t, tm);

^~~~~~~~~

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:47:5: error: expected unqualified-id before '.' token

tm.Second |= 0x80; // stop the clock

^

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:48:11: error: expected primary-expression before ')' token

write(tm);

^

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:49:5: error: expected unqualified-id before '.' token

tm.Second &= 0x7f; // start the clock

^

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:50:11: error: expected primary-expression before ')' token

write(tm);

^

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp: At global scope:

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:54:22: error: 'bool DS1307RTC::read' is not a static data member of 'class DS1307RTC'

bool DS1307RTC::read(tmElements_t &tm)

^~~~~~~~~~~~

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:54:22: error: 'tmElements_t' was not declared in this scope

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:54:38: error: expected primary-expression before ')' token

bool DS1307RTC::read(tmElements_t &tm)

^

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:95:23: error: 'bool DS1307RTC::write' is not a static data member of 'class DS1307RTC'

bool DS1307RTC::write(tmElements_t &tm)

^~~~~~~~~~~~

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:95:23: error: 'tmElements_t' was not declared in this scope

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.cpp:95:39: error: expected primary-expression before ')' token

bool DS1307RTC::write(tmElements_t &tm)

^

Multiple libraries were found for "DS1307RTC.h"

Used: C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC

Not used: C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC-1.4.1

exit status 1

Error compiling for board Arduino Uno.



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
QUOTE 
ความคิดเห็นที่ #3
เจ้าของร้าน

C:\Users\Y520\Documents\Arduino\libraries\DS1307RTC\DS1307RTC.h:19:22: error: 'tmElements_t' has not been declared

static bool read(tmElements_t &tm);

ในนี้แจ้งว่าไลบารีไม่ถูกต้องครับ

QUOTE 
ความคิดเห็นที่ #4
Heart Kittisak
พอมีไฟล์ไลบารีของ DS1307RTC ไหมครับ
QUOTE 
ความคิดเห็นที่ #5
เจ้าของร้าน

ตัวอย่างดังนี้ครับ https://www.allnewstep.com/p/3661

แสดงความคิดเห็นที่ 1-5 จากทั้งหมด 5 ความคิดเห็น
ขาย ARDUINO
คุณภาพ อันดับ 1

ได้รับรางวัลร้านยอดเยี่ยม
ตั้งแต่ปี 2558
ขาย Arduino
วีดีโอสอน Arduino

สอน esp8266

สอน Arduino IoT
สอน Arduino แบบเร็ว

สอน NodeMCU

อุปกรณ์ Arduino

MEMBER ZONE

พูดคุย-สอบถาม