#include "FastLED.h"
// Matrix size
#define NUM_ROWS 10
#define NUM_COLS 10
// LEDs pin
#define DATA_PIN 3
// LED brightness
#define BRIGHTNESS 180
#define NUM_LEDS NUM_ROWS * NUM_COLS
// Define the array of leds
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
}
void loop() {
DrawRow();
FastLED.clear();
}
void DrawRow() {
int offest = 5; //1...9 < NUM_COLS
int speed = 200;
int y ;
int x ;
for (y = 0; y < NUM_ROWS; y++) {
if (y == 0) {
for (x = 0; x < NUM_COLS; x++ ) {
leds[NUM_ROWS * (NUM_COLS - y) - NUM_ROWS + x] = CRGB::White;
if (x > offest - 1)
{
leds[NUM_ROWS * (NUM_COLS - y) - NUM_ROWS + x] = CRGB::White;
leds[NUM_ROWS * (NUM_COLS - 1 - y) - NUM_ROWS + x - offest] = CRGB::White;
}
FastLED.delay(speed);
FastLED.show();
}
}
else if (y == NUM_ROWS - 1) {
for (x = 5; x < NUM_COLS; x++ ) {
leds[NUM_ROWS * (NUM_COLS - y) - NUM_ROWS + x] = CRGB::White;
FastLED.delay(speed);
FastLED.show();
}
}
else {
for (x = 5; x <= NUM_COLS - 1; x++ ) {
leds[NUM_ROWS * (NUM_COLS - y) - NUM_ROWS + x] = CRGB::White;
leds[NUM_ROWS * (NUM_COLS - 1 - y) - NUM_ROWS + x - offest] = CRGB::White;
FastLED.delay(speed);
FastLED.show();
}
}
}
}