Help needed with time delay.

I am trying to use an arduino duemilanove in a little project for my local kayak club. I plan to use it to record water levels on some remote rivers in our area.

I have a 26PCBFA6D pressure differential sensor to give the arduino a water depth reading and a Wavecom Q2406 wireless cpu modem to upload the data my webserver. All devices are powered by a 12v lead acid battery with a 12v solar panel and regulator charing it. The modem and sensor are only switched on when needed through a relay connect to the arduino.

My plan is to do a pressure reading and upload every 1/2 hour. I have written the code for the sensor and modem already and it is all working well.
My problem is that at the end of my loop I simple have a 18000000 delay to wait for the next reading. I assume this is not the best way of doing this. Plus it is not ideal to use so much power during the night when the battery is not being charged.

Does anyone have any advice that I could try??

Sorry for the long post

Stuart

Have a look at this:
http://www.arduino.cc/playground/Learning/ArduinoSleepCode

Problem is, you'll need an external source of interrupts to wake the processor, and it is assumed that this source consumes less current than the processor.
Have a look at some of the real-time clocks (RTC).

There are other approaches, like using the watch-dog timer (WDT) as a source of interrupts rather than resets, and then breaking down your long delay into 8 second chunks, though it was pointed out here:http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1263247150/0 that the timeout may be affected by external factors.

Different modes use different amounts of current, and have different wake-up requirements. Some keep internal timers runnings, so you can use overflow interrupts to wake the processor.

This may help...
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1243213127/all

Thanks guys,

I will give these a go.

Stuart