// Pin definitions
const int LED_PIN = 2;
// RGB LED pins
const int RGB1_R = 3;
const int RGB1_G = 4;
const int RGB1_B = 5;
const int RGB2_R = 6;
const int RGB2_G = 7;
const int RGB2_B = 8;
const int RGB3_R = 9;
const int RGB3_G = 10;
const int RGB3_B = 11;
// Bargraph pins
const int BARGRAPH_1 = 12;
const int BARGRAPH_2 = 13;
const int BARGRAPH_3 = 22;
const int BARGRAPH_4 = 23;
// Stage durations
const unsigned long STAGE_DURATION = 2000; // 2 seconds in milliseconds
const unsigned long TOTAL_CYCLE_TIME = 4 * STAGE_DURATION; // 8 seconds
void setup() {
// Initialize all pins as OUTPUT
pinMode(LED_PIN, OUTPUT);
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);
pinMode(BARGRAPH_1, OUTPUT);
pinMode(BARGRAPH_2, OUTPUT);
pinMode(BARGRAPH_3, OUTPUT);
pinMode(BARGRAPH_4, OUTPUT);
// Initialize all LEDs to OFF
turnOffAllLEDs();
}
void loop() {
// Get current time in the cycle (0-7999 ms)
unsigned long currentTime = millis() % TOTAL_CYCLE_TIME;
// Determine the current stage (0-3)
int currentStage = currentTime / STAGE_DURATION;
// Execute the appropriate stage
switch (currentStage) {
case 0: // Stage 1 (0-2 seconds)
executeStage1();
break;
case 1: // Stage 2 (2-4 seconds)
executeStage2();
break;
case 2: // Stage 3 (4-6 seconds)
executeStage3();
break;
case 3: // Stage 4 (6-8 seconds)
executeStage4();
break;
}
}
// Turn off all LEDs
void turnOffAllLEDs() {
digitalWrite(LED_PIN, LOW);
// Turn off all RGB LEDs
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 bargraph segments
digitalWrite(BARGRAPH_1, LOW);
digitalWrite(BARGRAPH_2, LOW);
digitalWrite(BARGRAPH_3, LOW);
digitalWrite(BARGRAPH_4, LOW);
}
// Stage 1 implementation
void executeStage1() {
// Turn everything off first
turnOffAllLEDs();
// Regular LED is OFF (already done in turnOffAllLEDs)
// RGB1 displays RED
digitalWrite(RGB1_R, HIGH);
// RGB2 and RGB3 remain OFF (already done in turnOffAllLEDs)
// Bargraph lights up 1 segment
digitalWrite(BARGRAPH_1, HIGH);
}
// Stage 2 implementation
void executeStage2() {
// Turn everything off first
turnOffAllLEDs();
// Regular LED is ON
digitalWrite(LED_PIN, HIGH);
// RGB1 displays GREEN
digitalWrite(RGB1_G, HIGH);
// RGB2 displays BLUE
digitalWrite(RGB2_B, HIGH);
// RGB3 remains OFF (already done in turnOffAllLEDs)
// Bargraph lights up 2 segments
digitalWrite(BARGRAPH_1, HIGH);
digitalWrite(BARGRAPH_2, HIGH);
}
// Stage 3 implementation
void executeStage3() {
// Turn everything off first
turnOffAllLEDs();
// Regular LED is OFF (already done in turnOffAllLEDs)
// RGB1 displays BLUE
digitalWrite(RGB1_B, HIGH);
// RGB2 displays RED
digitalWrite(RGB2_R, HIGH);
// RGB3 displays GREEN
digitalWrite(RGB3_G, HIGH);
// Bargraph lights up 3 segments
digitalWrite(BARGRAPH_1, HIGH);
digitalWrite(BARGRAPH_2, HIGH);
digitalWrite(BARGRAPH_3, HIGH);
}
// Stage 4 implementation
void executeStage4() {
// Turn everything off first
turnOffAllLEDs();
// Regular LED is ON
digitalWrite(LED_PIN, HIGH);
// All RGB LEDs display WHITE
digitalWrite(RGB1_R, HIGH);
digitalWrite(RGB1_G, HIGH);
digitalWrite(RGB1_B, HIGH);
digitalWrite(RGB2_R, HIGH);
digitalWrite(RGB2_G, HIGH);
digitalWrite(RGB2_B, HIGH);
digitalWrite(RGB3_R, HIGH);
digitalWrite(RGB3_G, HIGH);
digitalWrite(RGB3_B, HIGH);
// Bargraph lights up all 4 segments
digitalWrite(BARGRAPH_1, HIGH);
digitalWrite(BARGRAPH_2, HIGH);
digitalWrite(BARGRAPH_3, HIGH);
digitalWrite(BARGRAPH_4, HIGH);
}
mega:SCL
mega:SDA
mega:AREF
mega:GND.1
mega:13
mega:12
mega:11
mega:10
mega:9
mega:8
mega:7
mega:6
mega:5
mega:4
mega:3
mega:2
mega:1
mega:0
mega:14
mega:15
mega:16
mega:17
mega:18
mega:19
mega:20
mega:21
mega:5V.1
mega:5V.2
mega:22
mega:23
mega:24
mega:25
mega:26
mega:27
mega:28
mega:29
mega:30
mega:31
mega:32
mega:33
mega:34
mega:35
mega:36
mega:37
mega:38
mega:39
mega:40
mega:41
mega:42
mega:43
mega:44
mega:45
mega:46
mega:47
mega:48
mega:49
mega:50
mega:51
mega:52
mega:53
mega:GND.4
mega:GND.5
mega:IOREF
mega:RESET
mega:3.3V
mega:5V
mega:GND.2
mega:GND.3
mega:VIN
mega:A0
mega:A1
mega:A2
mega:A3
mega:A4
mega:A5
mega:A6
mega:A7
mega:A8
mega:A9
mega:A10
mega:A11
mega:A12
mega:A13
mega:A14
mega:A15
led1:A
led1:C
rgb1:R
rgb1:COM
rgb1:G
rgb1:B
rgb2:R
rgb2:COM
rgb2:G
rgb2:B
rgb3:R
rgb3:COM
rgb3:G
rgb3:B
bargraph1:A1
bargraph1:A2
bargraph1:A3
bargraph1:A4
bargraph1:A5
bargraph1:A6
bargraph1:A7
bargraph1:A8
bargraph1:A9
bargraph1:A10
bargraph1:C1
bargraph1:C2
bargraph1:C3
bargraph1:C4
bargraph1:C5
bargraph1:C6
bargraph1:C7
bargraph1:C8
bargraph1:C9
bargraph1:C10