Hi There,
I'm unable to get any RTC examples to work, and suspect it is a library problem. I would be grateful for any advice or helps leading to the successful uploading and operation of the RTC examples. Here are some clues:
I've had success in other given examples, uploading and operational, such as Blink and LiquidCrystal, and others. This means many of the settings and basic function seems to work OK.
The first try did not work with more errors than I can paste here, but after a couple Saturdays worth of investigation, I figured the library was in the wrong folder. Using the Guess n Check method of troubleshooting, I reduced the number of errors to less than a page by copy n paste several libraries in various folders.
Here is the error list I get now ( except for a little privacy):
TimeRTC.cpp.o: In function digitalClockDisplay()': C:\Users\ <myUserName>\AppData\Local\Temp\build4065146874160206963.tmp/TimeRTC.cpp:33: undefined reference to hour()'
C:\Users<myUserName>\AppData\Local\Temp\build4065146874160206963.tmp/TimeRTC.cpp:34: undefined reference to minute()' C:\Users\<myUserName>\AppData\Local\Temp\build4065146874160206963.tmp/TimeRTC.cpp:35: undefined reference to second()'
C:\Users<myUserName>\AppData\Local\Temp\build4065146874160206963.tmp/TimeRTC.cpp:37: undefined reference to day()' C:\Users\<myUserName>\AppData\Local\Temp\build4065146874160206963.tmp/TimeRTC.cpp:39: undefined reference to month()'
C:\Users<myUserName>\AppData\Local\Temp\build4065146874160206963.tmp/TimeRTC.cpp:41: undefined reference to year()' TimeRTC.cpp.o: In function setup':
C:\Users<myUserName>\AppData\Local\Temp\build4065146874160206963.tmp/TimeRTC.cpp:18: undefined reference to setSyncProvider(unsigned long (*)())' C:\Users\<myUserName>\AppData\Local\Temp\build4065146874160206963.tmp/TimeRTC.cpp:19: undefined reference to timeStatus()'
Time\DS1307RTC.cpp.o: In function DS1307RTC::get()': C:\Program Files\Arduino\arduino-1.0-windows\arduino-1.0\libraries\Time/DS1307RTC.cpp:40: undefined reference to makeTime(tmElements_t&)'
If I could learn to upload the current time to the RTC unit somehow, AND send some RTC example sketches to the Arduino Uno, then I would call it a successful day.
Sorry, I misunderstood. The problem I'm having seems to be in the environment, and not so much related to the project, as I haven't even got to the "project" phase, so "Installation and Troubleshooting" was my best guess as to where ask for help.
If this question is best for another area, which would it best fit under, and how would I move it there, please?
Third party library files must be stored is a specific manner in a specific folder in a specific location to be able to be picked up by the arduino IDE when it compiles the sketch. As an example, here is where my RTC library files are located in my windows XP system:
C:\Documents and Settings\Primary Windows User\My Documents\Arduino\libraries\DS1307
Thanks, I think you are confirming the information I am missing: Which library goes in which folder? From the error text (the stuff I pasted onto the question above) I think the Arduino IDE is looking in an entirely different location than where all the other Arduino program, other libraries (that came with the original Arduino package), are located. So I need to either 1. find out where Arduino IDE is looking (and move the library there), or 2. re-direct the Arduino IDE to look in the right place. I don't know how to do either. Am I reading your solution correctly?
PaulS,
Here is the unmodified code from the TimeRTC Example.
/*
* TimeRTC.pde
* example code illustrating Time library with Real Time Clock.
*
*/
#include <Time.h>
#include <Wire.h>
#include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t
void setup() {
Serial.begin(9600);
setSyncProvider(RTC.get); // the function to get the time from the RTC
if(timeStatus()!= timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
}
void loop()
{
digitalClockDisplay();
delay(1000);
}
void digitalClockDisplay(){
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(int digits){
// utility function for digital clock display: prints preceding colon and leading 0
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
glidewell:
PaulS,
Here is the unmodified code from the TimeRTC Example.
/*
TimeRTC.pde
example code illustrating Time library with Real Time Clock.
*/
#include <Time.h> #include <Wire.h> #include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t
void setup() {
Serial.begin(9600);
setSyncProvider(RTC.get); // the function to get the time from the RTC
if(timeStatus()!= timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
}
void digitalClockDisplay(){
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(int digits){
// utility function for digital clock display: prints preceding colon and leading 0
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
So in the same folder where your sketches are stored you need to create a folder named libraries. Inside that folder you must create a folder named DS1307RTC. Inside that folder must be the DS1307RTC.h file along with the other files that comprise of the library.
(I Named the Time example "9. Time" to be in sequence of the included examples)
Within this folder (. . . \libraries) is a file called DS1307RTC.h, and others.
Notice the difference in where the Arduino program is declaring the missing information from and where the Arduino IDE program is; very different parts of the hard-drive tree:
C:\Users\ \AppData\Local\Temp\build4065146874160206963.tmp/TimeRTC.cpp
vs.
C:\Program Files\Arduino\arduino-1.0-windows\arduino-1.0\examples\9.Time\TimeRTC\libraries\DS1307RTC
Is that a clue? I do not know how to get the Arduino to stay within it's given folder boundaries.
Humm, OK. So apparently I need to create another file where the Arduino is expecting it to be. That is not clear to me where it is looking, unless I fumble around in the area where the error text is indicating (seems odd to me). Neither the sketch or libraries are in the area of the path the error describes:
That location is a temporary folder where the compiler attempts to build your sketch.
In the IDE, open a sketch that you have written and saved. Then click Sketch->Show Sketch Folder. That should open your sketch book folder. You need to create, if it doesn't already exist, a libraries folder there. Downloaded libraries should be placed in that folder.
Shall I create a "libraries" folder in "\temp" (and drop the needed libaries in there)?
Or something else?
No, no, and yes.
In the same folder where your sketches are stored, create a folder called libraries, if one does not exist. Move the folder from where it is now to the sketch folder's libraries folder.
"In the same folder where your sketches are stored, create a folder called libraries, if one does not exist. Move the folder from where it is now to the sketch folder's libraries folder."
PaulS, I did this already. There is a folder called "libraries" in the "TimeRTC" sketch folder. To be sure, I saved "TimeRTC" as "TimeRTC2" in a new sketch folder, created a new libraries folder under "TimeRTC2", dropped the libraries into it, and tried again. Same error list.
dxw00d, Thank you for the explanation of the other folder string. Now I know not to go there in my "guess n check" methodology.
I'm starting to get libraries scattered all over. Is it a problem to have too many libraries in a folder? Should I wipe Arduino off the map, and start over?
Grumpy Mike,
Added all the libraries to the next level up, in a folder called "libraries". Still no happiness, and sorta think I might be looking at a name change: Grumpy_Glidewell.
Not much sand left in the top of today's hour glass, friends. I might have to pick this one up tomorrow. Many thanks for your efforts!