Gedacht hatte ich
6 Stück WS2815 8 x 32 Pixel zu verarbeiten.
Das macht dann 1536 Pixel. Ups

Bei dieser Größe wollte ich die Spielsteine in eine 6x6 Matrix aufbauen.
Beim ersten Testen auf eine 8 x 8 Matrix (WS2812) sieht das soweit schon schick aus.
Aber die ersten Fragen ergeben sich ja wenn man anfängt.
Mein kleines Testprog
Tetris Steine
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define PIN 6 // On Trinket or Gemma, suggest changing this to 1
#define NUMPIXELS 64 // Popular NeoPixel ring size
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
enum Steinfarbe {SCHWARZ, ROT, GELB, GRUEN, BLAU, PINK};
struct Stein
{
const byte S1;
const byte S2;
const byte S3;
const byte S4;
const byte S5;
const byte S6;
const byte S7;
const byte S8;
Steinfarbe Farbe;
};
const byte Dreh = 4; // Anzeigerichtungen
// Beispiel Stein1 8 mal 8 Matrix
// 7 6 5 4 3 2 1 0
// 0
// 1
// * * 2
// * * 3
// * * * * * * 4
// * * * * * * 5
// 6
// 7
Stein stein1[Dreh] // ****** T *****
{
{0,0,126,126,24,24,0,0, 0}, // 0 Grad
{0,12,12,60,60,12,12,0, 0}, // 90 Grad
{0,0,24,24,126,126,0,0, 0}, // 180 Grad
{0,48,48,60,60,48,48,0, 0} // 270 Grad
};
Stein stein2[Dreh] // ****** J *****
{
{0,0,126,126,96,96,0,0, 0},
{0,60,60,12,12,12,12,0, 0},
{0,0 ,6 ,6,126,126,0,0, 0},
{0,48,48,48,48,60,60,0, 0}
};
Stein stein3[Dreh] // ****** U *****
{
{0,0,102,102,126,126,0,0, 0},
{0,60,60,12,12,60,60,0, 0},
{0,0,126,126,102,102,0,0, 0},
{0,60,60,48,48,60,60,0, 0}
};
Stein stein4[Dreh] // ****** I *****
{
{0,0,0,255,255,0,0,0, 0},
{24,24,24,24,24,24,24,24, 0},
{0,0,0,255,255,0,0,0, 0},
{24,24,24,24,24,24,24,24, 0}
};
Stein stein5[Dreh] // ****** Z S *****
{
{0,0,30,30,120,120,0,0, 0}, // Z
{0,48,48,60,60,12,12,0, 0}, // Z
{0,0,120,120,30,30,0,0, 0}, // S
{0,12,12,60,60,48,48,0, 0} // S
};
Stein stein6[Dreh] // ****** O *****
{
{0,0,60,60,60,60,0,0, 0},
{0,0,60,60,60,60,0,0, 0},
{0,0,60,60,60,60,0,0, 0},
{0,0,60,60,60,60,0,0, 0}
};
Stein stein7[Dreh] // ****** L *****
{
{0,0,126,126,6,6,0,0, 0},
{0,12,12,12,12,60,60,0, 0},
{0,0,96,96,126,126,0,0, 0},
{0,60,60,48,48,48,48,0, 0}
};
byte Richtung;
// Farben //
const uint32_t schwarz = 0x000000;
const uint32_t rot = 0x800000;
const uint32_t gelb = 0x808000;
const uint32_t gruen = 0x008000;
const uint32_t blau = 0x000080;
const uint32_t pink = 0x800080;
void setup() {
Serial.begin(115200);
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin();
delay(2000);
pixels.setBrightness(10);
pixels.clear();
stein7[0].Farbe=1;stein7[1].Farbe=3;stein7[2].Farbe=5;stein7[3].Farbe=2;
}
void loop() {
for(int i = 0; i < NUMPIXELS; i++) {
switch (i) {
case 0 ... 7: if(bitRead(stein7[Richtung].S1, i)) SETPIX(i,stein7[Richtung].Farbe); break; // Reihe 1
case 8 ... 15: if(bitRead(stein7[Richtung].S2, i-8)) SETPIX(i,stein7[Richtung].Farbe); break; // Reihe 2
case 16 ... 23: if(bitRead(stein7[Richtung].S3, i-16)) SETPIX(i,stein7[Richtung].Farbe); break; // Reihe 3
case 24 ... 31: if(bitRead(stein7[Richtung].S4, i-24)) SETPIX(i,stein7[Richtung].Farbe); break; // Reihe 4
case 32 ... 39: if(bitRead(stein7[Richtung].S5, i-32)) SETPIX(i,stein7[Richtung].Farbe); break; // Reihe 5
case 40 ... 47: if(bitRead(stein7[Richtung].S6, i-40)) SETPIX(i,stein7[Richtung].Farbe); break; // Reihe 6
case 48 ... 55: if(bitRead(stein7[Richtung].S7, i-48)) SETPIX(i,stein7[Richtung].Farbe); break; // Reihe 7
case 56 ... 63: if(bitRead(stein7[Richtung].S8, i-56)) SETPIX(i,stein7[Richtung].Farbe); break; // Reihe 8
}
}
pixels.show();
delay(5000);
pixels.clear();
delay(500);
Richtung++;if(Richtung==4) Richtung=0;
}
void SETPIX(byte i,byte Color)
{
switch(Color){ // {SCHWARZ, ROT, GELB, GRUEN, BLAU, PINK};
case 0: pixels.setPixelColor(i, schwarz); break;
case 1: pixels.setPixelColor(i, rot); break;
case 2: pixels.setPixelColor(i, gelb); break;
case 3: pixels.setPixelColor(i, gruen); break;
case 4: pixels.setPixelColor(i, blau); break;
case 5: pixels.setPixelColor(i, pink); break;
}
}
Zum Testen habe ich erstmal 8 mal 8 angenomen, wo ich dann die Pixel für die Spielsteine bestimme. Meine Frage. Wie bekomme ich die einzelnen Steine als Variabel eingebunden.
Zum Ansteuern wird vielleicht ein Mega 2560 reichen. Das ist alles noch Planung und da bin ich auf eure Ratschläge angewiesen.