Smooth fades

Mike Shellim 3 April 2021

Fading is a way of switching smoothly between two different configurations. OpenTX already offers fades - but only between flight modes. So this article shows how to create a fade within a flight mode.

Example

As an example, we'll consider a motor which must operate in two modes, under the control of switch SF.

The change from one state to the other must take 2 seconds. The transition should remain smooth regardless of the state of SF.

Implementation

The solution which follows is simple and robust, using one channel and four mixers. The key is to create a time-based ramp, using a channel and a mix with the following parameters:

CH10:Ramp
+= SF Weight(+50%) Offset(50%) Slow(u=1: d=1) -- fade duration

Next, we calculate the contribution of each end point according to where we are on the ramp, call this ramp%. One end point will contribute Ramp%, and the other (100% - Ramp%). Then we add the contributions, and assign the result to the motor channel. The equation is:

Motor = Thr*(100%-Ramp%) + (-85%)*Ramp%

Ramp% is the simply value of CH10, so we can implement the equation as follows:

CH2:Motor
+= Thr Weight(+100%) -- Thr ...
*= CH10:Ramp Weight(-100%) Offset(100%) -- ... *(100% — Ramp%)
+= CH10:Ramp Weight(-85%) -- -85%*Ramp%

Recall that the output of a mix = offset + source_value*weight. We make use of that in the second line to calculate  '(100% — Ramp%)'.

And that's it.

Here's a demo file:

Download

fade_demo.otx

(For OpenTX 2.2 and above)