Go Down

Topic: Math calculations involving time - Code for count down timer (Read 376 times)previous topic - next topic

Doug101

I'm working on my home automation code and wonder what the best way to do calculations involving date/time.

One of my HA is to press a button which turns on my garden path lights for 5 minutes and then turns them off.

At first I thought of taking the current time adding 5 minutes, then testing to see when 5 minutes have past and turn them off.  But then I realized if I turn the lights on after 55 minutes past the hour I would have to do hour math.  And if it' just before midnight day hour math.

Easiest solution would be if Arduino have a command to convert year, month, day, hour minutes to an integer.  Then I could just do integer math.

Anyone know if such a command exists?  And what it is?  Or is there a better way?

Thanks

rw950431

Most people just use millis()

Some psuedocode below (this wont actually compile..)

Code: [Select]
`unsigned long int button_on_timevoid loop {  if (button_pressed) {     button_on_time=millis();     digitalwrite(garden_lights,HIGH);  }  if (millis() > button_on_time+5*60*1000) {     digitalwrite(garden_lights,LOW)  }}`

Doug101

Someone else suggested   unsigned long variables with the calculation of     currentTime - startTime >= timeOnInterval

This would work for longer periods of time and eliminate the problems of minutes wrapping if the button is pressed at the end of the hour.

Go Up