Make it less visually busy, for living on our wall
This commit is contained in:
parent
3288c10867
commit
0f65cd1f92
|
@ -0,0 +1,16 @@
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "picker.h"
|
||||||
|
|
||||||
|
Picker::Picker() {
|
||||||
|
val = random(1, 256);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Picker::Pick(uint8_t likelihood) {
|
||||||
|
if ((val > 0) && (val <= likelihood)) {
|
||||||
|
val = 0;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
val -= likelihood;
|
||||||
|
return false;
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
class Picker {
|
||||||
|
public:
|
||||||
|
Picker();
|
||||||
|
bool Pick(uint8_t);
|
||||||
|
private:
|
||||||
|
uint8_t val;
|
||||||
|
};
|
62
wallart.ino
62
wallart.ino
|
@ -1,4 +1,5 @@
|
||||||
#include <FastLED.h>
|
#include <FastLED.h>
|
||||||
|
#include "picker.h"
|
||||||
|
|
||||||
#define NEOPIXEL_PIN 2
|
#define NEOPIXEL_PIN 2
|
||||||
#define GRIDLEN 50
|
#define GRIDLEN 50
|
||||||
|
@ -8,8 +9,8 @@
|
||||||
|
|
||||||
CRGB grid[GRIDLEN];
|
CRGB grid[GRIDLEN];
|
||||||
|
|
||||||
void fade() {
|
void fade(int cycles = 2) {
|
||||||
int reps = 300 + random(GRIDLEN);
|
int reps = (cycles*GRIDLEN) + random(GRIDLEN);
|
||||||
int hue = random(256);
|
int hue = random(256);
|
||||||
for (int i = 0; i < reps; i++) {
|
for (int i = 0; i < reps; i++) {
|
||||||
for (int pos = 0; pos < 8; pos++) {
|
for (int pos = 0; pos < 8; pos++) {
|
||||||
|
@ -20,7 +21,7 @@ void fade() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void singleCursor() {
|
void singleCursor(int count = 80) {
|
||||||
for (int i = 0; i < 80; i++) {
|
for (int i = 0; i < 80; i++) {
|
||||||
grid[20] = CHSV(0, 210, 127 * (i%2));
|
grid[20] = CHSV(0, 210, 127 * (i%2));
|
||||||
FastLED.show();
|
FastLED.show();
|
||||||
|
@ -29,10 +30,10 @@ void singleCursor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#define NUM_SPARKS 3
|
#define NUM_SPARKS 3
|
||||||
void sparkle() {
|
void sparkle(int cycles=50) {
|
||||||
int pos[NUM_SPARKS] = {0};
|
int pos[NUM_SPARKS] = {0};
|
||||||
for (int i = 0; i < 50; i++) {
|
for (int i = 0; i < cycles; i++) {
|
||||||
for (int j = 0; j < NUM_SPARKS; j++) {
|
for (int j = 0; j < GRIDLEN/16; j++) {
|
||||||
pos[j] = random(GRIDLEN);
|
pos[j] = random(GRIDLEN);
|
||||||
grid[pos[j]] = CRGB::Gray;
|
grid[pos[j]] = CRGB::Gray;
|
||||||
}
|
}
|
||||||
|
@ -46,7 +47,7 @@ void sparkle() {
|
||||||
|
|
||||||
#define NUM_GLITCH 4
|
#define NUM_GLITCH 4
|
||||||
#define GLITCH_FRAMES 64
|
#define GLITCH_FRAMES 64
|
||||||
void glitchPulse() {
|
void glitchPulse(int cycles=1000) {
|
||||||
int steps[NUM_GLITCH] = {0};
|
int steps[NUM_GLITCH] = {0};
|
||||||
int pos[NUM_GLITCH] = {0};
|
int pos[NUM_GLITCH] = {0};
|
||||||
CRGB color[NUM_GLITCH];
|
CRGB color[NUM_GLITCH];
|
||||||
|
@ -56,7 +57,7 @@ void glitchPulse() {
|
||||||
color[i] = CRGB::Brown;
|
color[i] = CRGB::Brown;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int frame = 0; frame < 1000; frame++) {
|
for (int frame = 0; frame < cycles; frame++) {
|
||||||
for (int i = 0; i < NUM_GLITCH; i++) {
|
for (int i = 0; i < NUM_GLITCH; i++) {
|
||||||
if (steps[i] == 0) {
|
if (steps[i] == 0) {
|
||||||
steps[i] = GLITCH_FRAMES;
|
steps[i] = GLITCH_FRAMES;
|
||||||
|
@ -77,7 +78,34 @@ void glitchPulse() {
|
||||||
FastLED.show();
|
FastLED.show();
|
||||||
delay(100);
|
delay(100);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void conwayish(int cycles=1000) {
|
||||||
|
uint8_t total[GRIDLEN];
|
||||||
|
uint8_t left[GRIDLEN] = {0};
|
||||||
|
uint8_t hue = random(0, 64);
|
||||||
|
|
||||||
|
for (int i = 0; i < GRIDLEN; i++) {
|
||||||
|
total[i] = random(64, 256);
|
||||||
|
left[i] = total[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int frame = 0; frame < cycles; frame++) {
|
||||||
|
for (int i = 0; i < GRIDLEN; i++) {
|
||||||
|
if (left[i] == 0) {
|
||||||
|
left[i] = total[i];
|
||||||
|
if (grid[i].getLuma() == 0) {
|
||||||
|
grid[i].setHSV(hue, 180, 192);
|
||||||
|
} else {
|
||||||
|
grid[i] = CRGB::Black;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
left[i]--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FastLED.show();
|
||||||
|
delay(20);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
|
@ -87,8 +115,18 @@ void setup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
fade();
|
Picker p;
|
||||||
singleCursor();
|
|
||||||
sparkle();
|
if (p.Pick(1)) {
|
||||||
glitchPulse();
|
fade();
|
||||||
|
singleCursor(20);
|
||||||
|
} else if (p.Pick(1)) {
|
||||||
|
sparkle();
|
||||||
|
} else if (p.Pick(4)) {
|
||||||
|
singleCursor();
|
||||||
|
} else if (p.Pick(8)) {
|
||||||
|
conwayish();
|
||||||
|
} else if (p.Pick(8)) {
|
||||||
|
glitchPulse();
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue