La librería de Arduino Easing implementa funciones para realizar una transición suave entre cambios en una variable. (por ejemplo, para cambiar la velocidad de un motor de forma suave.
Para usarlo, simplemente crear una instancia del objeto ‘Easing’ y usar el operador ’=’ para cambiar el SetPoint. Después emplear la función ‘GetValue()’ para obtener el valor suavizado.
El intervalo de suavizado puede cambiarse o bien durante la creación de la instancia, en el constructor, o en mediante las funciones ‘SetMillisInterval()’ o ‘SetMicrosInterval()‘. Adicionalmente, puede usarse la función ‘Init()’ para cambiar inmediatamente el Setpoint y la variable.
Modos disponibles de uso
Los modos disponibles son los siguientes
LINEAR
EASE_IN_QUAD
EASE_OUT_QUAD
EASE_IN_OUT_QUAD
EASE_IN_CUBIC
EASE_OUT_CUBIC
EASE_IN_OUT_CUBIC
EASE_IN_QUART
EASE_OUT_QUART
EASE_IN_OUT_QUART
EASE_IN_QUINT
EASE_OUT_QUINT
EASE_IN_OUT_QUINT
Orden de la función
Hay disponibles cinco ordenes de funciones (LINEAR, QUAD, CUBIC, QUART, QUINT). Un orden superior implica una zona de tarnsición más suave, pero una mayor pendiente en las partes medias de la transición.
Easing IN, OUT, IN-OUT
Hay disponibles tres modos de transición (IN, OUT, IN-OUT).
Ejemplos
La librería Arduino Easing incluye los siguientes ejemplos para ilustrar su uso.
- Example: Ejemplo que muestra el uso de Easing
#include "EasingLib.h"
int values[8] = { 0, 1000, 4000, 2000, 1000, 3000, 5000, 1000 };
// Default constructor (EASE_IN_OUT_CUBIC, 1000ms)
Easing easing();
// Full constructor
// Easing easing(ease_mode::LINEAR, 500);
void setup()
{
while (!Serial){};
Serial.begin(115200);
for(auto i = 0; i < 240; i++)
{
auto index = i / 30;
float newValue = values[index];
Serial.print(newValue);
Serial.print(',');
Serial.println(easing.SetSetpoint(newValue));
delay(50);
}
}
void loop()
{
}
Instalación
- Descargar la última versión desde GitHub
- Descomprimir el archivo
- Copiar en tu carpeta de librerías (normalmente Mis Documentos\Arduino\libraries)
- Relanzar el IDE de Arduino