#include <Adafruit_NeoPixel.h>
#define LEDS_PER_COLUMN 24
#define NUM_COLUMNS 1
//#define NUM_COLUMNS 24
#define NUM_PINS 6
#define COLUMNS_PER_PIN 4
const int pins[NUM_PINS] = {12, 13, 14, 15, 16, 17}; // I pin usati per ciascun gruppo di 4 colonne
Adafruit_NeoPixel strip[NUM_PINS];
uint32_t image[NUM_COLUMNS][LEDS_PER_COLUMN] = {
{0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33, 0x338833, 0xFF8888, 0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF},
//{0x33FF33, 0x88FF88, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33, 0x338833, 0xFF8888, 0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF},
//{0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33, 0x338833, 0xFF8888, 0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF, 0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333},
//{0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33, 0x338833, 0xFF8888, 0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF, 0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8},
//{0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33, 0x338833, 0xFF8888, 0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF, 0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33},
//{0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33, 0x338833, 0xFF8888, 0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF, 0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF},
//{0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33, 0x338833, 0xFF8888, 0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF, 0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF},
//{0xFF8833, 0x88FF33, 0x338833, 0xFF8888, 0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF, 0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF},
//{0x338833, 0xFF8888, 0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF, 0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33},
//{0xFF8888, 0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF, 0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33, 0x338833},
//{0x8888FF, 0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF, 0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33, 0x338833, 0xFF8888},
//{0xFF88FF, 0x33FF33, 0x88FF88, 0x3333FF, 0xFF5733, 0x33FF57, 0x3357FF, 0xFF33A8, 0x33FFF5, 0xFF3333, 0x5733FF, 0xFF33FF, 0x33FF88, 0x3388FF, 0xFFFF33, 0xFF3388, 0x3333FF, 0x8833FF, 0x33FFFF, 0xFF8833, 0x88FF33, 0x338833, 0xFF8888, 0x8888FF},
// ... continua per completare tutte le 24 colonne
};
void setup() {
for (int i = 0; i < NUM_PINS; i++) {
strip[i] = Adafruit_NeoPixel(LEDS_PER_COLUMN * COLUMNS_PER_PIN, pins[i], NEO_GRB + NEO_KHZ800);
strip[i].begin();
strip[i].show();
}
displayImage();
}
void displayImage() {
for (int col = 0; col < NUM_COLUMNS; col++) {
int pinIndex = col / COLUMNS_PER_PIN; // Pin associato al gruppo di colonne
int localCol = col % COLUMNS_PER_PIN; // Colonna all'interno del gruppo
for (int row = 0; row < LEDS_PER_COLUMN; row++) {
uint32_t color = image[col][row];
int ledIndex = localCol * LEDS_PER_COLUMN + row;
strip[pinIndex].setPixelColor(ledIndex, color);
}
}
for (int i = 0; i < NUM_PINS; i++) {
strip[i].show();
}
}
void loop() {
// displayImage();
delay(1000); // Ritardo tra aggiornamenti
}