#include <Servo.h> // Included as allowed per the instructions
// Define pin assignments
// Single LED
const int led1Pin = 22;
// RGB LED pins
// rgb1 pins
const int rgb1_R = 2;
const int rgb1_G = 3;
const int rgb1_B = 4;
// rgb2 pins
const int rgb2_R = 5;
const int rgb2_G = 6;
const int rgb2_B = 7;
// rgb3 pins
const int rgb3_R = 8;
const int rgb3_G = 9;
const int rgb3_B = 10;
// LED bar graph segments (we use 4 segments)
const int bar1 = 11; // segment 1
const int bar2 = 12; // segment 2
const int bar3 = 13; // segment 3
const int bar4 = 14; // segment 4
void setup() {
// Set output for led1
pinMode(led1Pin, OUTPUT);
// Set RGB LED pins as outputs
pinMode(rgb1_R, OUTPUT);
pinMode(rgb1_G, OUTPUT);
pinMode(rgb1_B, OUTPUT);
pinMode(rgb2_R, OUTPUT);
pinMode(rgb2_G, OUTPUT);
pinMode(rgb2_B, OUTPUT);
pinMode(rgb3_R, OUTPUT);
pinMode(rgb3_G, OUTPUT);
pinMode(rgb3_B, OUTPUT);
// Set LED bar graph pins as outputs
pinMode(bar1, OUTPUT);
pinMode(bar2, OUTPUT);
pinMode(bar3, OUTPUT);
pinMode(bar4, OUTPUT);
// Initialization: All LEDs OFF
digitalWrite(led1Pin, LOW);
// Turn off all RGB channels
digitalWrite(rgb1_R, LOW);
digitalWrite(rgb1_G, LOW);
digitalWrite(rgb1_B, LOW);
digitalWrite(rgb2_R, LOW);
digitalWrite(rgb2_G, LOW);
digitalWrite(rgb2_B, LOW);
digitalWrite(rgb3_R, LOW);
digitalWrite(rgb3_G, LOW);
digitalWrite(rgb3_B, LOW);
// Turn off all bar graph segments (the anodes)
digitalWrite(bar1, LOW);
digitalWrite(bar2, LOW);
digitalWrite(bar3, LOW);
digitalWrite(bar4, LOW);
}
void loop() {
// Stage 1 : (0-2 seconds)
// led1: off
digitalWrite(led1Pin, LOW);
// rgb1: red, rgb2 and rgb3: off
digitalWrite(rgb1_R, HIGH);
digitalWrite(rgb1_G, LOW);
digitalWrite(rgb1_B, LOW);
digitalWrite(rgb2_R, LOW);
digitalWrite(rgb2_G, LOW);
digitalWrite(rgb2_B, LOW);
digitalWrite(rgb3_R, LOW);
digitalWrite(rgb3_G, LOW);
digitalWrite(rgb3_B, LOW);
// Bar graph: light up only segment 1
digitalWrite(bar1, HIGH);
digitalWrite(bar2, LOW);
digitalWrite(bar3, LOW);
digitalWrite(bar4, LOW);
delay(2000);
// Stage 2 : (2-4 seconds)
// led1: on
digitalWrite(led1Pin, HIGH);
// rgb1: green, rgb2: blue, rgb3: off
// rgb1: green
digitalWrite(rgb1_R, LOW);
digitalWrite(rgb1_G, HIGH);
digitalWrite(rgb1_B, LOW);
// rgb2: blue
digitalWrite(rgb2_R, LOW);
digitalWrite(rgb2_G, LOW);
digitalWrite(rgb2_B, HIGH);
// rgb3 remains off
digitalWrite(rgb3_R, LOW);
digitalWrite(rgb3_G, LOW);
digitalWrite(rgb3_B, LOW);
// Bar graph: light up segments 1 and 2
digitalWrite(bar1, HIGH);
digitalWrite(bar2, HIGH);
digitalWrite(bar3, LOW);
digitalWrite(bar4, LOW);
delay(2000);
// Stage 3 : (4-6 seconds)
// led1: off
digitalWrite(led1Pin, LOW);
// rgb1: blue, rgb2: red, rgb3: green
// rgb1: blue
digitalWrite(rgb1_R, LOW);
digitalWrite(rgb1_G, LOW);
digitalWrite(rgb1_B, HIGH);
// rgb2: red
digitalWrite(rgb2_R, HIGH);
digitalWrite(rgb2_G, LOW);
digitalWrite(rgb2_B, LOW);
// rgb3: green
digitalWrite(rgb3_R, LOW);
digitalWrite(rgb3_G, HIGH);
digitalWrite(rgb3_B, LOW);
// Bar graph: light up segments 1, 2 and 3
digitalWrite(bar1, HIGH);
digitalWrite(bar2, HIGH);
digitalWrite(bar3, HIGH);
digitalWrite(bar4, LOW);
delay(2000);
// Stage 4 : (6-8 seconds)
// led1: on
digitalWrite(led1Pin, HIGH);
// All RGB LEDs: white (all R, G, B on)
// rgb1 white
digitalWrite(rgb1_R, HIGH);
digitalWrite(rgb1_G, HIGH);
digitalWrite(rgb1_B, HIGH);
// rgb2 white
digitalWrite(rgb2_R, HIGH);
digitalWrite(rgb2_G, HIGH);
digitalWrite(rgb2_B, HIGH);
// rgb3 white
digitalWrite(rgb3_R, HIGH);
digitalWrite(rgb3_G, HIGH);
digitalWrite(rgb3_B, HIGH);
// Bar graph: light up segments 1, 2, 3 and 4
digitalWrite(bar1, HIGH);
digitalWrite(bar2, HIGH);
digitalWrite(bar3, HIGH);
digitalWrite(bar4, HIGH);
delay(2000);
}