int X[] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
int Y[] = {0, 9, 10, 11, 12, 13, A0, A1, A2};
unsigned long patternStartTime = 0; // Variable to track pattern start time
const unsigned long patternDuration = 3000; // Pattern display duration in milliseconds
int currentPattern = 1; // Track the current pattern being displayed
void setup() {
for (int i = 1; i < 9; i++) {
pinMode(X[i], OUTPUT);
pinMode(Y[i], OUTPUT);
digitalWrite(X[i], HIGH);
digitalWrite(Y[i], LOW);
}
}
void loop() {
switch (currentPattern) {
case 1:
displayHeartPattern();
break;
case 2:
displaySecondPattern();
break;
case 3:
displayThirdPattern();
break;
}
if (millis() - patternStartTime >= patternDuration) {
effacer(); // Clear the LED matrix
delay(100); // Add a short delay for stability
currentPattern = (currentPattern % 3) + 1; // Switch to the next pattern (1, 2, or 3)
patternStartTime = millis(); // Reset pattern start time
}
}
void displayHeartPattern() {
byte heartPattern[8] = {
B00000000,
B00000000,
B01100110,
B01100110,
B01100110,
B10000001,
B01000010,
B00111100
};
displayPattern(heartPattern);
}
void displaySecondPattern() {
byte secondPattern[8] = {
B00000000,
B00000000,
B01100110,
B01100110,
B00000000,
B01111110,
B00000000,
B00000000
};
displayPattern(secondPattern);
}
void displayThirdPattern() {
byte thirdPattern[8] = {
B00000000,
B00000000,
B01100110,
B01100110,
B01100110,
B00111100,
B01000010,
B10000001
};
displayPattern(thirdPattern);
}
void displayPattern(byte pattern[8]) {
for (int col = 0; col < 8; col++) {
digitalWrite(Y[col + 1], LOW); // Activate column col+1
for (int row = 0; row < 8; row++) {
digitalWrite(X[row + 1], bitRead(pattern[col], row)); // Activate row row+1 if pattern is 1
}
delay(5); // Adjust