From 30cc1dae54b675118a229a3cf081c6c7ef9d8e06 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Fri, 31 Dec 2021 15:58:27 -0700 Subject: [PATCH] C++ version --- .gitignore | 1 + wallart.ino | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 .gitignore create mode 100644 wallart.ino diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..722d5e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vscode diff --git a/wallart.ino b/wallart.ino new file mode 100644 index 0000000..2aacc49 --- /dev/null +++ b/wallart.ino @@ -0,0 +1,95 @@ +#include + +#define NEOPIXEL_PIN 2 +#define GRIDLEN 50 + +#define MILLISECOND 1 +#define SECOND (1000 * MILLISECOND) + +CRGB grid[GRIDLEN]; + +void fade() { + int reps = 300 + random(GRIDLEN); + int hue = random(256); + for (int i = 0; i < reps; i++) { + FastLED.clear(); + for (int pos = 0; pos < 8; pos++) { + grid[(i+pos) % GRIDLEN] = CHSV(hue, 255, pos * 32); + } + FastLED.show(); + delay(80); + } +} + +void singleCursor() { + for (int i = 0; i < 80; i++) { + grid[20] = CHSV(0, 210, 127 * (i%2)); + FastLED.show(); + delay(120); + } +} + +#define NUM_SPARKS 3 +void sparkle() { + int pos[NUM_SPARKS] = {0}; + for (int i = 0; i < 50; i++) { + for (int j = 0; j < NUM_SPARKS; j++) { + pos[j] = random(GRIDLEN); + grid[pos[j]] = CRGB::Gray; + } + FastLED.show(); + for (int j = 0; j < NUM_SPARKS; j++) { + grid[pos[j]] = CRGB::Black; + } + delay(40); + } +} + +#define NUM_GLITCH 4 +#define GLITCH_FRAMES 64 +void glitchPulse() { + int steps[NUM_GLITCH] = {0}; + int pos[NUM_GLITCH] = {0}; + CRGB color[NUM_GLITCH]; + + for (int i = 0; i < NUM_GLITCH; i++) { + steps[i] = GLITCH_FRAMES / NUM_GLITCH * i; + color[i] = CRGB::Brown; + } + + for (int frame = 0; frame < 1000; frame++) { + for (int i = 0; i < NUM_GLITCH; i++) { + if (steps[i] == 0) { + steps[i] = GLITCH_FRAMES; + pos[i] = random(GRIDLEN); + color[i] = CHSV(random(256), 64 + random(64), 255); + } + CRGB c = color[i]; + int bmask = (0xff * steps[i] / 32) & 0xff; + if (steps[i] == GLITCH_FRAMES/2) { + bmask = 0xff - bmask; + } + c.red &= bmask; + c.green &= bmask; + c.blue &= bmask; + grid[pos[i]] = c; + steps[i]--; + } + FastLED.show(); + delay(100); + } + +} + +void setup() { + FastLED.addLeds(grid, GRIDLEN); + FastLED.setBrightness(52); + pinMode(LED_BUILTIN, OUTPUT); +} + +void loop() { + fade(); + singleCursor(); + sparkle(); + glitchPulse(); +} \ No newline at end of file