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

ARC Pro

Upgrade to ARC Pro

Your robot can be more than a simple automated machine with the power of ARC Pro!

#1  

That's great work on the LED eye effects. How thick is the lens ?

#2  

Those are clear cabochons from eBay. Approx 10mm thick at center. Infinity mirror design. Ear stalks are PIR motion sensors.

PRO
Synthiam
#3  

That's awesome! The little antennas on the side of his head give the omnibot an entertaining personality as well. Those big eyes give him the look of curiosity

PRO
United Kingdom
#5  

That is a really neat looking head! Great work.

#7  

@levers , do you have pics of the inside of your omni face , I'm interested as to how everything fits in there.

#9  

So far this blows all other omnibots out of the water.

#10  

Thanks! It's truly amazing the things we can all accomplish these days with some perseverance. These are the early days of the robot revolution! Hopefully we won't be counting on Sarah Connor tho...

#11  

This is an awesome build. I love your creativity of putting those antennas out to the side and lighting them up.

United Kingdom
#12  

I echo the thoughts of everyone else. That's a great looking robot, and loving the Neo ring eyes. Very cool indeed cool. Great job so far.

#13  

how about some pictures of the flip side of the wires coming out of the head and the neck mechanism. You have done a GREAT job so far.

#14  

There is only a ribbon cable and two power wires comming out of the head. That setup makes taking off the head much easier then when it was a bunch of prototype wires.

#16  

Could you give us a link to the PIR (eyestalk sensors) Please?

#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.