/*
This Arduino program cycles through three lighting patterns
using two single-color LEDs, two RGB LEDs and a 6-segment LED bar graph.
Pattern details:
State 1 (2 seconds):
- led1 ON, led2 OFF.
- rgb1 displays red (R=255, G=0, B=0), rgb2 OFF.
- Bar graph: segments A1, A2, A3 ON, A4, A5, A6 OFF.
State 2 (2 seconds):
- led1 OFF, led2 ON.
- rgb2 displays green (R=0, G=255, B=0), rgb1 OFF.
- Bar graph: segments A4, A5, A6 ON, A1, A2, A3 OFF.
State 3 (2 seconds):
- Both led1 and led2 ON.
- Both rgb1 and rgb2 display cyan (G=255, B=255; red off).
- Bar graph: all six segments ON.
All components are off on start.
*/
const int led1Pin = 30;
const int led2Pin = 31;
// 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;
// Bar graph segment pins (anodes)
const int barSegPins[6] = {22, 23, 24, 25, 26, 27};
void setup() {
// Initialize single-color LED pins
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
// Initialize RGB LED pins
pinMode(rgb1_R, OUTPUT);
pinMode(rgb1_G, OUTPUT);
pinMode(rgb1_B, OUTPUT);
pinMode(rgb2_R, OUTPUT);
pinMode(rgb2_G, OUTPUT);
pinMode(rgb2_B, OUTPUT);
// Initialize bar graph segment pins
for (int i = 0; i < 6; i++) {
pinMode(barSegPins[i], OUTPUT);
}
// Initialization: All components off
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
// Turn off RGB LEDs (using analogWrite since PWM is available)
analogWrite(rgb1_R, 0);
analogWrite(rgb1_G, 0);
analogWrite(rgb1_B, 0);
analogWrite(rgb2_R, 0);
analogWrite(rgb2_G, 0);
analogWrite(rgb2_B, 0);
// Turn off all bar graph segments
for (int i = 0; i < 6; i++) {
digitalWrite(barSegPins[i], LOW);
}
}
void loop() {
// State 1: 2 seconds
// New state: led1 ON, led2 OFF.
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, LOW);
// rgb1: red, rgb2: off
analogWrite(rgb1_R, 255); // red full brightness
analogWrite(rgb1_G, 0);
analogWrite(rgb1_B, 0);
analogWrite(rgb2_R, 0);
analogWrite(rgb2_G, 0);
analogWrite(rgb2_B, 0);
// Bar graph: first three segments (A1, A2, A3) ON, rest OFF.
for (int i = 0; i < 3; i++) {
digitalWrite(barSegPins[i], HIGH);
}
for (int i = 3; i < 6; i++) {
digitalWrite(barSegPins[i], LOW);
}
delay(2000); // Wait for 2 seconds
// State 2: 2 seconds
// New state: led1 OFF, led2 ON.
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, HIGH);
// rgb1: off, rgb2: green.
analogWrite(rgb1_R, 0);
analogWrite(rgb1_G, 0);
analogWrite(rgb1_B, 0);
analogWrite(rgb2_R, 0);
analogWrite(rgb2_G, 255); // green full brightness
analogWrite(rgb2_B, 0);
// Bar graph: last three segments (A4, A5, A6) ON, first three OFF.
for (int i = 0; i < 3; i++) {
digitalWrite(barSegPins[i], LOW);
}
for (int i = 3; i < 6; i++) {
digitalWrite(barSegPins[i], HIGH);
}
delay(2000); // Wait for 2 seconds
// State 3: 2 seconds
// New state: both led1 and led2 ON.
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, HIGH);
// Both rgb1 and rgb2: display cyan (green + blue, red off).
analogWrite(rgb1_R, 0);
analogWrite(rgb1_G, 255);
analogWrite(rgb1_B, 255);
analogWrite(rgb2_R, 0);
analogWrite(rgb2_G, 255);
analogWrite(rgb2_B, 255);
// Bar graph: all six segments ON.
for (int i = 0; i < 6; i++) {
digitalWrite(barSegPins[i], HIGH);
}
delay(2000); // Wait for 2 seconds
}