It's been awhile since I've posted anything on the website, but I've been busy with other projects... and the most recent Arduino related project.
This newest project isn't shield, but rather a sketch that is designed to let you upload a single sketch to your arduino, configure the arduino and let it do it's thing.
Introducing macro's for your arduino!
Basically, these are going to be macros that read an input and do something to an output. So far you can take a digital measurement and make a digital pin do something based on that input. ie. if digital pin 2 is low than turn pin 13 high. If pin 2 goes high turn pin 13 off. In addition, you can also do things with analog readings as well. They are a bit more complicated, but the code is almost done (I'll be releasing the alpha when that part is done).
On the analog side of macros you'll be able to take an analog reading and compare it (greater than, less than, or equal to) and do something to a digital pin. (or TLC5940, PCF8574)
I'm not stopping there though. Right now I plan on integrating a RTC, TLC5940, onewire temp sensors, PCF8574 into macro's as well.
So you'd be able to say to your arduino, turn pin 13 on when temp > 78 or when hour == 8 turn pcf8574 pin 2 on.
The best part is that macros are store in the arduino eeprom (1024 bytes in a 328) so you'll be able to store hundreds of them (if you need that many). Pin modes (input/output) are also store in eeprom and changeable via commands (pin states can also be controlled by serial commands)
Implications?
Well, this code is going to be the successor to my aquarium project code. That code requires you to have a certain setup (namely mine) for it to work. With this new code you send some serial strings (for now, but I plan on integrating wifi and ethernet) to the arduino which programs the pins and macros and you've got your own custom setup.
Since the code is going to probably be bigger than 30kb I'm also implementing something interesting. In the beginning of the sketch you uncomment the 'modules' of the code you'll be using. Code is wrapped in #ifdef so if you comment out a module it won't be compiled in... which means lower size with the ability to control your shields. For example, if you want to use ethernet instead of serial you can uncomment #define ETHERNETCONTROL 1 and comment #define SERIALCONTROL 1 and the serial portion of code won't be loaded into the sketch, but ethernet will.
The code allows for different control types to be easily integrated. Basically, you re-implement the serial side of things, but things like pinMode, pinStatus, and macro setup are generic functions. So with ethernet to change pinmode you would get the pin # and mode (0/1) and pass it to setPinMode. It's as easy as that to add in different control options. Of course, wrap them in #ifdef and define a variable to enable/disable that code and you're off.
If you're interested in becoming a tester send me an email. Complete serial control of the arduino itself should be finished in a few days with other shield support coming shortly.
A dedicated project page will be up with the release of alpha code.
Oh, and I need a name for it so suggestions are welcome.