-
Notifications
You must be signed in to change notification settings - Fork 1
/
NormalPlay.cpp
60 lines (53 loc) · 1.43 KB
/
NormalPlay.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
* NormalPlay.cpp
*
* Created on: 04.09.2015
* Author: sr
*/
#include "NormalPlay.h"
#include "LedDriver.h"
// HSV Rainbow
extern const TProgmemRGBPalette16 normalPallette PROGMEM = {
0xFFD690, 0xFFD690, 0xFFD690, 0x0000FF,
0xFFD6A0, 0xFFD6A0, 0xFF0000, 0xFF0000,
0x0000FF, 0x0000FF, 0x0000FF, 0xFFD690,
0xFFD690, 0x0000FF, 0x0000FF, 0xFFD690, };
NormalPlay::NormalPlay(const int* index, int num, int animationSpeed, int holdCycles, int pin) :
Effect(0, index, num) {
paletteIndex = 0;
nextUpdate = 0;
this->animationDelay = 1000 / animationSpeed;
this->holdCycles = holdCycles;
this->cycle = 0;
this->giSense = pin;
}
CRGB warmWhite100( 255, 214, 170); // 0xFF, 0xD6, 0xAA
bool NormalPlay::updateLeds(unsigned long now, CRGB* leds) {
if (active) {
// if( digitalRead(this->giSense) == LOW ) {
// CRGB black(0, 0, 0);
// for (int i = 0; i < num; i++) {
// leds[index[i]] = black;
// }
// } else
if( now > nextUpdate) {
nextUpdate = now + animationDelay;
// add a hold at 0, 16, 32
if(( paletteIndex % 16)== 0 ) {
if( cycle++ > holdCycles) {
paletteIndex = paletteIndex + 1;
cycle = 0;
}
} else {
paletteIndex = paletteIndex + 1; /* color motion speed */
}
int colorIndex = paletteIndex;
CRGBPalette16 pal = normalPallette;
for (int i = 0; i < num; i++) {
leds[index[i]] = ColorFromPalette(pal, colorIndex, 255, BLEND);
}
return true;
}
}
return false;
}