Omnibot 200 Mod Progress

leversofpower

USA

Just thought I'd update you all on my Omnibot EZ-B progress. I'm writing code to control lighting effects using an Arduino mega slaved via serial to the EZ-B. I'm about halfway done with the LED/NeoPixel effects programming.

Sorry for the obnoxious music it's was either that or the sounds of a head cold.

By — Last update
Jump to end

ARC Pro

Upgrade to ARC Pro

Join the ARC Pro community and gain access to a wealth of resources and support, ensuring your robot's success.

#17  

@leversofpower, I am trying to get a neo pixel ring to be controlled thru an Arduino uno from an EZBv4. Do you mind sharing how you have done it? I have the ring running on the uno but I need help with the wiring between the uno and the v4. As well as a EZ script to run/trigger the Arduino script. Thanks

#18  

I second what bhouston has posted. I purchased the neo pixel rings couple of months back thinking v4 could control. Now kinda stuck. Thanks

                             Chris
#19  

Enjoy.


#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "LCD.h"
#include "Compass.h"
#include "LEDPowerButton.h"
#include "Adafruit_NeoPixel.h"

//Sensors
//Compass mainCompass;

//Outputs
LEDPowerButton PowerButton;
//LiquidCrystal_I2C LCDHardware(0x27, 20, 4);
//LCD LCDdisplayManager(&LCDHardware, 20, 4);

//Neo Pixel Eyes
#define eyePIN 2 //Neopixel eyes digital signal
#define leftPIN 4 //5mm NeoPixel left digital signal
#define rightPIN 5 //5mm NeoPixel right digital signal

Adafruit_NeoPixel eyePixels = Adafruit_NeoPixel(32, eyePIN);
Adafruit_NeoPixel earLeftPixel = Adafruit_NeoPixel(32, leftPIN);
Adafruit_NeoPixel earRightPixel = Adafruit_NeoPixel(32, rightPIN);

uint8_t eyeRingAnimationStep;
uint8_t eyeRightAnimationIndex;
uint8_t eyeLeftAnimationIndex;
uint32_t eyeRightPrevAnimationStepTime;
uint32_t eyeLeftPrevAnimationStepTime;

uint8_t earAnimationStep;
uint8_t earRightAnimationIndex;
uint8_t earLeftAnimationIndex;
uint32_t earLeftPrevAnimationStepTime;
uint32_t earRightPrevAnimationStepTime;

uint16_t animationBlinkInterval;
uint32_t animationBlinkPreviousStepTime;
bool playAnimation;

struct neoPixelState
{
    uint16_t DisplayTime;
    uint8_t Red;
    uint8_t Green;
    uint8_t Blue;
};

const int AnimationEarBlueFlashFrames = 8;
neoPixelState AnimationEarBlueFlash[AnimationEarBlueFlashFrames]=
{
    {
        100, //display time
            10, 0, 50
    },
    {
        100,
            10,0,75
        },
        {
            100,
                20,0,100
        },
        {
            100,
                50,10,200
            },
            {
                100,
                    200,100,200
            },
            {
                100,
                    20,0,100
                },
                {
                    100,
                        10,0,50
                }
};

struct neoPixelRingState
{
    uint16_t DisplayTime;

    uint8_t Eye0red;
    uint8_t Eye0green;
    uint8_t Eye0blue;

    uint8_t Eye1red;
    uint8_t Eye1green;
    uint8_t Eye1blue;

    uint8_t Eye2red;
    uint8_t Eye2green;
    uint8_t Eye2blue;

    uint8_t Eye3red;
    uint8_t Eye3green;
    uint8_t Eye3blue;

    uint8_t Eye4red;
    uint8_t Eye4green;
    uint8_t Eye4blue;

    uint8_t Eye5red;
    uint8_t Eye5green;
    uint8_t Eye5blue;

    uint8_t Eye6red;
    uint8_t Eye6green;
    uint8_t Eye6blue;

    uint8_t Eye7red;
    uint8_t Eye7green;
    uint8_t Eye7blue;

    uint8_t Eye8red;
    uint8_t Eye8green;
    uint8_t Eye8blue;

    uint8_t Eye9red;
    uint8_t Eye9green;
    uint8_t Eye9blue;

    uint8_t Eye10red;
    uint8_t Eye10green;
    uint8_t Eye10blue;

    uint8_t Eye11red;
    uint8_t Eye11green;
    uint8_t Eye11blue;

    uint8_t Eye12red;
    uint8_t Eye12green;
    uint8_t Eye12blue;

    uint8_t Eye13red;
    uint8_t Eye13green;
    uint8_t Eye13blue;

    uint8_t Eye14red;
    uint8_t Eye14green;
    uint8_t Eye14blue;

    uint8_t Eye15red;
    uint8_t Eye15green;
    uint8_t Eye15blue;
};

const int AnimationLookRightFrames = 8;
neoPixelRingState AnimationLookRight[AnimationLookRightFrames]=
{
    {
        50, //display time
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255, //90
            0,0,255,
            0,0,255,
            0,0,255, //top
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255, //180
            0,0,255,
            0,0,255,
            0,0,255
    },
    {
        50, //display time
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,100, //90
            0,0,255,
            0,0,255,
            0,0,255, //top
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,   //180
            0,0,255,
            0,0,255,
            0,0,255
        },
        {
            50, //display time
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,100,
                0,0,0, //90
                0,0,100,
                0,0,255,
                0,0,255, //top
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,   //180
                0,0,255,
                0,0,255,
                0,0,255
        },
        {
            50, //display time
                0,0,255,
                0,0,255,
                0,0,100,
                0,0,0,
                0,0,0, //90
                0,0,0,
                0,0,100,
                0,0,255, //top
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,   //180
                0,0,255,
                0,0,255,
                0,0,255
            },
            {
                50, //display time
                    0,0,255,
                    0,0,100,
                    0,0,0,
                    0,0,0,
                    0,0,0, //90
                    0,0,0,
                    0,0,0,
                    0,0,100, //top
                    0,0,255,
                    0,0,255,
                    0,0,255,
                    0,0,255,
                    0,0,255,   //180
                    0,0,255,
                    0,0,255,
                    0,0,255
            },
            {
                50, //display time
                    0,0,100,
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,0, //90
                    0,0,0,
                    0,0,0,
                    0,0,0, //top
                    0,0,100,
                    0,0,255,
                    0,0,255,
                    0,0,255,
                    0,0,255,   //180
                    0,0,255,
                    0,0,255,
                    0,0,255
                },
                {
                    50, //display time
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0, //90
                        0,0,0,
                        0,0,0,
                        0,0,0, //top
                        0,0,0,
                        0,0,100,
                        0,0,255,
                        0,0,255,
                        0,0,255,   //180
                        0,0,255,
                        0,0,255,
                        0,0,100
                },
                {
                    50, //display time
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0, //90
                        0,0,0,
                        0,0,0,
                        0,0,0, //top
                        0,0,0,
                        0,0,100,
                        0,0,255,
                        0,0,255,
                        0,0,255,   //180
                        0,0,100,
                        0,0,50,
                        0,0,0
                    }
};

const int AnimationLookLeftFrames = 8;
neoPixelRingState AnimationLookLeft[AnimationLookLeftFrames]=
{
    {
        50, //display time
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255, //90
            0,0,255,
            0,0,255,
            0,0,255, //top
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255, //180
            0,0,255,
            0,0,255,
            0,0,255
    },
    {
        50, //display time
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255, //90
            0,0,255,
            0,0,255,
            0,0,255, //top
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,100, //180
            0,0,255,
            0,0,255,
            0,0,255
        },
        {
            50, //display time
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255, //90
                0,0,255,
                0,0,255,
                0,0,255, //top
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,100,
                0,0,0, //180
                0,0,100,
                0,0,255,
                0,0,255
        },
        {
            50, //display time
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255, //90
                0,0,255,
                0,0,255,
                0,0,255, //top
                0,0,255,
                0,0,255,
                0,0,100,
                0,0,0,
                0,0,0, //180
                0,0,0,
                0,0,100,
                0,0,255
            },
            {
                50, //display time
                    0,0,255,
                    0,0,255,
                    0,0,255,
                    0,0,255,
                    0,0,255, //90
                    0,0,255,
                    0,0,255,
                    0,0,255, //top
                    0,0,255,
                    0,0,100,
                    0,0,0,
                    0,0,0,
                    0,0,0, //180
                    0,0,0,
                    0,0,0,
                    0,0,100
            },
            {
                50, //display time
                    0,0,100,
                    0,0,255,
                    0,0,255,
                    0,0,255,
                    0,0,255, //90
                    0,0,255,
                    0,0,255,
                    0,0,255, //top
                    0,0,100,
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,0, //180
                    0,0,0,
                    0,0,0,
                    0,0,0
                },
                {
                    50, //display time
                        0,0,0,
                        0,0,100,
                        0,0,255,
                        0,0,255,
                        0,0,255, //90
                        0,0,255,
                        0,0,255,
                        0,0,100, //top
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0, //180
                        0,0,0,
                        0,0,0,
                        0,0,0
                },
                {
                    50, //display time
                        0,0,0,
                        0,0,0,
                        0,0,50,
                        0,0,100,
                        0,0,255, //90
                        0,0,255,
                        0,0,255,
                        0,0,100, //top
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0, //180
                        0,0,0,
                        0,0,0,
                        0,0,0
                    }
};

const int AnimationEyeBlinkFrames = 20;
neoPixelRingState AnimationEyeBlink[AnimationEyeBlinkFrames]=
{
    {
        20, //display time
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,50, //top
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255
    },
    {
        20, //display time
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,50,
            0,0,0, //top
            0,0,50,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255
        }
        ,
        {
            20, //display time
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,50,
                0,0,0,
                0,0,0, //top
                0,0,0,
                0,0,50,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255
        },
        {
            20, //display time
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,50,
                0,0,0,
                0,0,0,
                0,0,0, //top
                0,0,0,
                0,0,0,
                0,0,50,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255
            },
            {
                20, //display time
                    0,0,255,
                    0,0,255,
                    0,0,255,
                    0,0,50,
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,0, //top
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,50,
                    0,0,255,
                    0,0,255,
                    0,0,255,
                    0,0,255
            },
            {
                20, //display time
                    0,0,255,
                    0,0,255,
                    0,0,50,
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,0, //top
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,50,
                    0,0,255,
                    0,0,255,
                    0,0,255
                },
                {
                    20, //display time
                        0,0,255,
                        0,0,50,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0, //top
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,50,
                        0,0,255,
                        0,0,255
                },
                {
                    20, //display time
                        0,0,50,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0, //top
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,50,
                        0,0,255
                    },
                    {
                        20, //display time
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0, //top
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,50
                    },
                    {
                        20, //display time
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0, //top
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0
                        }, //eye closed

                        {
                            400, //display time
                                0,0,50,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0, //top
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,50
                        },
                        {
                            20, //display time
                                0,0,100,
                                0,0,50,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0, //top
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,0,
                                0,0,50,
                                0,0,100
                            },
                            {
                                20, //display time
                                    0,0,255,
                                    0,0,100,
                                    0,0,50,
                                    0,0,0,
                                    0,0,0,
                                    0,0,0,
                                    0,0,0,
                                    0,0,0, //top
                                    0,0,0,
                                    0,0,0,
                                    0,0,0,
                                    0,0,0,
                                    0,0,0,
                                    0,0,50,
                                    0,0,100,
                                    0,0,255
                            },

                            {
                                20, //display time
                                    0,0,255,
                                    0,0,255,
                                    0,0,100,
                                    0,0,50,
                                    0,0,0,
                                    0,0,0,
                                    0,0,0,
                                    0,0,0, //top
                                    0,0,0,
                                    0,0,0,
                                    0,0,0,
                                    0,0,0,
                                    0,0,50,
                                    0,0,100,
                                    0,0,255,
                                    0,0,255
                                },
                                {
                                    20, //display time
                                        0,0,255,
                                        0,0,255,
                                        0,0,255,
                                        0,0,100,
                                        0,0,50,
                                        0,0,0,
                                        0,0,0,
                                        0,0,0, //top
                                        0,0,0,
                                        0,0,0,
                                        0,0,0,
                                        0,0,50,
                                        0,0,100,
                                        0,0,255,
                                        0,0,255,
                                        0,0,255
                                },
                                {
                                    20, //display time
                                        0,0,255,
                                        0,0,255,
                                        0,0,255,
                                        0,0,255,
                                        0,0,100,
                                        0,0,50,
                                        0,0,0,
                                        0,0,0, //top
                                        0,0,0,
                                        0,0,0,
                                        0,0,50,
                                        0,0,100,
                                        0,0,255,
                                        0,0,255,
                                        0,0,255,
                                        0,0,255
                                    },
                                    {
                                        20, //display time
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,100,
                                            0,0,50,
                                            0,0,0, //top
                                            0,0,0,
                                            0,0,50,
                                            0,0,100,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255
                                    },
                                    {
                                        20, //display time
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,100,
                                            0,0,50, //top
                                            0,0,50,
                                            0,0,100,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255,
                                            0,0,255
                                        },
                                        {
                                            20, //display time
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,100, //top
                                                0,0,100,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255
                                        },
                                        {
                                            20, //display time
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255, //top
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255,
                                                0,0,255
                                            }
};

const int AnimationEyeCloseFrames = 10;
neoPixelRingState AnimationEyeClose[AnimationEyeCloseFrames]=
{
    {
        20, //display time
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,50, //top
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255
    },
    {
        20, //display time
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,50,
            0,0,0, //top
            0,0,50,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255,
            0,0,255
        }
        ,
        {
            20, //display time
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,50,
                0,0,0,
                0,0,0, //top
                0,0,0,
                0,0,50,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255
        },
        {
            20, //display time
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,50,
                0,0,0,
                0,0,0,
                0,0,0, //top
                0,0,0,
                0,0,0,
                0,0,50,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255,
                0,0,255
            },
            {
                20, //display time
                    0,0,255,
                    0,0,255,
                    0,0,255,
                    0,0,50,
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,0, //top
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,50,
                    0,0,255,
                    0,0,255,
                    0,0,255,
                    0,0,255
            },
            {
                20, //display time
                    0,0,255,
                    0,0,255,
                    0,0,50,
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,0, //top
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,0,
                    0,0,50,
                    0,0,255,
                    0,0,255,
                    0,0,255
                },
                {
                    20, //display time
                        0,0,255,
                        0,0,50,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0, //top
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,50,
                        0,0,255,
                        0,0,255
                },
                {
                    20, //display time
                        0,0,50,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0, //top
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,0,
                        0,0,50,
                        0,0,255
                    },
                    {
                        20, //display time
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0, //top
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,50
                    },
                    {
                        20, //display time
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0, //top
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0,
                            0,0,0
                        } //eye closed

};



void setup(){
    initializeHardware();

    //LCDdisplayManager.addMessage("Initializing...");
    //LCDdisplayManager.addMessage("November, 7th 2014");
    //LCDdisplayManager.addMessage("Omnibot 2015");
}

void initializeHardware(){
    Serial.begin(9600);
    Serial1.begin(9600); //Link to EZ-B v4

    pinMode(3, OUTPUT);
    PowerButton.init(3);

    //LCDHardware.init();
    //LCDHardware.backlight();
    //LCDdisplayManager.setUpdateInterval(500);

    //Neo Pixel Eyes
    eyeRightAnimationIndex = 0;
    eyeLeftAnimationIndex = 0;
    earRightAnimationIndex = 0;
    earLeftAnimationIndex = 0;
    eyeRingAnimationStep = 0;
    playAnimation = false;
    animationBlinkInterval = random(3000, 18000);

    eyePixels.begin();
    eyePixels.setBrightness(7); // 1/3 brightness 60 max?

    earLeftPixel.begin();
    earLeftPixel.setBrightness(80);
    earLeftPixel.setPixelColor(0, 10, 0, 50);
    earLeftPixel.show();

    earRightPixel.begin();
    earRightPixel.setBrightness(80);
    earRightPixel.setPixelColor(0, 10, 0, 50);
    earRightPixel.show();
}

void loop(){
    if (Serial.available()) {
        char serialChar = Serial.read();

        switch (serialChar) {
        case '1':
            eyeRingAnimationStep = 1;
            break;
        case '2':
            eyeRingAnimationStep = 2;
            break;
        case '3':
            eyeRingAnimationStep = 3;
            break;
        case '4':
            eyeRingAnimationStep = 4;
            break;
        case 'a':
            earAnimationStep = 1;
            break;
        case 'b':
            earAnimationStep = 2;
            break;
        case 'c':
            earAnimationStep = 3;
            break;
        }
    }

    uint32_t timeBetweenAnimationSteps;
    timeBetweenAnimationSteps = millis();


    //LCDdisplayManager.update();
    //mainCompass.update();
    PowerButton.update();

    //Eye Ring Animation Steps
    //On power up fade in both eyes
    if (eyeRingAnimationStep == 1){
        if (EyeBothFadeIn() == true){eyeRingAnimationStep = 0;}
    }

    if (eyeRingAnimationStep == 2){
        bool EyeRightLookRight_animationComplete = EyeRightLookRight(timeBetweenAnimationSteps);
        bool EyeLeftLookRight_animationComplete = EyeLeftLookRight(timeBetweenAnimationSteps);
        if (EyeLeftLookRight_animationComplete == true && EyeRightLookRight_animationComplete == true) {eyeRingAnimationStep = 0;}
    }

    if (eyeRingAnimationStep == 3){
        //look left
        bool EyeRightLookLeft_animationComplete = EyeRightLookLeft(timeBetweenAnimationSteps);
        bool EyeLeftLookLeft_animationComplete = EyeLeftLookLeft(timeBetweenAnimationSteps);
        if(EyeRightLookLeft_animationComplete == true && EyeLeftLookLeft_animationComplete == true) {eyeRingAnimationStep = 0;}
    }

    //Eye Ring Loop Animations
    if (eyeRingAnimationStep == 4){
        //Eye blink timming
        if((timeBetweenAnimationSteps - animationBlinkPreviousStepTime) > animationBlinkInterval) {
            animationBlinkInterval = random(1000, 12000);
            playAnimation = true;    
            animationBlinkPreviousStepTime = timeBetweenAnimationSteps;
        }
        //Check for completed blink
        if (playAnimation == true){
            bool EyeRightBlink_animationComplete = EyeRightBlink(timeBetweenAnimationSteps);
            bool EyeLeftBlink_animationComplete = EyeLeftBlink(timeBetweenAnimationSteps);

            if (EyeRightBlink_animationComplete == true && EyeLeftBlink_animationComplete == true){
                playAnimation = false;
            }
        }
    }

    //Ear Aminations
    if (earAnimationStep == 1){
        //Flash ears
        bool EarRightAnimationFlash_animationComplete = EarRightAnimationFlash(timeBetweenAnimationSteps);
        bool EarLEftAnimationFlash_animationComplete = EarLeftAnimationFlash(timeBetweenAnimationSteps);
        if(EarRightAnimationFlash_animationComplete == true && EarLEftAnimationFlash_animationComplete == true) {earAnimationStep = 0;}
    }
    //Flash Left Ear
    if (earAnimationStep == 2){
        //Flash ears
        bool EarLEftAnimationFlash_animationComplete = EarLeftAnimationFlash(timeBetweenAnimationSteps);
        if(EarLEftAnimationFlash_animationComplete == true) {earAnimationStep = 0;}
    }
    //Flash Right Ear
    if (earAnimationStep == 3){
        //Flash ears
        bool EarRightAnimationFlash_animationComplete = EarRightAnimationFlash(timeBetweenAnimationSteps);
        if(EarRightAnimationFlash_animationComplete == true) {earAnimationStep = 0;}
    }

}

bool EarRightAnimationFlash(uint32_t timeBetweenAnimationSteps){    
    if((timeBetweenAnimationSteps - earRightPrevAnimationStepTime) > AnimationEarBlueFlash[earRightAnimationIndex].DisplayTime) {
        //Set Color of neo pixel
        earRightPixel.setPixelColor(0,  
            AnimationEarBlueFlash[earRightAnimationIndex].Red,
            AnimationEarBlueFlash[earRightAnimationIndex].Green,
            AnimationEarBlueFlash[earRightAnimationIndex].Blue);

        earRightPixel.show();
        earRightAnimationIndex++;
        earRightPrevAnimationStepTime = timeBetweenAnimationSteps;
    }

    if (earRightAnimationIndex > (AnimationEarBlueFlashFrames - 1)){
        // -1 to account zero based index
        earRightAnimationIndex = 0;
        return true;
    }
    else{
        return false;
    }    
};
bool EarLeftAnimationFlash(uint32_t timeBetweenAnimationSteps){    
    if((timeBetweenAnimationSteps - earLeftPrevAnimationStepTime) > AnimationEarBlueFlash[earLeftAnimationIndex].DisplayTime) {
        //Set Color of neo pixel
        earLeftPixel.setPixelColor(0,  
            AnimationEarBlueFlash[earLeftAnimationIndex].Red,
            AnimationEarBlueFlash[earLeftAnimationIndex].Green,
            AnimationEarBlueFlash[earLeftAnimationIndex].Blue);

        earLeftPixel.show();
        earLeftAnimationIndex++;
        earLeftPrevAnimationStepTime = timeBetweenAnimationSteps;
    }

    if (earLeftAnimationIndex > (AnimationEarBlueFlashFrames - 1)){
        // -1 to account zero based index
        earLeftAnimationIndex = 0;
        return true;
    }
    else{
        return false;
    }    
};

bool EyeRightLookLeft(uint32_t timeBetweenAnimationSteps){
    if((timeBetweenAnimationSteps - eyeRightPrevAnimationStepTime) > AnimationLookLeft[eyeRightAnimationIndex].DisplayTime) {
        //Set Color of neo pixel
        eyePixels.setPixelColor(0,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye0red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye0green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye0blue);

        eyePixels.setPixelColor(1,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye1red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye1green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye1blue);

        eyePixels.setPixelColor(2,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye2red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye2green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye2blue);

        eyePixels.setPixelColor(3,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye3red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye3green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye3blue);

        eyePixels.setPixelColor(4,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye4red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye4green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye4blue);

        eyePixels.setPixelColor(5,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye5red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye5green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye5blue);

        eyePixels.setPixelColor(6,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye6red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye6green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye6blue);

        eyePixels.setPixelColor(7,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye7red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye7green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye7blue);

        eyePixels.setPixelColor(8,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye8red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye8green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye8blue);

        eyePixels.setPixelColor(9,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye9red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye9green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye9blue);

        eyePixels.setPixelColor(10,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye10red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye10green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye10blue);

        eyePixels.setPixelColor(11,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye11red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye11green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye11blue);

        eyePixels.setPixelColor(12,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye12red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye12green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye12blue);

        eyePixels.setPixelColor(13,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye13red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye13green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye13blue);

        eyePixels.setPixelColor(14,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye14red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye14green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye14blue);

        eyePixels.setPixelColor(15,  
            AnimationLookLeft[eyeRightAnimationIndex].Eye15red,
            AnimationLookLeft[eyeRightAnimationIndex].Eye15green,
            AnimationLookLeft[eyeRightAnimationIndex].Eye15blue);

        eyePixels.show();
        eyeRightAnimationIndex++;
        eyeRightPrevAnimationStepTime = timeBetweenAnimationSteps;
    }

    if (eyeRightAnimationIndex > (AnimationLookLeftFrames - 1)){
        // -1 to account zero based index
        eyeRightAnimationIndex = 0;
        return true;
    }
    else{
        return false;
    }    

}
bool EyeLeftLookLeft(uint32_t timeBetweenAnimationSteps){
    if((timeBetweenAnimationSteps - eyeLeftPrevAnimationStepTime) > AnimationLookLeft[eyeLeftAnimationIndex].DisplayTime) {
        //Set Color of neo pixel
        eyePixels.setPixelColor(16,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye0red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye0green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye0blue);

        eyePixels.setPixelColor(17,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye1red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye1green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye1blue);

        eyePixels.setPixelColor(18,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye2red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye2green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye2blue);

        eyePixels.setPixelColor(19,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye3red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye3green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye3blue);

        eyePixels.setPixelColor(20,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye4red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye4green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye4blue);

        eyePixels.setPixelColor(21,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye5red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye5green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye5blue);

        eyePixels.setPixelColor(22,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye6red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye6green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye6blue);

        eyePixels.setPixelColor(23,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye7red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye7green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye7blue);

        eyePixels.setPixelColor(24,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye8red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye8green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye8blue);

        eyePixels.setPixelColor(25,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye9red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye9green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye9blue);

        eyePixels.setPixelColor(26,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye10red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye10green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye10blue);

        eyePixels.setPixelColor(27,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye11red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye11green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye11blue);

        eyePixels.setPixelColor(28,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye12red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye12green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye12blue);

        eyePixels.setPixelColor(29,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye13red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye13green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye13blue);

        eyePixels.setPixelColor(30,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye14red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye14green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye14blue);

        eyePixels.setPixelColor(31,  
            AnimationLookLeft[eyeLeftAnimationIndex].Eye15red,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye15green,
            AnimationLookLeft[eyeLeftAnimationIndex].Eye15blue);

        eyePixels.show();
        eyeLeftAnimationIndex++;
        eyeLeftPrevAnimationStepTime = timeBetweenAnimationSteps;
    }

    if (eyeLeftAnimationIndex > (AnimationLookLeftFrames - 1)){
        // -1 to account zero based index
        eyeLeftAnimationIndex = 0;
        return true;
    }
    else{
        return false;
    }

}

bool EyeLeftLookRight(uint32_t timeBetweenAnimationSteps){
    if((timeBetweenAnimationSteps - eyeLeftPrevAnimationStepTime) > AnimationLookRight[eyeLeftAnimationIndex].DisplayTime) {
        //Set Color of neo pixel
        eyePixels.setPixelColor(16,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye0red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye0green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye0blue);

        eyePixels.setPixelColor(17,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye1red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye1green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye1blue);

        eyePixels.setPixelColor(18,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye2red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye2green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye2blue);

        eyePixels.setPixelColor(19,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye3red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye3green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye3blue);

        eyePixels.setPixelColor(20,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye4red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye4green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye4blue);

        eyePixels.setPixelColor(21,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye5red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye5green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye5blue);

        eyePixels.setPixelColor(22,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye6red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye6green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye6blue);

        eyePixels.setPixelColor(23,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye7red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye7green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye7blue);

        eyePixels.setPixelColor(24,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye8red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye8green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye8blue);

        eyePixels.setPixelColor(25,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye9red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye9green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye9blue);

        eyePixels.setPixelColor(26,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye10red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye10green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye10blue);

        eyePixels.setPixelColor(27,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye11red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye11green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye11blue);

        eyePixels.setPixelColor(28,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye12red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye12green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye12blue);

        eyePixels.setPixelColor(29,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye13red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye13green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye13blue);

        eyePixels.setPixelColor(30,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye14red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye14green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye14blue);

        eyePixels.setPixelColor(31,  
            AnimationLookRight[eyeLeftAnimationIndex].Eye15red,
            AnimationLookRight[eyeLeftAnimationIndex].Eye15green,
            AnimationLookRight[eyeLeftAnimationIndex].Eye15blue);

        eyePixels.show();
        eyeLeftAnimationIndex++;
        eyeLeftPrevAnimationStepTime = timeBetweenAnimationSteps;
    }

    if (eyeLeftAnimationIndex > (AnimationLookRightFrames - 1)){
        // -1 to account zero based index
        eyeLeftAnimationIndex = 0;
        return true;
    }
    else{
        return false;
    }    
}
bool EyeRightLookRight(uint32_t timeBetweenAnimationSteps){
    if((timeBetweenAnimationSteps - eyeRightPrevAnimationStepTime) > AnimationLookRight[eyeRightAnimationIndex].DisplayTime) {
        //Set Color of neo pixel
        eyePixels.setPixelColor(0,  
            AnimationLookRight[eyeRightAnimationIndex].Eye0red,
            AnimationLookRight[eyeRightAnimationIndex].Eye0green,
            AnimationLookRight[eyeRightAnimationIndex].Eye0blue);

        eyePixels.setPixelColor(1,  
            AnimationLookRight[eyeRightAnimationIndex].Eye1red,
            AnimationLookRight[eyeRightAnimationIndex].Eye1green,
            AnimationLookRight[eyeRightAnimationIndex].Eye1blue);

        eyePixels.setPixelColor(2,  
            AnimationLookRight[eyeRightAnimationIndex].Eye2red,
            AnimationLookRight[eyeRightAnimationIndex].Eye2green,
            AnimationLookRight[eyeRightAnimationIndex].Eye2blue);

        eyePixels.setPixelColor(3,  
            AnimationLookRight[eyeRightAnimationIndex].Eye3red,
            AnimationLookRight[eyeRightAnimationIndex].Eye3green,
            AnimationLookRight[eyeRightAnimationIndex].Eye3blue);

        eyePixels.setPixelColor(4,  
            AnimationLookRight[eyeRightAnimationIndex].Eye4red,
            AnimationLookRight[eyeRightAnimationIndex].Eye4green,
            AnimationLookRight[eyeRightAnimationIndex].Eye4blue);

        eyePixels.setPixelColor(5,  
            AnimationLookRight[eyeRightAnimationIndex].Eye5red,
            AnimationLookRight[eyeRightAnimationIndex].Eye5green,
            AnimationLookRight[eyeRightAnimationIndex].Eye5blue);

        eyePixels.setPixelColor(6,  
            AnimationLookRight[eyeRightAnimationIndex].Eye6red,
            AnimationLookRight[eyeRightAnimationIndex].Eye6green,
            AnimationLookRight[eyeRightAnimationIndex].Eye6blue);

        eyePixels.setPixelColor(7,  
            AnimationLookRight[eyeRightAnimationIndex].Eye7red,
            AnimationLookRight[eyeRightAnimationIndex].Eye7green,
            AnimationLookRight[eyeRightAnimationIndex].Eye7blue);

        eyePixels.setPixelColor(8,  
            AnimationLookRight[eyeRightAnimationIndex].Eye8red,
            AnimationLookRight[eyeRightAnimationIndex].Eye8green,
            AnimationLookRight[eyeRightAnimationIndex].Eye8blue);

        eyePixels.setPixelColor(9,  
            AnimationLookRight[eyeRightAnimationIndex].Eye9red,
            AnimationLookRight[eyeRightAnimationIndex].Eye9green,
            AnimationLookRight[eyeRightAnimationIndex].Eye9blue);

        eyePixels.setPixelColor(10,  
            AnimationLookRight[eyeRightAnimationIndex].Eye10red,
            AnimationLookRight[eyeRightAnimationIndex].Eye10green,
            AnimationLookRight[eyeRightAnimationIndex].Eye10blue);

        eyePixels.setPixelColor(11,  
            AnimationLookRight[eyeRightAnimationIndex].Eye11red,
            AnimationLookRight[eyeRightAnimationIndex].Eye11green,
            AnimationLookRight[eyeRightAnimationIndex].Eye11blue);

        eyePixels.setPixelColor(12,  
            AnimationLookRight[eyeRightAnimationIndex].Eye12red,
            AnimationLookRight[eyeRightAnimationIndex].Eye12green,
            AnimationLookRight[eyeRightAnimationIndex].Eye12blue);

        eyePixels.setPixelColor(13,  
            AnimationLookRight[eyeRightAnimationIndex].Eye13red,
            AnimationLookRight[eyeRightAnimationIndex].Eye13green,
            AnimationLookRight[eyeRightAnimationIndex].Eye13blue);

        eyePixels.setPixelColor(14,  
            AnimationLookRight[eyeRightAnimationIndex].Eye14red,
            AnimationLookRight[eyeRightAnimationIndex].Eye14green,
            AnimationLookRight[eyeRightAnimationIndex].Eye14blue);

        eyePixels.setPixelColor(15,  
            AnimationLookRight[eyeRightAnimationIndex].Eye15red,
            AnimationLookRight[eyeRightAnimationIndex].Eye15green,
            AnimationLookRight[eyeRightAnimationIndex].Eye15blue);

        eyePixels.show();
        eyeRightAnimationIndex++;
        eyeRightPrevAnimationStepTime = timeBetweenAnimationSteps;
    }

    if (eyeRightAnimationIndex > (AnimationLookRightFrames - 1)){
        // -1 to account zero based index
        eyeRightAnimationIndex = 0;
        return true;
    }
    else{
        return false;
    }    
}

bool EyeRightBlink(uint32_t timeBetweenAnimationSteps) {
    if((timeBetweenAnimationSteps - eyeRightPrevAnimationStepTime) > AnimationEyeBlink[eyeRightAnimationIndex].DisplayTime) {
        //Set Color of neo pixel
        eyePixels.setPixelColor(0,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye0red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye0green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye0blue);

        eyePixels.setPixelColor(1,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye1red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye1green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye1blue);

        eyePixels.setPixelColor(2,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye2red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye2green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye2blue);

        eyePixels.setPixelColor(3,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye3red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye3green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye3blue);

        eyePixels.setPixelColor(4,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye4red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye4green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye4blue);

        eyePixels.setPixelColor(5,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye5red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye5green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye5blue);

        eyePixels.setPixelColor(6,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye6red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye6green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye6blue);

        eyePixels.setPixelColor(7,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye7red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye7green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye7blue);

        eyePixels.setPixelColor(8,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye8red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye8green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye8blue);

        eyePixels.setPixelColor(9,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye9red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye9green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye9blue);

        eyePixels.setPixelColor(10,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye10red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye10green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye10blue);

        eyePixels.setPixelColor(11,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye11red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye11green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye11blue);

        eyePixels.setPixelColor(12,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye12red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye12green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye12blue);

        eyePixels.setPixelColor(13,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye13red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye13green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye13blue);

        eyePixels.setPixelColor(14,  
            AnimationEyeBlink[eyeRightAnimationIndex].Eye14red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye14green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye14blue);

        eyePixels.setPixelColor(15,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye15red,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye15green,
            AnimationEyeBlink[eyeRightAnimationIndex].Eye15blue);

        eyePixels.show();
        eyeRightAnimationIndex++;
        eyeRightPrevAnimationStepTime = timeBetweenAnimationSteps;
    }

    if (eyeRightAnimationIndex > (AnimationEyeBlinkFrames - 1)){
        // -1 to account zero based index
        eyeRightAnimationIndex = 0;
        return true;
    }
    else{
        return false;
    }    
}
bool EyeLeftBlink(uint32_t timeBetweenAnimationSteps) {
    if((timeBetweenAnimationSteps - eyeLeftPrevAnimationStepTime) > AnimationEyeBlink[eyeLeftAnimationIndex].DisplayTime) {
        //Set Color of neo pixel
        eyePixels.setPixelColor(16,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye0red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye0green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye0blue);

        eyePixels.setPixelColor(17,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye1red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye1green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye1blue);

        eyePixels.setPixelColor(18,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye2red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye2green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye2blue);

        eyePixels.setPixelColor(19,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye3red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye3green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye3blue);

        eyePixels.setPixelColor(20,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye4red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye4green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye4blue);

        eyePixels.setPixelColor(21,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye5red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye5green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye5blue);

        eyePixels.setPixelColor(22,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye6red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye6green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye6blue);

        eyePixels.setPixelColor(23,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye7red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye7green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye7blue);

        eyePixels.setPixelColor(24,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye8red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye8green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye8blue);

        eyePixels.setPixelColor(25,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye9red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye9green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye9blue);

        eyePixels.setPixelColor(26,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye10red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye10green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye10blue);

        eyePixels.setPixelColor(27,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye11red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye11green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye11blue);

        eyePixels.setPixelColor(28,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye12red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye12green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye12blue);

        eyePixels.setPixelColor(29,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye13red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye13green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye13blue);

        eyePixels.setPixelColor(30,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye14red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye14green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye14blue);

        eyePixels.setPixelColor(31,  
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye15red,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye15green,
            AnimationEyeBlink[eyeLeftAnimationIndex].Eye15blue);

        eyePixels.show();
        eyeLeftAnimationIndex++;
        eyeLeftPrevAnimationStepTime = timeBetweenAnimationSteps;
    }

    if (eyeLeftAnimationIndex > (AnimationEyeBlinkFrames - 1)){
        // -1 to account zero based index
        eyeLeftAnimationIndex = 0;
        return true;
    }
    else{
        return false;
    }    
}

bool EyeBothFadeIn(){
    uint8_t blue;
    blue = 0;
    for (int i = 0; i < 255; i++)
    {
        for(int i=0; i<32; i++){
            eyePixels.setPixelColor(i, 0,0,blue);
        }
        blue++;
        eyePixels.show();
        delay(2);
    }
    return true;
}
#20  

If that isn't enough give me your email and i'll send you zipped project.