102 lines
2.3 KiB
C++
102 lines
2.3 KiB
C++
#include <NeoPixelBus.h>
|
|
#define colorSaturation 10
|
|
|
|
const int dtime=500;
|
|
const int fillp=750;
|
|
|
|
// make sure to set these panel values to the sizes of yours
|
|
const uint8_t PanelWidth = 8; // 8 pixel x 8 pixel matrix of leds
|
|
const uint8_t PanelHeight = 8;
|
|
const uint8_t TileWidth = 3; // laid out in 3 panels x 2 panels mosaic
|
|
const uint8_t TileHeight = 2;
|
|
const uint16_t PixelCount = PanelWidth * PanelHeight * TileWidth * TileHeight;
|
|
const uint16_t width=TileWidth*PanelWidth;
|
|
const uint16_t height=TileHeight*PanelHeight;
|
|
|
|
|
|
uint16_t countX=0;
|
|
uint16_t countY=0;
|
|
|
|
NeoPixelBus<NeoGrbFeature, NeoEsp8266Uart1Ws2812xMethod> strip(PixelCount, D4);
|
|
|
|
typedef ColumnMajorAlternatingLayout MyPanelLayout;
|
|
typedef RowMajorAlternatingLayout MyTilesLayout;
|
|
NeoTiles <MyPanelLayout, MyTilesLayout> tiles(PanelWidth, PanelHeight, TileWidth, TileHeight);
|
|
|
|
RgbColor red(colorSaturation, 0, 0);
|
|
RgbColor green(0, colorSaturation, 0);
|
|
RgbColor blue(0, 0, colorSaturation);
|
|
RgbColor black(0);
|
|
|
|
uint8_t current[height][width];
|
|
uint8_t next[height][width];
|
|
RgbColor rgbNext[height][width];
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
|
|
// Make sure our two arrays are empty
|
|
for(int n=0;n<height;n++) {
|
|
for(int m=0;m<width;m++) {
|
|
current[n][m]=0;
|
|
next[n][m]=0;
|
|
}
|
|
}
|
|
|
|
strip.Begin();
|
|
initGOL();
|
|
displayGOL()
|
|
}
|
|
|
|
void initGOL() {
|
|
int r;
|
|
for(int n=0;n<height;n++) {
|
|
for(int m=0;m<width;m++) {
|
|
r=random(1000);
|
|
if(r<fillp) {
|
|
rgbNext[n][m][0]=random(colorSaturation);
|
|
rgbNext[n][m][1]=random(colorSaturation);
|
|
rgbNext[n][m][2]=random(colorSaturation);
|
|
current[n][m]=1;
|
|
} else {
|
|
rgbNext[n][m][0]=0;
|
|
rgbNext[n][m][1]=0;
|
|
rgbNext[n][m][2]=0;
|
|
current[n][m]=0;
|
|
}
|
|
}
|
|
}
|
|
Serial.println("init done");
|
|
}
|
|
|
|
void updateGOL() {
|
|
|
|
}
|
|
|
|
uint8_t countNeighbours(uint8_t x, uint8_t y) {
|
|
|
|
uint8_t count=0;
|
|
|
|
if(y>0current
|
|
|
|
}
|
|
|
|
void displayGOL() {
|
|
strip.ClearTo(black);
|
|
for(int n=0;n<height;n++) {
|
|
for(int m=0;m<width;m++) {
|
|
strip.SetPixelColor(tiles.Map(m,n), rgbNext[n][m]);
|
|
}
|
|
}
|
|
strip.Show();
|
|
Serial.println("show done");
|
|
}
|
|
|
|
void loop() {
|
|
delay(dtime);
|
|
updateGOL();
|
|
displayGOL();
|
|
// strip.SetPixelColor(tiles.Map(countX,countY), red);
|
|
// strip.Show();
|
|
Serial.println("Next loop");
|
|
}
|