#include <FastLED.h>
#include "data.h"
#define WIDTH 32 //Ширина матрицы
#define HEIGHT 16 //Высота матрицы
#define LED_PIN 13 //Пин подключения матрицы на ардуино
#define NUM_LEDS (WIDTH * HEIGHT) //Общее количество светодиодов
unsigned char old_brightness = 0;
CRGB leds[NUM_LEDS]; //Массив для светодиодов
void setup() {
FastLED.addLeds<WS2811, LED_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(analogRead(A0) * 0.25);
randomSeed(analogRead(0));
Serial.begin(9600);
for (char i = 0; i < HEIGHT; i++) {
for (char j = 0; j < WIDTH; j++) {
leds[XY(i, j)] = CRGB(pgm_read_byte(&image[i][j][0]), pgm_read_byte(&image[i][j][1]), pgm_read_byte(&image[i][j][2]));
}
}
}
int XY(char x, char y) { //Функция преобразования координат
//Для wokwi
if (y < 16)
return ((16 - x) * 16 - (16 - y));
else
return ((16 - x) * 16 - (16 - y)) + 16 * 15;
//Для реальной матрицы
/*if (y % 2 == 0)
return (y * HEIGHT + (HEIGHT - x - 1));
return (y * HEIGHT + x);*/
}
void loop() {
unsigned char new_brightness = analogRead(A0) * 0.25;
if (abs(new_brightness - old_brightness) > 5){
FastLED.setBrightness(new_brightness);
old_brightness = new_brightness;
}
FastLED.show();
delay(100);
}