//------Settings Matrix------
const int nbrCols=3;
const int nbrLigne=3;
const int PINparLED=3;
//---------------------------
//-----Settings PIN LED------
const int pinLED[nbrCols][nbrLigne][PINparLED] = {
{{42, 44, 45}, {4, 3, 2}, {26, 28, 29}},
{{46, 48, 49}, {13, 12, 11}, {30, 32, 33}},
{{50, 52, 53}, {8, 7, 6}, {34, 36, 37}}
};
//---------------------------
class LED {
public:
LED() : pinRED(0), pinGREEN(0), pinBLUE(0), isOn(false), color{255, 255, 255} {}
LED(int pinRED, int pinGREEN, int pinBLUE) : pinRED(pinRED), pinGREEN(pinGREEN), pinBLUE(pinBLUE), isOn(false), color{255, 255, 255} {
pinMode(pinRED, OUTPUT);
pinMode(pinGREEN, OUTPUT);
pinMode(pinBLUE, OUTPUT);
turnOff();
}
void turnOn() {
setColor(color[0], color[1], color[2]);
isOn = true;
}
void setColor(int R, int G, int B) {
if (-1 < R && R < 255) {
analogWrite(pinRED, R);
color[0] = R;
}
if (-1 < G && G < 255) {
analogWrite(pinGREEN, G);
color[1] = G;
}
if (-1 < B && B < 255) {
analogWrite(pinBLUE, B);
color[2] = B;
}
}
void turnOff() {
digitalWrite(pinRED, LOW);
digitalWrite(pinGREEN, LOW);
digitalWrite(pinBLUE, LOW);
isOn = false;
}
bool isLit() const {
return isOn;
}
private:
int pinRED;
int pinGREEN;
int pinBLUE;
bool isOn;
int color[3];
};
class MATRIX {
public:
MATRIX() {
// Initialiser la matrice dans une méthode distincte
initializeMatrix();
}
void initializeMatrix() {
for (int row = 0; row < nbrLigne; row++) {
for (int col = 0; col < nbrCols; col++) {
pinMode(pinLED[row][col][0], OUTPUT);
pinMode(pinLED[row][col][1], OUTPUT);
pinMode(pinLED[row][col][2], OUTPUT);
digitalWrite(pinLED[row][col][0], LOW);
digitalWrite(pinLED[row][col][1], LOW);
digitalWrite(pinLED[row][col][2], LOW);
leds[row][col] = LED(pinLED[row][col][0], pinLED[row][col][1], pinLED[row][col][2]);
}
}
}
void setColor(int col, int row, int R, int G, int B) {
leds[col][row].setColor(R, G, B);
}
private:
LED leds[nbrCols][nbrLigne];
};
MATRIX PrimaryMatrix;
void setup() {
// Aucune initialisation nécessaire dans cette configuration
}
void loop() {
// Allume et éteint la LED en boucle avec une pause de 1 seconde entre chaque changement
PrimaryMatrix.setColor(0,0,254,1,254);
delay(1000);
PrimaryMatrix.setColor(1,0,254,1,254);
delay(1000);
PrimaryMatrix.setColor(2,0,254,1,254);
delay(1000);
PrimaryMatrix.setColor(0,1,254,1,254);
delay(1000);
PrimaryMatrix.setColor(1,1,254,1,254);
delay(1000);
PrimaryMatrix.setColor(2,1,254,1,254);
delay(1000);
PrimaryMatrix.setColor(0,2,254,1,254);
delay(1000);
PrimaryMatrix.setColor(1,2,254,1,254);
delay(1000);
PrimaryMatrix.setColor(2,2,254,1,254);
delay(1000);
PrimaryMatrix.setColor(0,0,0,0,0);
delay(1000);
PrimaryMatrix.setColor(1,0,0,0,0);
delay(1000);
PrimaryMatrix.setColor(2,0,0,0,0);
delay(1000);
PrimaryMatrix.setColor(0,1,0,0,0);
delay(1000);
PrimaryMatrix.setColor(1,1,0,0,0);
delay(1000);
PrimaryMatrix.setColor(2,1,0,0,0);
delay(1000);
PrimaryMatrix.setColor(0,2,0,0,0);
delay(1000);
PrimaryMatrix.setColor(1,2,0,0,0);
delay(1000);
PrimaryMatrix.setColor(2,2,0,0,0);
delay(1000);
}