// Segment pins: A-G
int segPins[7] = {2, 3, 4, 5, 6, 7, 8};
// RGB pins
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
// Number to 7-segment encoding (0–9)
// Order: A B C D E F G
byte digits[10][7] = {
{1,1,1,1,1,1,0}, // 0
{0,1,1,0,0,0,0}, // 1
{1,1,0,1,1,0,1}, // 2
{1,1,1,1,0,0,1}, // 3
{0,1,1,0,0,1,1}, // 4
{1,0,1,1,0,1,1}, // 5
{1,0,1,1,1,1,1}, // 6
{1,1,1,0,0,0,0}, // 7
{1,1,1,1,1,1,1}, // 8
{1,1,1,1,0,1,1} // 9
};
int cycle = 0; // 0: red, 1: green, 2: blue
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segPins[i], OUTPUT);
}
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
updateLED(); // Set initial RGB color
}
void loop() {
for (int i = 0; i <= 9; i++) {
displayDigit(i);
delay(1000); // Wait 1 second
}
// After 0–9, change cycle
cycle = (cycle + 1) % 3;
updateLED();
}
void displayDigit(int num) {
for (int i = 0; i < 7; i++) {
digitalWrite(segPins[i], digits[num][i]);
}
}
void updateLED() {
// Turn off all first
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
if (cycle == 0)
digitalWrite(redPin, HIGH);
else if (cycle == 1)
digitalWrite(greenPin, HIGH);
else if (cycle == 2)
digitalWrite(bluePin, HIGH);
}