attiny85 und rtc ds1307 problem

Hallo zusammen,

komme grad bei einem Projekt nicht weiter.
Habe eine Schaltung aufgebaut, die einen attiny85, ds1307 und eine led enthält.
Die led soll nun ab einem festgelegtem Datum blinken, nur weiß ich nicht, wie ich dies nun in meine if els Schleife einbauen soll:

#include <TinyWireM.h> // I2C Master lib for ATTinys which use USI

#define DS1307_ADDR 0x68 // I2C real time clock

int led = 3;
uint8_t seconds,minutes,hours,day_of_week,days,months,years,PM,hour12,DST; // time components
// initialisation
void setup(){
TinyWireM.begin();
initTime();
pinMode(led, OUTPUT);
}

// main loop
void loop(){
getTime();

if
(datum ab dem die led blinken soll)
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(100);

}
else
{
digitalWrite(led, LOW);
}
delay(1000);

}
// initialise the time
void initTime(){

}

// get the time and date from the DS1307 chip
void getTime(){
// reset DS1307 register pointer
TinyWireM.beginTransmission(DS1307_ADDR);
TinyWireM.send(0);
TinyWireM.endTransmission();

// request 7 bytes from DS1307
TinyWireM.requestFrom(DS1307_ADDR, 7);
seconds = bcdToDec(TinyWireM.receive());
minutes = bcdToDec(TinyWireM.receive());
hours = bcdToDec(TinyWireM.receive());
day_of_week = TinyWireM.receive();
days = bcdToDec(TinyWireM.receive());
months = bcdToDec(TinyWireM.receive());
years = bcdToDec(TinyWireM.receive());
}

// Convert binary coded decimal to normal decimal numbers
uint8_t bcdToDec(uint8_t val) {
return ((val / 16 * 10) + (val % 16));
}

Wäre euch sehr verbunden, wenn jemand weiterhelfen könnte.

Besten Dank

kurzschluss:
Die led soll nun ab einem festgelegtem Datum blinken, nur weiß ich nicht, wie ich dies nun in meine if els Schleife einbauen soll:

Sofern Du nur wissen möchtest, ob ein Kalenderdatum größer oder gleich einem anderen Kalenderdatum ist, ohne dass Dich der genaue Zeit- oder Tagesunterschied interessiert, brauchst Du Dir nur eine Funktion basteln, die für jedes spätere Datum eine größere Zahl zurückliefert und dann kannst Du numerisch vergleichen.

long dateval(int year, byte month, byte day)
{
  return year*372L+month*31+day;
}

---

if (dateval(years, months, days)>dateval(2013,12,15)) ...

Danke soweit.
Habe deinen Vorschlag in mein Code eingebaut, leider will es noch nicht so ganz:

#include <TinyWireM.h> // I2C Master lib for ATTinys which use USI

#define DS1307_ADDR 0x68 // I2C real time clock

int led = 3;
uint8_t seconds,minutes,hours,day_of_week,days,months,years,PM,hour12,DST; // time components

long dateval(int years, byte months, byte days)
{
return years372L+months31+days;
}

// initialisation
void setup(){
TinyWireM.begin();
initTime();
pinMode(led, OUTPUT);

}

// main loop
void loop(){
getTime();

if (dateval(years, months, days)==dateval(2013,12,15))
{

digitalWrite(led, LOW);

}
else
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)

}
delay(1000);

}
// initialise the time
void initTime(){

}

// get the time and date from the DS1307 chip
void getTime(){
// reset DS1307 register pointer
TinyWireM.beginTransmission(DS1307_ADDR);
TinyWireM.send(0);
TinyWireM.endTransmission();

// request 7 bytes from DS1307
TinyWireM.requestFrom(DS1307_ADDR, 7);
seconds = bcdToDec(TinyWireM.receive());
minutes = bcdToDec(TinyWireM.receive());
hours = bcdToDec(TinyWireM.receive());
day_of_week = TinyWireM.receive();
days = bcdToDec(TinyWireM.receive());
months = bcdToDec(TinyWireM.receive());
years = bcdToDec(TinyWireM.receive());
}

// Convert binary coded decimal to normal decimal numbers
uint8_t bcdToDec(uint8_t val) {
return ((val / 16 * 10) + (val % 16));
}

kurzschluss:
leider will es noch nicht so ganz:

13 != 2013

Wenn Du nur mit zweistelligen Jahreszahlen arbeitest, müßtest Du auch mit zweistelligen Jahreszahlen vergleichen.