平滑一个永远更新的值?

时间:2013-12-08 19:42:15

标签: c++ arduino smooth

如何平滑总是更新的值,代码:

int nLEDs = 25; // Number of LED's 
int sensitivity = 1;

int incomingByte = 0; 
int r = 0;
int g = 0;
int b = 0;
int a = 0;

void loop() {

        if (Serial.available() > 0) {
          incomingByte = Serial.parseInt();
          a = (255 / 100) * (incomingByte * sensitivity);
        }

       // some code 
}

void fade(){
  for(int i=0;i<nLEDs;i++){
   r = a;
   g = 0;
   b = 0;

   FTLEDColour col = { r , g , b };
 }
}

void ColourFade(){
  for(int i=0;i<nLEDs;i++){
   r = a;
   g = 255 - a;
   b = 0;

   FTLEDColour col = { r , g , b };
  }
}

关于淡入淡出方法,你会如何平滑值的变化而不仅仅是跳跃?如果可能的话。

2 个答案:

答案 0 :(得分:1)

而不是:

value = NewValue

做这样的事情:

value = (Value * 7 + NewValue + 7) / 8

这将导致value为旧值的7/8和新值的1/8,导致它逐渐“漂移”到新值,而不是一次跳到那里。

答案 1 :(得分:0)

一种选择是为您的RGB(和其他)值使用双精度而不是整数。如上所述,255/100将为您提供2而不是您可能期望的2.55。