My Father loves clocks and anything that reports the temperature (and other weather related info). So for Xmas I built this little piece to add to his collection.

It uses a DS1307 with backup battery to track time, and a LM35 for recording the temperature. The LCD displays time, date, current temperature and min and max recorded temperatures (which are backed up in EEPROM). The button at the bottom of the board is used to reset the min/max values. Also I included a serial connection so the sketch can be updated, and also a little serial protocol so the time can be adjusted if required. I used an iPod power supply for nice clean 5V supply - which I modded to use a 2-pin connector to attach to the board.

I also added a bunch of canned messages for specific dates, Xmas, NY, birthdays etc.

Finally presented it to him along with a laminated version of the schematic I created. He loved it!

Next version I'm thinking more weather info (humidity and baro pressure probably), and using nixies for the display instead of boring old LCD.

I made myself a clock using two LED matrices hidden in photo frames though only one's working here:

The first frame is time, the second alternates between day of week/month and date/temperature. I've been planning to update it (making a PCB for it rather than a full arduino and have buttons to change the time as currently it's set in a separate sketch that I upload to it, then reload the clock sketch). I'll add an eeprom for logging the temp now

I've just remembered, it can tick as well. I put a relay in it which flips every second. There's a switch to turn it off though, it's a bit annoying.

You know there's EEPROM onboard the 168/328 chips right? That's what I used as I'm not logging historical data, just a few bytes for the min and max values.

Quote

I've just remembered, it can tick as well. I put a relay in it which flips every second. There's a switch to turn it off though, it's a bit annoying.

Oh I loove that!! I'll add a relay to my nixie version - on the hour I'm planning the flip through all the digits to avoid cathode poisoning, and if I whack the relay at the same time it'll feel like the flight boards at the airports flipping over! :-)

The back on my unit above is visible through perspex as well - I tried to be nice and neat with the point to point soldering. Will post a pic of that plus my schematic later (it's at home).

// DS1307 sends a 1Hz pulse - we use this to update the display attachInterrupt( INT_0, pulseISR, FALLING );

Serial.begin( 9600 );

// read the stored min and max // values will be 255 if never written before // if max has never been recorded set it super low // to force an update first time we measure minTemp = EEPROM.read( MIN_TEMP_ADDRESS ); maxTemp = EEPROM.read( MAX_TEMP_ADDRESS ); if ( maxTemp == 255 ) maxTemp = -255;

//// A press on the rest button over a set duration indicates// we need to clear the current stored min and max temperatures//void CheckForResetMinMax(){ // Handle resetting the min and max temp values if ( digitalRead( RESET_MINMAX_PIN ) == LOW ) { long press = millis();