Skip to content

NeoPixelAnimator object API

Michael Miller edited this page Nov 10, 2020 · 5 revisions

Constructors

NeoPixelAnimator(uint16_t countAnimations, uint16_t timeScale = NEO_MILLISECONDS)

Construct an animator with the number of animation channels, using the given timescale for all time values.
The timescale is number of milliseconds per time unit. The following flags are available.

NEO_MILLISECONDS // ~65 seconds max duration, ms updates
NEO_CENTISECONDS // ~10.9 minutes max duration, centisecond updates
NEO_DECISECONDS  // ~1.8 hours max duration, decisecond updates
NEO_SECONDS      // ~18.2 hours max duration, second updates
NEO_DECASECONDS  // ~7.5 days, 10 second updates

The timescale affects not only how often the animation can be called per second; but also how long an animation can be. If you need animations that are called often so they are smooth, then leave it at the default of NEO_MILLISECONDS or at worst NEO_CENTISECONDS. If a change per second or longer is ok and you need animations that run very long, then NEO_SECONDS might be your choice. It is a trade off of fast and smooth versus slow and coarse.

Methods

bool IsAnimating()

Return true if there is at least one active running animation.

bool NextAvailableAnimation(uint16_t* indexAvailable, uint16_t indexStart = 0)

Return true if there is an available animation channel, and set the given indexAvailable variable to the channel index.

  • indexAvailable - a pointer to the variable to return the available channel index
  • indexStart - the index to start searching at

void StartAnimation(uint16_t indexAnimation, uint16_t duration, AnimUpdateCallback animUpdate)

Start an animation at the given index, set the length in time to duration, and provide a update callback that apply the effect.

  • indexAnimation - the animation channel to use. If there is an active animation on that channel, it will be stopped first and then the channel will be reused.
  • duration - the length of time the animation will run. The scale is based on the flags passed to the constructor of this manager class.
  • animUpdate - the callback function that will be called for every passage of time.

void StopAnimation(uint16_t indexAnimation)

Stop the animation on the given channel.

  • indexAnimation - the animation channel to stop.

void RestartAnimation(uint16_t indexAnimation)

Without changing any of the parameters of the animation, restart the animation. If the animation was running it will jump to the beginning and then progress from the start.
This provides an easy way to loop an animation if needed.

  • indexAnimation - the animation channel to restart.

bool IsAnimationActive(uint16_t indexAnimation)

Return true if the specified animation channel is running.

  • indexAnimation - the animation channel to check

uint16_t AnimationDuration(uint16_t indexAnimation)

Return the duration of the specified animation channel. The time is based on the flags passed to the constructor of this manager class.

  • indexAnimation - the animation channel to retrieve from.

void ChangeAnimationDuration(uint16_t indexAnimation, uint16_t newDuration);

Called to change the duration that a single animation takes to execute. If the animation was running it will NOT jump to the beginning.

  • indexAnimation - the animation channel to retrieve from.
  • newDuration - the length of time the animation will run. The scale is based on the flags passed to the constructor of this manager class.

void UpdateAnimations()

Called to allow the animations to progress in time. This must be called periodically in the Loop(). Best if called at least once every 10ms but can be called as fast as the loop() runs.

void Pause()

Pause all animations. This will freeze the animations in their current state.

void Resume()

Resume all animations. This will unfreeze the animations from where Pause() was called.

bool IsPaused()

Return if the animations are paused. The Pause() method is called to pause and Resume() is called to resume.

uint16_t getTimeScale()

Return the current time scale.

void setTimeScale(uint16_t timeScale)

Set the current time scale. All currently running animations will be effected by this change, either slowing them down or speeding them up.

  • timeScale - See values explained in the constructor

Structs

AnimationParam

This struct contains three properties that provide state information to the animation callback.

  • float progress - the progress from 0.0 to 1.0 of the animation to apply
  • uint16_t index - the channel index of the animation
  • AnimationState state - the animation state, which can be one of the following...
AnimationState_Started - this is the first call to update, will only be set once unless the animation is restarted.
AnimationState_Progress - this is one of the many calls between the first and last.
AnimationState_Completed - this is the last call to update, will only be set once unless the animation is restarted.
Clone this wiki locally