
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.
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).
La librería Arduino Easing incluye los siguientes ejemplos para ilustrar su uso.
- Example: Ejemplo que muestra el uso de Easing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#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 DocumentosArduinolibraries)
- Relanzar el IDE de Arduino