commit 11ec31e09ce87f438535a8b264c69393f6598ec9 Author: gitProtogen Date: Mon Jan 26 08:37:52 2026 +0100 init diff --git a/ball_image.h b/ball_image.h new file mode 100644 index 0000000..9ecd6bc --- /dev/null +++ b/ball_image.h @@ -0,0 +1,299 @@ + +struct Pixel +{ + unsigned short x = 0; + unsigned short y = 0; + uint32_t color; +}; + +Pixel panel_image[16][16] = +{ + { + {0, 0, 0xFF000000}, + {1, 0, 0xFF000000}, + {2, 0, 0xFF000000}, + {3, 0, 0xFF000000}, + {4, 0, 0xFF000000}, + {5, 0, 0xFF000000}, + {6, 0, 0xFF000000}, + {7, 0, 0xFF000000}, + {8, 0, 0xFF000000}, + {9, 0, 0xFF000000}, + {10, 0, 0xFF000000}, + {11, 0, 0xFF000000}, + {12, 0, 0xFF000000}, + {13, 0, 0xFF000000}, + {14, 0, 0xFF000000}, + {15, 0, 0xFF000000} + }, + { + {0, 1, 0xFF000000}, + {1, 1, 0xFF000000}, + {2, 1, 0xFF000000}, + {3, 1, 0xFF000000}, + {4, 1, 0xFF000000}, + {5, 1, 0xFF000000}, + {6, 1, 0xFF000000}, + {7, 1, 0xFF000000}, + {8, 1, 0xFF000000}, + {9, 1, 0xFF000000}, + {10, 1, 0xFF000000}, + {11, 1, 0xFF000000}, + {12, 1, 0xFF000000}, + {13, 1, 0xFF000000}, + {14, 1, 0xFF000000}, + {15, 1, 0xFF000000} + }, + { + {0, 2, 0xFF000000}, + {1, 2, 0xFF000000}, + {2, 2, 0xFF000000}, + {3, 2, 0xFF000000}, + {4, 2, 0xFF000000}, + {5, 2, 0xFFFFFF00}, + {6, 2, 0xFFFFFF00}, + {7, 2, 0xFFFFFF00}, + {8, 2, 0xFFFFFF00}, + {9, 2, 0xFFFFFF00}, + {10, 2, 0xFFFFFF00}, + {11, 2, 0xFF000000}, + {12, 2, 0xFF000000}, + {13, 2, 0xFF000000}, + {14, 2, 0xFF000000}, + {15, 2, 0xFF000000} + }, + { + {0, 3, 0xFF000000}, + {1, 3, 0xFF000000}, + {2, 3, 0xFF000000}, + {3, 3, 0xFFFFFF00}, + {4, 3, 0xFFFFFF00}, + {5, 3, 0xFFFFFF00}, + {6, 3, 0xFFFFFF00}, + {7, 3, 0xFFFFFF00}, + {8, 3, 0xFFFFFF00}, + {9, 3, 0xFFFFFF00}, + {10, 3, 0xFFFFFF00}, + {11, 3, 0xFFFFFF00}, + {12, 3, 0xFFFFFF00}, + {13, 3, 0xFF000000}, + {14, 3, 0xFF000000}, + {15, 3, 0xFF000000} + }, + { + {0, 4, 0xFF000000}, + {1, 4, 0xFF000000}, + {2, 4, 0xFF000000}, + {3, 4, 0xFFFFFF00}, + {4, 4, 0xFFFFFF00}, + {5, 4, 0xFFFFFF00}, + {6, 4, 0xFFFFFF00}, + {7, 4, 0xFFFFFF00}, + {8, 4, 0xFFFFFF00}, + {9, 4, 0xFFFFFF00}, + {10, 4, 0xFFFFFF00}, + {11, 4, 0xFFFFFF00}, + {12, 4, 0xFFFFFF00}, + {13, 4, 0xFF000000}, + {14, 4, 0xFF000000}, + {15, 4, 0xFF000000} + }, + { + {0, 5, 0xFF000000}, + {1, 5, 0xFF000000}, + {2, 5, 0xFFFFFF00}, + {3, 5, 0xFFFFFF00}, + {4, 5, 0xFF000000}, + {5, 5, 0xFF000000}, + {6, 5, 0xFFFFFF00}, + {7, 5, 0xFFFFFF00}, + {8, 5, 0xFFFFFF00}, + {9, 5, 0xFFFFFF00}, + {10, 5, 0xFF000000}, + {11, 5, 0xFF000000}, + {12, 5, 0xFFFFFF00}, + {13, 5, 0xFFFFFF00}, + {14, 5, 0xFF000000}, + {15, 5, 0xFF000000} + }, + { + {0, 6, 0xFF000000}, + {1, 6, 0xFF000000}, + {2, 6, 0xFFFFFF00}, + {3, 6, 0xFFFFFF00}, + {4, 6, 0xFF000000}, + {5, 6, 0xFF000000}, + {6, 6, 0xFFFFFF00}, + {7, 6, 0xFFFFFF00}, + {8, 6, 0xFFFFFF00}, + {9, 6, 0xFFFFFF00}, + {10, 6, 0xFF000000}, + {11, 6, 0xFF000000}, + {12, 6, 0xFFFFFF00}, + {13, 6, 0xFFFFFF00}, + {14, 6, 0xFF000000}, + {15, 6, 0xFF000000} + }, + { + {0, 7, 0xFF000000}, + {1, 7, 0xFF000000}, + {2, 7, 0xFFFFFF00}, + {3, 7, 0xFFFFFF00}, + {4, 7, 0xFF000000}, + {5, 7, 0xFF000000}, + {6, 7, 0xFFFFFF00}, + {7, 7, 0xFFFFFF00}, + {8, 7, 0xFFFFFF00}, + {9, 7, 0xFFFFFF00}, + {10, 7, 0xFF000000}, + {11, 7, 0xFF000000}, + {12, 7, 0xFFFFFF00}, + {13, 7, 0xFFFFFF00}, + {14, 7, 0xFF000000}, + {15, 7, 0xFF000000} + }, + { + {0, 8, 0xFF000000}, + {1, 8, 0xFF000000}, + {2, 8, 0xFFFFFF00}, + {3, 8, 0xFFFFFF00}, + {4, 8, 0xFFFFFF00}, + {5, 8, 0xFFFFFF00}, + {6, 8, 0xFFFFFF00}, + {7, 8, 0xFFFFFF00}, + {8, 8, 0xFFFFFF00}, + {9, 8, 0xFFFFFF00}, + {10, 8, 0xFFFFFF00}, + {11, 8, 0xFFFFFF00}, + {12, 8, 0xFFFFFF00}, + {13, 8, 0xFFFFFF00}, + {14, 8, 0xFF000000}, + {15, 8, 0xFF000000} + }, + { + {0, 9, 0xFF000000}, + {1, 9, 0xFF000000}, + {2, 9, 0xFFFFFF00}, + {3, 9, 0xFFFFFF00}, + {4, 9, 0xFFFFFF00}, + {5, 9, 0xFFFFFF00}, + {6, 9, 0xFFFFFF00}, + {7, 9, 0xFFFFFF00}, + {8, 9, 0xFF000000}, + {9, 9, 0xFF000000}, + {10, 9, 0xFFFFFF00}, + {11, 9, 0xFFFFFF00}, + {12, 9, 0xFFFFFF00}, + {13, 9, 0xFFFFFF00}, + {14, 9, 0xFF000000}, + {15, 9, 0xFF000000} + }, + { + {0, 10, 0xFF000000}, + {1, 10, 0xFF000000}, + {2, 10, 0xFFFFFF00}, + {3, 10, 0xFFFFFF00}, + {4, 10, 0xFFFFFF00}, + {5, 10, 0xFFFFFF00}, + {6, 10, 0xFFFFFF00}, + {7, 10, 0xFF000000}, + {8, 10, 0xFF000000}, + {9, 10, 0xFFFFFF00}, + {10, 10, 0xFF000000}, + {11, 10, 0xFFFFFF00}, + {12, 10, 0xFFFFFF00}, + {13, 10, 0xFFFFFF00}, + {14, 10, 0xFF000000}, + {15, 10, 0xFF000000} + }, + { + {0, 11, 0xFF000000}, + {1, 11, 0xFF000000}, + {2, 11, 0xFF000000}, + {3, 11, 0xFFFFFF00}, + {4, 11, 0xFFFFFF00}, + {5, 11, 0xFFFFFF00}, + {6, 11, 0xFFFFFF00}, + {7, 11, 0xFF000000}, + {8, 11, 0xFF000000}, + {9, 11, 0xFFFFFF00}, + {10, 11, 0xFF000000}, + {11, 11, 0xFFFFFF00}, + {12, 11, 0xFFFFFF00}, + {13, 11, 0xFF000000}, + {14, 11, 0xFF000000}, + {15, 11, 0xFF000000} + }, + { + {0, 12, 0xFF000000}, + {1, 12, 0xFF000000}, + {2, 12, 0xFF000000}, + {3, 12, 0xFFFFFF00}, + {4, 12, 0xFFFFFF00}, + {5, 12, 0xFFFFFF00}, + {6, 12, 0xFFFFFF00}, + {7, 12, 0xFFFFFF00}, + {8, 12, 0xFF000000}, + {9, 12, 0xFF000000}, + {10, 12, 0xFFFFFF00}, + {11, 12, 0xFFFFFF00}, + {12, 12, 0xFFFFFF00}, + {13, 12, 0xFF000000}, + {14, 12, 0xFF000000}, + {15, 12, 0xFF000000} + }, + { + {0, 13, 0xFF000000}, + {1, 13, 0xFF000000}, + {2, 13, 0xFF000000}, + {3, 13, 0xFF000000}, + {4, 13, 0xFF000000}, + {5, 13, 0xFFFFFF00}, + {6, 13, 0xFFFFFF00}, + {7, 13, 0xFFFFFF00}, + {8, 13, 0xFFFFFF00}, + {9, 13, 0xFFFFFF00}, + {10, 13, 0xFFFFFF00}, + {11, 13, 0xFF000000}, + {12, 13, 0xFF000000}, + {13, 13, 0xFF000000}, + {14, 13, 0xFF000000}, + {15, 13, 0xFF000000} + }, + { + {0, 14, 0xFF000000}, + {1, 14, 0xFF000000}, + {2, 14, 0xFF000000}, + {3, 14, 0xFF000000}, + {4, 14, 0xFF000000}, + {5, 14, 0xFF000000}, + {6, 14, 0xFF000000}, + {7, 14, 0xFF000000}, + {8, 14, 0xFF000000}, + {9, 14, 0xFF000000}, + {10, 14, 0xFF000000}, + {11, 14, 0xFF000000}, + {12, 14, 0xFF000000}, + {13, 14, 0xFF000000}, + {14, 14, 0xFF000000}, + {15, 14, 0xFF000000} + }, + { + {0, 15, 0xFF000000}, + {1, 15, 0xFF000000}, + {2, 15, 0xFF000000}, + {3, 15, 0xFF000000}, + {4, 15, 0xFF000000}, + {5, 15, 0xFF000000}, + {6, 15, 0xFF000000}, + {7, 15, 0xFF000000}, + {8, 15, 0xFF000000}, + {9, 15, 0xFF000000}, + {10, 15, 0xFF000000}, + {11, 15, 0xFF000000}, + {12, 15, 0xFF000000}, + {13, 15, 0xFF000000}, + {14, 15, 0xFF000000}, + {15, 15, 0xFF000000} + } +}; diff --git a/ledy.ino b/ledy.ino new file mode 100644 index 0000000..84ae213 --- /dev/null +++ b/ledy.ino @@ -0,0 +1,54 @@ +#include +#ifdef __AVR__ + #include // Required for 16 MHz Adafruit Trinket +#endif + +#include "ball_image.h" + +#define PIN 12 + +#define PANEL_PIXEL_COUNT 16 +#define NUMPIXELS PANEL_PIXEL_COUNT*PANEL_PIXEL_COUNT*3 + +Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); + +void setPixel(unsigned short x, unsigned short y, uint32_t color) +{ + if (y % 2 == 1) + { + x = PANEL_PIXEL_COUNT - 1 - x; + } + pixels.setPixelColor(x + (y * PANEL_PIXEL_COUNT), color); +} + + +void drawPanelImage(int offset_x, int offset_y) { + for (int row = 0; row < 16; row++) { + for (int col = 0; col < 16; col++) { + + if (panel_image[row][col].color == 0) { + continue; + } + + int pixel_x = panel_image[row][col].x + offset_x; + int pixel_y = panel_image[row][col].y + offset_y; + + if (pixel_x >= 0 && pixel_x < PANEL_PIXEL_COUNT && + pixel_y >= 0 && pixel_y < PANEL_PIXEL_COUNT) { + setPixel(pixel_x, pixel_y, panel_image[row][col].color); + } + } + } +} + +void setup() { + pixels.begin(); + + pixels.clear(); + drawPanelImage(0, 0); + pixels.show(); +} + +void loop() { + +}