Am nevoie pentru un proiect de un ceas de timp real (real time clock). Cel mai accesibil a fost DS 1307+
Schema de conectare la Arduino, realizata cu Fritzing, arata cam asa:
Deocamdata l-am pus pe breadboard, urmeaza sa-l trec pe o placuta de circuit:
#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h>
int rtc[7];
void setup()
{
Serial.begin(9600);
/*
RTC.stop();
RTC.set(DS1307_SEC,1);
RTC.set(DS1307_MIN,05);
RTC.set(DS1307_HR,10);
RTC.set(DS1307_DOW,2);
RTC.set(DS1307_DATE,28);
RTC.set(DS1307_MTH,6);
RTC.set(DS1307_YR,10);
RTC.start();
*/
}
void loop()
{
RTC.get(rtc,true);
Serial.print(rtc[4]);
Serial.print("-");
Serial.print(rtc[5]);
Serial.print("-");
Serial.print(rtc[6]);
Serial.print(" ");
switch(rtc[3]) {
case 1:
Serial.print("Duminica ");
break;
case 2:
Serial.print("Luni ");
break;
case 3:
Serial.print("Marti ");
break;
case 4:
Serial.print("Miercuri ");
break;
case 5:
Serial.print("Joi ");
break;
case 6:
Serial.print("Vineri ");
break;
case 7:
Serial.print("Sambata ");
break;
default:
break;
}
Serial.print(rtc[2]);
Serial.print(":");
Serial.print(rtc[1]);
Serial.print(":");
Serial.print(rtc[0]);
Serial.println();
delay(1000);
}
Pentru setare initiala data si ora se scot comentariile din setup().
Biblioteca DS1307 se gaseste aici si se copiaza, ca de obicei, in folderul libraries al kitului Arduino.
Componentele necesare pot fi gasite, de exemplu, aici:
RTC
Quartz
Suport baterie
Update - 1 iulie 2010 : am facut montajul pe o bucatica de stripboard si nu a mai pierdut nici macar o secunda in 24 de ore ;-) intarzierea era de la faptul ca se misca cristalul...