adwsystems:
As for the direction bperrybap is heading, instead of toggling the outputs HIGH and LOW using digitalWrite(x), change the the pinMode from INPUT_PULLUP (which becomes the high output) and OUTPUT (which becomes low output). As mentioned the advantage is the built-in current limiting.Even if you don't test for the shorts, bperrybap comments have a good advantage for your setup.
So... for example, in my code.. This:
digitalWrite(12, HIGH); // 12 is red LED, no continuity
digitalWrite(11, LOW); // 11 is green LED, continuity
becomes this?:
pinMode(12, INPUT_PULLUP); // 12 is red LED, no continuity
pinMode(11, OUTPUT); // 11 is green LED, continuity