The addition of a transistor will allow the Arduino to control higher voltage and current loads. You may want to do that instead of using relays because the transistors will allow you to do fading effects. You would probably need transistors to drive the relays anyway since most relays need more than 30 mA at 5V (absolute max for Arduino outputs is 40 mA 5V).
Some of the outputs on an Arduino support Pulse Width Modulation. The 'analogWrite(pin, value)' lets you set the portion of time the pin is HIGH from 0 (off) to 255 (full on). You should connect your LED's to those pins to allow fading effects at a later date. On the UNO the PWM pins are 3, 5, 6, 9, 10, and 11. Pins 10 and 11 are useful for an Ethernet Shield so I would recommend 3, 5, 6, and 9.
const int ringCount = 4;
const int ringPins[ringCount] = {3, 5, 6, 9};
void setup() {
for (int i=0; i<ringCount; i++)
pinMode(ringPins[i], OUTPUT);
}
void loo() {
// Turn them on one at a time
for (int i=0; i<ringCount; i++) {
digitalWrite(ringPins[i], HIGH);
delay(1000); // One second delay between rings
}
// Turn them off one at a time
for (int i=0; i<ringCount; i++) {
digitalWrite(ringPins[i], LOW);
delay(1000); // One second delay between rings
}
// Blink them on and off five times
for (int count=0; count < 5; count++) {
for (int i=0; i<ringCount; i++) {
digitalWrite(ringPins[i], HIGH);
}
delay(500);
for (int i=0; i<ringCount; i++) {
digitalWrite(ringPins[i], LOW);
}
delay(500);
}
}