forgot to commit everything...
This commit is contained in:
72
user/RainbowBeat.h
Executable file
72
user/RainbowBeat.h
Executable file
@@ -0,0 +1,72 @@
|
||||
#ifndef RAINBOWBEAT_H
|
||||
#define RAINBOWBEAT_H
|
||||
|
||||
|
||||
#include "ESP8266lib/ext/led/WS2812B.h"
|
||||
|
||||
/**
|
||||
* show rainbow colors using HUE
|
||||
* use only 25% percent brightness
|
||||
* when there is a beat, switch to 100% brightness
|
||||
* and fade back to 25% again
|
||||
*/
|
||||
class RainbowBeat {
|
||||
|
||||
int p1 = 255;
|
||||
int p2 = 63;
|
||||
int fadeOut_ticks = 0;
|
||||
int ticksLeft = 0;
|
||||
uint8_t hue = 0;
|
||||
|
||||
public:
|
||||
|
||||
/** ctor */
|
||||
RainbowBeat() {
|
||||
;
|
||||
}
|
||||
|
||||
/** configure the amounts for idle and beat */
|
||||
void setAmounts(int p1, int p2) {
|
||||
this->p1 = p1;
|
||||
this->p2 = p2;
|
||||
}
|
||||
|
||||
/** show a bight beat for x ticks */
|
||||
void flash(const int duration_ticks) {
|
||||
this->fadeOut_ticks = duration_ticks;
|
||||
this->ticksLeft = duration_ticks;
|
||||
}
|
||||
|
||||
/** show a beat by shifting the hue color */
|
||||
void shift(const int val) {
|
||||
hue += val;
|
||||
}
|
||||
|
||||
/** shift to the given absolute hue */
|
||||
void shiftTo(const int valAbs) {
|
||||
hue = valAbs;
|
||||
}
|
||||
|
||||
/** set hue back to 0 */
|
||||
void restart() {
|
||||
this->hue = 0;
|
||||
}
|
||||
|
||||
/** called from the main */
|
||||
void update() {
|
||||
if (ticksLeft > 0) {--ticksLeft;} // fade-out
|
||||
hue += 1;
|
||||
}
|
||||
|
||||
/** called from the main */
|
||||
Color getCurrent() const {
|
||||
const int percent = (ticksLeft * 100 / fadeOut_ticks);
|
||||
const int val = ((p1 * percent) + (p2 * (100-percent))) / 100;
|
||||
Color c; c.setHSV(hue, 255, val);
|
||||
return c;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // RAINBOWBEAT_H
|
||||
Reference in New Issue
Block a user