Circadian clock sets its time by observing dusk and dawn. Once it's set, it shouldn't be offset by bad weather. The clock is useful for controlling events in your garden without ever having to set time manually, via NTP or via GPS.
Code and description is available at
http://www.fgh.si/2/.
Usage should be simple.
#include <Circadian.h>
// create a clock on analog pin 0 with dusk threshold 500
Circadian cclock(0, 500);
void setup()
{
}
void loop()
{
// sample the sensor
cclock.sample();
// handle triggers, if any
if(cclock.doTriggers())
{
if(cclock.triggerDawn(CCTIME(0,30,0)))
{
// do something after dawn
}
if(cclock.triggerDusk(CCTIME(0,-30,0)))
{
// do something before dusk
}
if(cclock.trigger(CCTIME(12,5,0)))
{
// do something at 12:05
}
}
delay(1000);
}