#include <FastLED.h>
#define NUM_LEDS 64
#define DATA_PIN 23
CRGB leds[NUM_LEDS];
// Define patterns for digits 0-9 on an 8x8 LED matrix (serpentine layout)
const byte digitPatterns[10][8] = {
{ B11111111, // 0
B11111111,
B11000011,
B11000011,
B11000011,
B11000011,
B11111111,
B11111111 },
{ B00000000, // 1
B00000000,
B00000001,
B11111111,
B11111111,
B00000001,
B00000000,
B00000000 },
{ B11111111, // 2
B11111111,
B00000111,
B00001110,
B00011100,
B00111000,
B11100000,
B11111110 },
{ B11111111, // 3
B11111111,
B00000011,
B00111111,
B00111111,
B00000011,
B11111111,
B11111111 },
{ B00000110, // 4
B00001010,
B00010010,
B00100010,
B01000010,
B11111111,
B00000010,
B00000010 },
{ B11111110, // 5
B10000001,
B10000001,
B10000001,
B10000001,
B10000001,
B10000001,
B01111110 },
{ B11111111, // 6
B10000000,
B10000000,
B10000000,
B10000000,
B10000000,
B10000000,
B01111111 },
{ B00000001, // 7
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B11111111,
B11111111 },
{ B01111110, // 8
B10000001,
B10000001,
B10000001,
B10000001,
B10000001,
B10000001,
B01111110 },
{ B00011110, // 9
B00100001,
B00100001,
B00100001,
B00100001,
B00100001,
B00100001,
B11111110 }
};
void setup() {
FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(200);
}
void loop() {
// Display digits 0-9 sequentially
for (int digit = 0; digit <= 9; digit++) {
displayDigit(digit);
// Delay between each digit display
delay(1000); // Adjust delay as needed
}
}
void displayDigit(int digit) {
// Clear LEDs
fill_solid(leds, NUM_LEDS, CRGB::Black);
// Draw digit pattern on LED matrix (serpentine layout)
for (int row = 0; row < 8; row++) {
int serpentineOffset = row % 2 == 0 ? 0 : 7; // Adjust for serpentine layout
for (int col = 0; col < 8; col++) {
int index = row * 8 + (row % 2 == 0 ? col : (7 - col)); // Calculate LED index
if (bitRead(digitPatterns[digit][row], col)) {
leds[index] = CRGB(19, 0, 128); // Change color as needed
}
}
}
// Show the LEDs
FastLED.show();
}