#include "FastLED.h"
// Matrix size
#define LED_COLS 40
#define LED_ROWS 40
#define NUM_LEDS LED_COLS * LED_ROWS
#define MATRIX_TYPE 1
// LEDs pin
#define DATA_PIN 3
// LED brightness
#define BRIGHTNESS 255
// Define the array of leds
CRGB leds[NUM_LEDS];
void draw() {
uint16_t t = millis() / 60;
for (uint8_t x = 0; x < LED_COLS; x++) {
for (uint8_t y = 0; y < LED_ROWS; y++) {
CRGB col;
col.r = sin8((x + t) - y);
col.g = sin8((x - t) + (y - t));
col.b = sin8(x + (y + t));
leds[XY(x, y)] = col;
}
}
}
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
}
void loop() {
draw();
FastLED.show();
} //loop
uint16_t XY (uint8_t x, uint8_t y) {
if ((y % 2 == 0) || MATRIX_TYPE) // если чётная строка
{
return ((uint32_t)(y + 1) * LED_COLS - 1 - x) % (LED_COLS * LED_ROWS);
}
else // если нечётная строка
{
return ((uint32_t)y * LED_COLS + LED_ROWS - x - 1) % (LED_COLS * LED_ROWS);
}
}