Go Down

Topic: New library - WAKEUP (Read 951 times) previous topic - next topic

Hi

I'm in the process of developing a home automation project that is as event-driven as possible.  So interrupt-handling wins out over polling, testing millis() regularly is equivalent to polling, and delay() is definitely not a preferred approach.

However, many devices need time to stabilise between initiating a read and the value being available.  The Dallas temperature sensors are the obvious example, but I'm sure there are others.

So what I needed was a way to initiate a read and then return a certain time later to capture the value.
The result is a library I've called WAKEUP that allows multiple 'sleeper' functions to be woken after a specified interval, allowing the main program to get on with other things in the meantime.  This enables   a crude form of co-operative processing or 'protothreading'.   

I'm a newbie when it comes to libraries and have doubtless made some elementary mistakes, although I have tested it pretty thoroughly (on a Mega).  However, I'd appreciate some more experienced eyes on the code.  After several false starts I've managed to create a project on google, so you can find the code here:

http://code.google.com/p/arduino-ha/

Haven't managed to master the creation of a nicely structured download (sorry!), but if you go to source > browse and download everything under trunk > libs that should get you started.  It includes a modified version of Timer1, already discussed with Lex at http://code.google.com/p/arduino-timerone/ and the following examples:

- Multi_timer - series of examples making use of the library
- Dallas_temperature - an example showing how to return to pick up reading 750ms after initiating it
- Calibration - done as an exercise to figure out the right value to compensate for code lag

All comments appreciated.  Many thanks in advance

- Andrew


Go Up