Pages: [1]   Go Down
Author Topic: current date and time  (Read 4601 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

i'm able to interface and lcd and rtc to arduino severino
now i just want to display current date and time on lcd nd save it on rtc
i just don't know how to get the current date and time from pc
Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1411
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Depending on the language you use, you can get the current time by calling a function like CTime::getCurrentTime (C++), or Now (vbscript).

Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

i'm using standard c in the arduino IDE
i tried downloading the datetime library but there is no responce.
so can u please tell me the complete code for date/time, coz i'm bit weak at my programming side  :-[
« Last Edit: April 30, 2009, 05:15:29 am by alokgvc » Logged

London
Offline Offline
Tesla Member
***
Karma: 10
Posts: 6250
Have fun!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

The DateTime library example sketch will only display the time after its internal clock is set. You can test that it is working by setting an arbitrary time - add this line at the end of setup :
    DateTime.sync(1241094085); // set the time to 04/30/2009 @ 7:21am.

« Last Edit: April 30, 2009, 06:23:06 am by mem » Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1411
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

The code you write in Arduino IDE is meant to be uploaded to the Arduino board, so it won't run on your PC. It does not make sense to get the current time from PC when you don't run that code on the PC, does it?
The time synchronization between your PC and Arduino should happen as a result of a program running on PC (which gets the current time) sending (on serial port) the current time to the sketch running on Arduino.
Isn't this what you want to do?

Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sir, that's precisely what i want to do, synchronise time between PC and Arduino
i know how to enter time in rtc, and do stuff with it
but for now, entering current date everytime calls for changing values, which i want to skip
Logged

London
Offline Offline
Tesla Member
***
Karma: 10
Posts: 6250
Have fun!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

> entering current date everytime calls for changing values, which i want to skip

I don't understand what you are saying. Did you try the example Processing sketch that gets the time from the PC and sends a message to arduino that sets the clock to that time?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok sire here is my exact problem
i'm using arduino severino and interfaced rtc PCF8563 to it.
i've not attached a battery to it which means the time is reset every time there is power failure. so i have to manully write new values in code corresponding to current time to set the time of rtc to current time.

i tried the code of datetime library of arduino but neither was there any display/serial output nor was the led blinking.

so i just want a piece of code(as i'm not perfect at programming) for my arduino that sets the rtc time to current time and saves me from manually editing the value.

the code i wrote is available at open-embedded.blogspot.com
Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1411
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

The question still remains: where do you want to get the time from? From the PC (thus connecting the arduino to the PC), from the user inputting (via buttons, IR etc) some numbers?
Logged

London
Offline Offline
Tesla Member
***
Karma: 10
Posts: 6250
Have fun!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

florinc's question is valid, but if you want to set the time using the example Processing sketch posted in the playground, you can use this arduino code to get the time component you would need to set a RTC.

Code:
#include <DateTime.h>

#define TIME_MSG_LEN  11   // time sync to PC is HEADER followed by unix time_t as ten ascii digits
#define TIME_HEADER  255   // Header tag for serial time sync message

void setup(){
  Serial.begin(19200);
}

void  loop(){
  getPCtime(); // try to get time from the PC
  delay(100);
}

boolean getPCtime() {
  // if time sync available from serial port, update time and return true
  while(Serial.available() >=  TIME_MSG_LEN ){  // time message consists of a header and ten ascii digits
    if( Serial.read() == TIME_HEADER ) {        
      time_t pctime = 0;
      for(int i=0; i < TIME_MSG_LEN -1; i++){  
        char c= Serial.read();          
        if( c >= '0' && c <= '9'){  
          pctime = (10 * pctime) + (c - '0') ; // convert digits to a number    
        }
      }  
      setTime(pctime);   // Sync Arduino clock to the time received on the serial port
      return true;   // return true if time message received on the serial port
    }  
  }
  return false;  //if no message return false
}

void setTime( time_t time)
{
  byte Second,Minute,Hour,Day,DayofWeek,Month, Year; // note year is actual year minus 2000 (ie 9 is 2009)
  DateTime.localTime(&time,&Second,&Minute,&Hour,&Day,&DayofWeek,&Month,&Year)  ;
  // do something with the values to set the RTC here;
   Serial.println(Hour,DEC);  
   Serial.println(Minute,DEC);
   Serial.println(Second,DEC);
   Serial.println();  
}
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok sir that point missed out of my mind about input. i'm taking the input from a pc using arduino interface. and as there is no usb interface the baud rate for serial communication between pc and arduino is 9600

thanks sir for the code, but i'm stuck at a small point
the pcf8563 have a predefined input format which cannot be altered(atleast not by me till now). i'm writing down the code for the storing values to rtc
Wire.begin();
  Wire.beginTransmission(B1010001);
  Wire.send(0x00);
  Wire.send(0x00);  // 00H      Test mode
  Wire.send(0x00);  // 01H      Alarm mode
  Wire.send(0x00);  // 02H      Seconds
  Wire.send(0x00);  // 03H      Minutes
  Wire.send(0x00);  // 04H      Hours
  Wire.send(0x1b);  // 05H      Date
  Wire.send(0x01);  // 06H      Day of the week
  Wire.send(0x04);  // 07H      Century bit 19XX = 1 | 20XX = 0
  Wire.send(0x09);  // 08H      year
  Wire.send(0x80);  // 09H      Minute alarm
  Wire.send(0x80);  // 0AH      Hour alarm
  Wire.send(0x80);  // 0BH      Day alarm
  Wire.send(0x80);  // 0CH      Weekday alarm
  Wire.send(0x00);  // 0DH      CLKOUT control (00: 32.768Khz 11: 1Hz)
  Wire.send(0x00);  // 0EH      Timer control
  Wire.send(0x80);  // 0FH      Timer
   Wire.endTransmission();

the input values of sec, min hour, date is in BCD format.
so sir can you please give me a code for this
mean while i'll be trying to modify your code.
thanks sir.
Logged

London
Offline Offline
Tesla Member
***
Karma: 10
Posts: 6250
Have fun!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

You can find some code to convert to and from bcd on this page: http://www.glacialwanderer.com/hobbyrobotics/?p=12
Logged

Pages: [1]   Go Up
Jump to: