Can someone give me a clue as to how to organize 5 different blink patterns so I can call them out for the sounds later?
Instead of writing code for every blinking pattern you need to put the pattern as data in an array. This is, in rather the same way, as you would do when using the tone function to play a tune.
Their are a few ways of doing this, but one way would be to have an array for each LED which consists of a time before that LED is toggled, that is turned on if it is off or off if it is on.
Then to drive that pattern you need a blink without delay type sketch to handle the 5 LEDs and especially the sound all seemingly at the same time. This sort of code is known as a "state machine".
See my
http://www.thebox.myzen.co.uk/Tutorial/State_Machine.html
Or Robin2's several things at once
http://forum.arduino.cc/index.php?topic=223286.0
To have more than one pattern you need a two dimensional array, that is an array of arrays, so you can choose the pattern you want as one of the dimensions of the array.
You are taking quite a step up in programming here, it might be difficult to get your head round it.
I have not got a specific example of this problem but here is some code I wrote to control a bunch of LEDs on a Christmas tree. Each LED blinks with its own pattern. Please read the comments in the code and try to understand what it does.
/*
* Multiple Blink - Mike Cook
*
* controls 8 LEDs and blinks each one at an independent rate set by
* the value in the flashTime array
*/
int pins[] = {18, 19, 22, 23, 25, 26, 27, 28 }; // set up the 8 pins to use as outputs - these are for a mega change according to what setup you have
int flashTime[] = { 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000}; // set up the blink time of each LED
long int changeTime[] = {0, 0, 0, 0, 0, 0, 0, 0}; // array to hold when next to change the state of each LED
char serial_char;
void setup() // is run once, when the sketch starts
{
for(int i=0; i<8; i++){
pinMode(pins[i], OUTPUT); // sets the digital pins as output
changeTime[i] = millis() + flashTime[i]; // set the time for the next change
}
Serial.begin(9600);
Serial.println("start");
}
void loop() // run over and over again
{
for(int i=0 ; i<8; i++){ // look at each LED timer in turn
if(millis()>changeTime[i]) { // it is time to change the state of the LED
digitalWrite(pins[i], !digitalRead(pins[i]) ); // make the LED the inverse of the current state (it's the ! that inverts)
changeTime[i] = millis() + flashTime[i]; // set the time to make the next change
} // end of time to change the state of the LED if statement
} // end of for loop looking at all the LEDs
} // end of loop() function