1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| // ============================
// DÉFINITION DE LA FLÈCHE
// ============================
const uint8_t arrowShape[MATRIX_HEIGHT][MATRIX_WIDTH] = {
{0, 0, 0, 0, 0, 0, 1, 1}, // Ligne 1
{0, 0, 0, 0, 0, 1, 1, 1}, // Ligne 2
{0, 0, 0, 0, 1, 1, 1, 0}, // Ligne 3
{0, 0, 0, 1, 1, 1, 0, 0}, // Ligne 4
{0, 0, 0, 1, 1, 1, 0, 0}, // Ligne 5
{0, 0, 0, 0, 1, 1, 1, 0}, // Ligne 6
{0, 0, 0, 0, 0, 1, 1, 1}, // Ligne 7
{0, 0, 0, 0, 0, 0, 1, 1} // Ligne 8
};
// ============================
// PARAMÈTRES MODIFIABLES
// ============================
unsigned long scrollDelay = 50; // Délai entre chaque position de la flèche
int repeatCount = 3; // Nombre de répétitions du défilement
bool displayNumberAfterScroll = true; // Afficher le numéro après le défilement
unsigned long blinkDuration = 5000; // Durée de scintillement en millisecondes
unsigned long blinkSpeed = 20; // Vitesse du scintillement (intervalle entre les LED) en millisecondes
int ledCount = 8; // Nombre de LEDs à faire scintiller simultanément
int brightness = 200; // Luminosité par défaut pour toutes les matrices
// Fonction pour faire défiler une flèche de droite à gauche
void scrollArrow(int matrixIndex) {
for (int arrowPosition = MATRIX_WIDTH; arrowPosition >= -(MATRIX_WIDTH); arrowPosition--) {
matrices[matrixIndex].clear(); // Nettoie la matrice
// Dessine la flèche à la position actuelle
for (int y = 0; y < MATRIX_HEIGHT; y++) {
for (int x = 0; x < MATRIX_WIDTH; x++) {
if (arrowShape[y][x] == 1) { // Vérifie si le pixel de la flèche est allumé
// Calculer la position du pixel en inversant X
int pixelX = MATRIX_WIDTH - 1 - (arrowPosition + x); // Inverser X
// Dessiner la flèche uniquement si elle est dans les limites
if (pixelX >= 0 && pixelX < MATRIX_WIDTH) {
setPixel(matrixIndex, pixelX, y, matrices[matrixIndex].Color(255, 255, 255)); // Flèche blanche
}
}
}
}
matrices[matrixIndex].show(); // Affiche l'effet
delay(scrollDelay); // Délai entre chaque position de défilement
}
}
// Fonction pour faire scintiller un nombre spécifié de LEDs aléatoires
void blinkMatrix(int matrixIndex) {
static unsigned long lastBlinkTime[NUM_MATRICES] = {0, 0, 0, 0}; // Dernier temps de scintillement pour chaque matrice
if (millis() - lastBlinkTime[matrixIndex] >= blinkSpeed) { // Scintillement à la vitesse spécifiée
lastBlinkTime[matrixIndex] = millis(); // Met à jour le temps du dernier scintillement
// Allumer un nombre spécifié de LEDs (jusqu'à ledCount) en blanc
matrices[matrixIndex].clear();
for (int i = 0; i < ledCount; i++) {
int randomLED = random(MATRIX_WIDTH * MATRIX_HEIGHT);
matrices[matrixIndex].drawPixel(randomLED % MATRIX_WIDTH, randomLED / MATRIX_WIDTH, matrices[matrixIndex].Color(255, 255, 255)); // Allume une LED en blanc
}
matrices[matrixIndex].show(); // Affiche l'état actuel
}
}
bool isBlinking[NUM_MATRICES] = {false, false, false, false}; // État du scintillement pour chaque matrice
unsigned long blinkStartTime[NUM_MATRICES]; |
Partager