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;
|
||||
};
|
56
wallart.ino
56
wallart.ino
|
@ -1,4 +1,5 @@
|
|||
#include <FastLED.h>
|
||||
#include "picker.h"
|
||||
|
||||
#define NEOPIXEL_PIN 2
|
||||
#define GRIDLEN 50
|
||||
|
@ -8,8 +9,8 @@
|
|||
|
||||
CRGB grid[GRIDLEN];
|
||||
|
||||
void fade() {
|
||||
int reps = 300 + random(GRIDLEN);
|
||||
void fade(int cycles = 2) {
|
||||
int reps = (cycles*GRIDLEN) + random(GRIDLEN);
|
||||
int hue = random(256);
|
||||
for (int i = 0; i < reps; i++) {
|
||||
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++) {
|
||||
grid[20] = CHSV(0, 210, 127 * (i%2));
|
||||
FastLED.show();
|
||||
|
@ -29,10 +30,10 @@ void singleCursor() {
|
|||
}
|
||||
|
||||
#define NUM_SPARKS 3
|
||||
void sparkle() {
|
||||
void sparkle(int cycles=50) {
|
||||
int pos[NUM_SPARKS] = {0};
|
||||
for (int i = 0; i < 50; i++) {
|
||||
for (int j = 0; j < NUM_SPARKS; j++) {
|
||||
for (int i = 0; i < cycles; i++) {
|
||||
for (int j = 0; j < GRIDLEN/16; j++) {
|
||||
pos[j] = random(GRIDLEN);
|
||||
grid[pos[j]] = CRGB::Gray;
|
||||
}
|
||||
|
@ -46,7 +47,7 @@ void sparkle() {
|
|||
|
||||
#define NUM_GLITCH 4
|
||||
#define GLITCH_FRAMES 64
|
||||
void glitchPulse() {
|
||||
void glitchPulse(int cycles=1000) {
|
||||
int steps[NUM_GLITCH] = {0};
|
||||
int pos[NUM_GLITCH] = {0};
|
||||
CRGB color[NUM_GLITCH];
|
||||
|
@ -56,7 +57,7 @@ void glitchPulse() {
|
|||
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++) {
|
||||
if (steps[i] == 0) {
|
||||
steps[i] = GLITCH_FRAMES;
|
||||
|
@ -77,7 +78,34 @@ void glitchPulse() {
|
|||
FastLED.show();
|
||||
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() {
|
||||
|
@ -87,8 +115,18 @@ void setup() {
|
|||
}
|
||||
|
||||
void loop() {
|
||||
Picker p;
|
||||
|
||||
if (p.Pick(1)) {
|
||||
fade();
|
||||
singleCursor();
|
||||
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