How would you go about smoothing an always updating value, The code:

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 };
  }
}

On the fade methods, How would you go about smoothing the changes in the values instead of just jumping? If this is possible.

有帮助吗?

解决方案

Instead of this:

value = NewValue

Do something like this:

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

This will cause value to be 7/8 the old value and 1/8 the new value, causing it to gradually "drift" to the new value, rather than jumping there all at once.

其他提示

One option would be to use doubles instead of ints for your RGB (and other) values. And as is mentioned above, 255/100 will give you 2 rather than the 2.55 that you might be expecting.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top