Digital pins 0 and 1 interact with the Serial/USB output; don't try to use pins D0 and D1 if you're also trying to do Serial.print/Serial.println.

pinMode always defaults to INPUT. If you then try to use the pin for output, it will work, but severely limit the amount of current it supplies. Remember to always set pinMode to OUTPUT if you need it.

When communicating with Processing (or anything else) via the serial cable, via Serial.write, anything else you send via Serial.println will ALSO go to the same place. That means that if you've got a Processing program waiting for an 'a' (ASCII value 97) and you send the text "distance", this will trigger on the Processing side just like a Serial.write(97) will. Best to resolve by using non-character values as codes.

The RedBacks have 5 timers, and some of our libraries use them. Chaos ensues when you try to use a single timer for more than one purpose.

When using the remote 120V relays, you need to send to send a HIGH signal for 500 ms, then switch back to LOW. This sends a pulse that swaps that flips the relay from on to off (or the other way around).

When using external power, or any kind of external device, make sure that all ground wires are connected to each other and to the Arduino ground.

Don't use pin 13 for input. The built-in LED and an internal resistor muck things up. This page has instructions on what you should do if you really need to use it for input. It says: "NOTE: Digital pin 13 is harder to use as a digital input than the other digital pins because it has an LED and resistor attached to it that's soldered to the board on most boards. If you enable its internal 20k pull-up resistor, it will hang at around 1.7V instead of the expected 5V because the onboard LED and series resistor pull the voltage level down, meaning it always returns LOW. If you must use pin 13 as a digital input, set its pinMode() to INPUT and use an external pull down resistor."

The ultrasonic sensors have, on rare projects, been known to freeze up after a while. The symptoms are that they read values for some period of time, then start just reading 0 all the time until the program is rerun. This is repairable by resetting the echo pin after every read. Here is some sample code to do so:

int distance = sonar.ping_cm();
pinMode(echoPin, OUTPUT);
digitalWrite(echoPin, LOW);
pinMode(echoPin, INPUT);
This is described on an mbed.com blog posting, which in turn refers to an embedded answer in the Arduino forums.

The break-beam sensors that we have require a fairly substantial item to break the beam. Plan on using something large and thick; otherwise, the IR signal seems to slip around or through the item and the beam does not get broken.