const int startButton = 8;
const int buzzer = 9; // Buzzer pin 9
// LED + Delay in an array [LED, delai]
const int ledSequence[][2] = {
{ 2, 750 }, // RED1
{ 3, 750 }, // RED2
{ 4, 750 }, // RED3
{ 5, 750 }, // RED4
{ 6, 750 }, // RED5
{ 7, 2000 } // GREEN
};
const int numLEDs = sizeof(ledSequence) / sizeof(ledSequence[0]);
const int DELAY_BUZZ = 250;
void setup()
{
pinMode(startButton, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
for (int i = 0; i < numLEDs; i++)
{
pinMode(ledSequence[i][0], OUTPUT);
digitalWrite(ledSequence[i][0], LOW);
}
}
void loop()
{
static bool Start_Done = false;
if (!digitalRead(startButton) && !Start_Done)
{
Initiate_Start_Procedure();
Start_Done = true;
}
}
void Initiate_Start_Procedure(void)
{
for (int i = 0; i < numLEDs; i++)
{
int pin = ledSequence[i][0];
int delayTime = ledSequence[i][1];
digitalWrite(pin, HIGH);
if (i == numLEDs - 1)
{
// Last LED (GREEN), turn off the red ones
for (int j = 0; j < numLEDs - 1; j++)
{
digitalWrite(ledSequence[j][0], LOW);
}
tone(buzzer, 2000, 2 * DELAY_BUZZ); // Buzzer longer on the last one
}
else
{
tone(buzzer, 2000, DELAY_BUZZ);
}
delay(delayTime);
}
// Turn off everything at the end (basically turns off only the green one but just in case)
for (int i = 0; i < numLEDs; i++)
{
digitalWrite(ledSequence[i][0], LOW);
}
}