As one does while in bed at 3am and unable to sleep, I was thinking of the Strobit Triggr (which is probably why I couldn’t get to sleep in the first place) an idea presented itself for Arduino type shields (in particular Strobit Triggr personality boards) where they could be given some real personality.
Currently Arduino shields provide the hardware interface to the world for the base Arduino board. On the Arduino resides the code that provide the functionality i.e the personality, in the form of a sketch. The sketch and the shield have a one to one mapping, i.e. a sketch for one shield will not work with another shield type and visa-a-versa. So whenever a shield is changed, the base Arduino boards needs re-programming with a new sketch to give it it’s personality from the host PC/MAC this provides the new functionality associated with the shield.
The idea is for the shields to have onboard flash memory that contains the actual Arduino sketch associated with it. When the Arduino is powered up, it then checks for this flash first, if present then it proceeds to load from here, reprogramming itself with the new code, reboots and now has the functionality associated with the shield. If there is no flash available (a shield with no personality e.g. current shields) then the Arduino proceeds to load as per normal.
This way you could easily swap a shield/personality board without having to reprogram the Arduino, it keeps the functionality of the shield with the shield, thus giving shields a personality.