Smooth fades

Introduction

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.

The change from one mode to the other must take 2 seconds, and transitions must always be smooth even if SF is randomly flipped.

Implementation

The solution which follows is simple and robust, using one channel and four mixers.

Start by making a time-based ramp channel, controlled by SF. The transition takes 2 seconds. The use of 'slow' ensures that the ramp always varies smoothly and predictably even as SF is toggled.

CH10:Ramp

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

We can calculate the contribution of each behaviour according to where we are on the 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

Smooth fade demo

Requirements

  • OpenTX 2.2 and above

Files