You should make sure you have a way to handle optional pin usage.
That would be nice, but I haven't figured out a nice way to handle it. It would add a lot of complexity to the user interface (both current and intended) for the site because there are so many possible scenarios.
It's not as simple as adding a third pin option so they can be flagged as "used", "not used", or "optional". Often the options are tied together, so a shield may use one combination of pins in one mode and another combination of pins in another mode. A good example of this is the Spikenzie Labs Button 64 Shield (http://shieldlist.org/spikenzie/b64
) because it can use either:
D2, D3, and D4
but not both groups at the same time.
So if I just marked D0, D2, D3, and D4 as "optional" it would be technically correct, but just as misleading as marking them as all used. People might think they could use any one of them or even none of them when that's not the case. D2-4 would really need to be bound together into a group, and D0 defined as another group, and those groups be defined as mutually exclusive but with one or the other required. But how would that be represented visually?
Mutually-exclusive-but-required groups is one scenario. Then there are others such as optional pins that are required by some features that may not be used by others such as the SD card slot on the new Ethernet shield that may not be used by many people (http://shieldlist.org/arduino/ethernet-v5
). Or shields that are nothing but breakouts, so they could use *all* the pins or *none* of them, depending on what else is attached (http://shieldlist.org/seeedstudio/brick-chassis
Showing optional pin usage sounds good in theory, but when you try to figure out how to actually store / represent that information it suddenly becomes a surprisingly difficult problem!
For now I'm handling it by marking the "default" or basic pin use in the DB, and adding a text note about alternative assignments. At least having all this info in text form in one place is a huge improvement on how things were a month ago.