use constrain function
This commit is contained in:
parent
b859b30ce4
commit
c05133d8f8
|
@ -55,15 +55,9 @@ void FX_Flash::updateGraphics()
|
||||||
uint16_t _tmpr=_pxr+_r; //add colors
|
uint16_t _tmpr=_pxr+_r; //add colors
|
||||||
uint16_t _tmpg=_pxg+_g;
|
uint16_t _tmpg=_pxg+_g;
|
||||||
uint16_t _tmpb=_pxb+_b;
|
uint16_t _tmpb=_pxb+_b;
|
||||||
if (_tmpr>255){ //clamp
|
_tmpr=constrain(_tmpr,0,255);
|
||||||
_tmpr=255;
|
_tmpg=constrain(_tmpg,0,255);
|
||||||
}
|
_tmpb=constrain(_tmpb,0,255);
|
||||||
if (_tmpg>255){
|
|
||||||
_tmpg=255;
|
|
||||||
}
|
|
||||||
if (_tmpb>255){
|
|
||||||
_tmpb=255;
|
|
||||||
}
|
|
||||||
_strip->setPixelColor(i,_tmpr,_tmpg,_tmpb); //draw pixel
|
_strip->setPixelColor(i,_tmpr,_tmpg,_tmpb); //draw pixel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,15 +49,9 @@ void FX_Scanner::updateGraphics()
|
||||||
uint16_t _tmpr=_pxr+_r; //add colors
|
uint16_t _tmpr=_pxr+_r; //add colors
|
||||||
uint16_t _tmpg=_pxg+_g;
|
uint16_t _tmpg=_pxg+_g;
|
||||||
uint16_t _tmpb=_pxb+_b;
|
uint16_t _tmpb=_pxb+_b;
|
||||||
if (_tmpr>255){ //clamp
|
_tmpr=constrain(_tmpr,0,255);
|
||||||
_tmpr=255;
|
_tmpg=constrain(_tmpg,0,255);
|
||||||
}
|
_tmpb=constrain(_tmpb,0,255);
|
||||||
if (_tmpg>255){
|
|
||||||
_tmpg=255;
|
|
||||||
}
|
|
||||||
if (_tmpb>255){
|
|
||||||
_tmpb=255;
|
|
||||||
}
|
|
||||||
_strip->setPixelColor(i,_tmpr,_tmpg,_tmpb); //draw pixel
|
_strip->setPixelColor(i,_tmpr,_tmpg,_tmpb); //draw pixel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
#include "fx_shootingstar.h"
|
||||||
|
#include "effect.h"
|
||||||
|
|
||||||
|
FX_ShootingStar::FX_ShootingStar(int numpixels,Adafruit_NeoPixel *strip,uint8_t *height)
|
||||||
|
{
|
||||||
|
_numpixels=numpixels;
|
||||||
|
_strip=strip;
|
||||||
|
_starttime=millis();
|
||||||
|
_brightness=0;
|
||||||
|
_flashtime=random(200,3000);
|
||||||
|
_height=height;
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ShootingStar::FX_ShootingStar()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void FX_ShootingStar::updateRoutine(float updatedelayms)
|
||||||
|
{
|
||||||
|
|
||||||
|
float negativelikelihood=pow(( (millis()-_starttime)*1.0/_flashtime ),2); // 0=most likely, 1=unlikely
|
||||||
|
_brightness*=0.2;
|
||||||
|
if (random(0,negativelikelihood*20)==0){
|
||||||
|
_brightness=random(100,255);
|
||||||
|
}
|
||||||
|
//_brightness=(1.0-pow((255-_brightness)/255.0,4))*255.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FX_ShootingStar::updateGraphics()
|
||||||
|
{
|
||||||
|
#define STARTFLASHHEIGHT 100
|
||||||
|
#define BRIGHTFLASHHEIGHT 150
|
||||||
|
for(int i=0;i<_numpixels;i++){
|
||||||
|
if (_height[i]>=STARTFLASHHEIGHT){
|
||||||
|
uint8_t heightbrightness=map(_height[i],STARTFLASHHEIGHT,BRIGHTFLASHHEIGHT,0,255);
|
||||||
|
|
||||||
|
uint8_t _r = 1 >> 16;
|
||||||
|
uint8_t _g = 1 >> 8;
|
||||||
|
uint8_t _b = 1;
|
||||||
|
|
||||||
|
_r*=_brightness/255.0;
|
||||||
|
_g*=_brightness/255.0;
|
||||||
|
_b*=_brightness/255.0;
|
||||||
|
|
||||||
|
_r*=heightbrightness/255.0;
|
||||||
|
_g*=heightbrightness/255.0;
|
||||||
|
_b*=heightbrightness/255.0;
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t _pxcolor=_strip->getPixelColor(i); //get current color of that pixel
|
||||||
|
uint8_t _pxr = _pxcolor >> 16;
|
||||||
|
uint8_t _pxg = _pxcolor >> 8;
|
||||||
|
uint8_t _pxb = _pxcolor;
|
||||||
|
uint16_t _tmpr=_pxr+_r; //add colors
|
||||||
|
uint16_t _tmpg=_pxg+_g;
|
||||||
|
uint16_t _tmpb=_pxb+_b;
|
||||||
|
_tmpr=constrain(_tmpr,0,255);
|
||||||
|
_tmpg=constrain(_tmpr,0,255);
|
||||||
|
_tmpb=constrain(_tmpr,0,255);
|
||||||
|
|
||||||
|
_strip->setPixelColor(i,_tmpr,_tmpg,_tmpb); //draw pixel
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FX_ShootingStar::active()
|
||||||
|
{
|
||||||
|
if (millis()-_starttime>_flashtime){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef FX_SHOOTINGSTAR_H
|
||||||
|
#define FX_SHOOTINGSTAR_H
|
||||||
|
#include <Adafruit_NeoPixel.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include "effect.h"
|
||||||
|
|
||||||
|
class FX_ShootingStar : public Effect
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FX_ShootingStar(int numpixels,Adafruit_NeoPixel *strip,uint8_t *height);
|
||||||
|
FX_ShootingStar();
|
||||||
|
void updateRoutine(float updatedelayms);
|
||||||
|
void updateGraphics();
|
||||||
|
uint32_t Wheel(byte WheelPos,float brightness);
|
||||||
|
bool active();
|
||||||
|
private:
|
||||||
|
int _numpixels;
|
||||||
|
Adafruit_NeoPixel *_strip;
|
||||||
|
long _starttime;
|
||||||
|
uint8_t _brightness;
|
||||||
|
long _flashtime;
|
||||||
|
uint8_t *_height;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue