/* Arduino 96 RGB LEDs Matrix Animation Frame 
 * Using WS2812 LED Strips
*/

#include <avr/pgmspace.h>  // Needed to store stuff in Flash using PROGMEM
#include "FastLED.h"       // Fastled library to control the LEDs

// How many leds are connected?
#define NUM_LEDS 96  // TOTAL number of LEDs in Strip.

// Define the Data Pin
#define DATA_PIN 12  // Connected to the data pin of the first LED strip
//
/*Define input for Microphone on Digital Pin 13.
int ledPin=12;
int sensorPin=13;
boolean val =0;
*/
// Define the message input buttons....
//................Define the pushbutton panel Analog Inputs .................
const int but0 = 3; // Assign variable names of button numbers to inputs.
const int but1 = 4;
const int but2 = 5;
const int but3 = 6;
const int but4 = 7;
const int but5 = 8;
const int but6 = 9;
const int but7 = 10;
//
int but0state = 0; // define a variable to follow if button is being pushed.
int but1state = 0;
int but2state = 0;
int but3state = 0;
int but4state = 0;
int but5state = 0;
int but6state = 0;
int but7state = 0; 

// Define the array of leds
CRGB leds[NUM_LEDS];

// Create the array of retro arcade characters and store it in Flash memory
const long Heart01[] PROGMEM =
{
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,
0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,
0x000000,0x000000,0x000000,0x000000,0x000000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
};

const long Heart02[] PROGMEM =
{
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,
0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,
0x000000,0x000000,0x000000,0x000000,0x000000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0xcccccc,0x000000,0x000000,0x000000,0xcccccc,0xcccccc,0xcccccc,0x000000,0x000000,0x000000,0xcccccc,0x000000,0xcccccc,0x000000,0xcccccc,
};

const long Heart03[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0xcccccc,0x000000,
0x000000,0x000000,0x000000,0x000000,0xcccccc,0xcccccc,0xcccccc,0x000000,0xcccccc,0x000000,0xcccccc,0x000000,0xcccccc,0x000000,0x000000,0x000000,
0x000000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,
0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,
0x000000,0x000000,0x000000,0x000000,0x000000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0xcccccc,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0xcccccc,0x000000,0x000000,0x000000,0x000000,0xcccccc,0xcccccc,0x000000,0x000000,0x000000,0xcccccc,0xcccccc,0xcccccc,0xcccccc,0x000000,
};

const long Heart04[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0xcccccc,0x000000,0x000000,0x000000,0x000000,0x000000,0xcccccc,0xcccccc,0xcccccc,0x000000,0xcccccc,0x000000,0xcccccc,0x000000,
0xcccccc,0x000000,0x000000,0x000000,0x000000,0xcccccc,0x000000,0x000000,0x000000,0x000000,0xcccccc,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,
0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,
0x000000,0x000000,0x000000,0x000000,0x000000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0xcccccc,0x000000,0x000000,0x000000,0x000000,0x000000,
0xcccccc,0xcccccc,0xcccccc,0x000000,0xcccccc,0xcccccc,0xcccccc,0xcccccc,0xcccccc,0x000000,0x000000,0xcccccc,0x000000,0xcccccc,0x000000,0xcccccc,
};

const long Heart05[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,
0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,0xff0000,
0x000000,0x000000,0x000000,0x000000,0x000000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0xff0000,0x000000,
0xff0000,0xff0000,0xff0000,0xff0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0xff0000,0x000000,0xff0000,0xff0000,0xff0000,0xff0000,
};

const long EyesOpen[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x009900,0x009900,0x009900,
0x000000,0x000000,0x000000,0x009900,0x009900,0x000000,0x009900,0x009900,0x009900,0x000000,0x000000,0x000000,0x009900,0x000000,0x000000,0x009900,
0x009900,0x000000,0x009900,0x009900,0x000000,0x009900,0x009900,0x009900,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x009900,0x009900,0x009900,0x000000,0x009900,0x009900,0x000000,0x009900,
0x009900,0x000000,0x000000,0x009900,0x000000,0x000000,0x000000,0x009900,0x009900,0x009900,0x000000,0x009900,0x009900,0x000000,0x000000,0x000000,
0x009900,0x009900,0x009900,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
};

const long EyesClosed[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x009900,0x009900,0x000000,
0x000000,0x000000,0x000000,0x000000,0x009900,0x009900,0x009900,0x000000,0x000000,0x000000,0x009900,0x009900,0x000000,0x000000,0x000000,0x000000,
0x009900,0x009900,0x009900,0x000000,0x000000,0x009900,0x009900,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x009900,0x009900,0x000000,0x000000,0x009900,0x009900,0x009900,
0x000000,0x000000,0x000000,0x000000,0x009900,0x009900,0x000000,0x000000,0x000000,0x009900,0x009900,0x009900,0x000000,0x000000,0x000000,0x000000,
0x000000,0x009900,0x009900,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
};

const long EyesWink[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x009900,0x009900,0x000000,
0x000000,0x000000,0x000000,0x000000,0x009900,0x009900,0x009900,0x000000,0x000000,0x000000,0x009900,0x009900,0x000000,0x000000,0x000000,0x000000,
0x009900,0x009900,0x009900,0x000000,0x000000,0x009900,0x009900,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x009900,0x009900,0x009900,0x000000,0x009900,0x009900,0x000000,0x009900,
0x009900,0x000000,0x000000,0x009900,0x000000,0x000000,0x000000,0x009900,0x009900,0x009900,0x000000,0x009900,0x009900,0x000000,0x000000,0x000000,
0x009900,0x009900,0x009900,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
};

const long Scan01[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,
0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,
};

const long Scan02[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,
0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,
};
const long Scan03[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,
0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000077,0x000000,
};
const long Scan04[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,
0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,
0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,
0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,
0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,
};
const long Scan05[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000000,0x000000,0x000066,0x000000,0x000000,0x000000,0x000000,
};
const long Scan06[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000066,0x000066,0x000000,0x000000,0x000000,0x000000,0x000000,
};

const long Fire1[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0xff0000,0xff6600,0xff6600,0x000000,0xffbb00,0xffbb00,0xff6600,0xff6600,0x000000,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0xff6600,
0xffbb00,0xffbb00,0x000000,0xff6600,0xff0000,0x000000,0x000000,0x000000,0x000000,0xff6600,0xff6600,0xffbb00,0xffbb00,0xffbb00,0xffbb00,0xff6600,
0xff6600,0xff0000,0xff0000,0xff6600,0xff0000,0x000000,0x000000,0xff0000,0xffbb00,0xffbb00,0x000000,0xff6600,0xff6600,0xff0000,0x000000,0x000000,
0xff0000,0xff0000,0xff6600,0xff6600,0xff6600,0xffbb00,0xffbb00,0x000000,0xffbb00,0x000000,0xff0000,0x000000,0xff0000,0xff6600,0xff6600,0x000000,
0xffbb00,0xffbb00,0xffbb00,0xff6600,0xff0000,0xff0000,0x000000,0x000000,0x000000,0x000000,0xff6600,0xff6600,0x000000,0xffbb00,0xffbb00,0xff6600,
0xff6600,0xff0000,0xff0000,0x000000,0xff0000,0xff0000,0x000000,0xffbb00,0xffbb00,0xffbb00,0xffbb00,0xff6600,0xff6600,0xff0000,0x000000,0x000000,
};
const long Fire2[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0xff0000,0xff6600,0xff6600,0xffbb00,0xffbb00,0xff0000,0xff6600,0xff6600,0x000000,0xff0000,0xffbb00,0x000000,0xff0000,0xff0000,0xffbb00,
0xff0000,0xff0000,0x000000,0xff6600,0xff0000,0x000000,0x000000,0x000000,0x000000,0xffbb00,0xff6600,0xff0000,0xffbb00,0xffbb00,0xffbb00,0xff0000,
0xff6600,0x000000,0xff0000,0xff6600,0x000000,0x000000,0xff6600,0xff0000,0xffbb00,0xffbb00,0x000000,0xff6600,0xff6600,0xff0000,0x000000,0x000000,
0xffbb00,0xff0000,0xff6600,0xff6600,0xff0000,0xffbb00,0x000000,0xffbb00,0x000000,0x000000,0xff0000,0x000000,0xff0000,0xff0000,0xff6600,0xff6600,
0xffbb00,0xffbb00,0xffbb00,0xffbb00,0xff0000,0xff0000,0x000000,0x000000,0x000000,0x000000,0xff6600,0xff6600,0x000000,0xffbb00,0xffbb00,0xff6600,
0xff6600,0xff0000,0xff6600,0x000000,0x000000,0xff6600,0x000000,0xffbb00,0xff6600,0xffbb00,0x000000,0xff6600,0xff0000,0xff0000,0x000000,0xff6600,
};
const long Fire3[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0xffbb00,0xffbb00,0xffbb00,0xffbb00,0xff0000,0xff0000,0x000000,0x000000,0x000000,0x000000,0xff6600,0x000000,0x000000,0x000000,0xffbb00,0xff6600,
0x000000,0xff0000,0xff6600,0xff6600,0xffbb00,0xffbb00,0xff0000,0x000000,0x000000,0x000000,0xff0000,0xffbb00,0x000000,0xff0000,0xff0000,0xffbb00,
0x000000,0xff0000,0x000000,0x000000,0x000000,0x000000,0x000000,0xffbb00,0x000000,0xffbb00,0xffbb00,0xff6600,0xff0000,0xff0000,0x000000,0xff6600,
0xffbb00,0xffbb00,0xffbb00,0xff6600,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0xff6600,0xffbb00,0xffbb00,0xffbb00,0xffbb00,0x000000,
0xff6600,0xff0000,0xff0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0xffbb00,0xffbb00,0x000000,0xff6600,0xff0000,0x000000,0x000000,
0xff0000,0xff0000,0xff6600,0xff6600,0x000000,0x000000,0xffbb00,0xffbb00,0xffbb00,0x000000,0xff0000,0x000000,0xff0000,0xff6600,0x000000,0x000000,
};
const long DeadEyesOpen[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x9633ff,0x9633ff,0x000000,0x000000,0x000000,0x9633ff,0x000000,0x000000,
0x9633ff,0x000000,0x9633ff,0x9633ff,0x000000,0x000000,0x9633ff,0x9633ff,0x9633ff,0x9633ff,0x000000,0x000000,0x9633ff,0x9633ff,0x000000,0x9633ff,
0x000000,0x000000,0x9633ff,0x000000,0x000000,0x000000,0x9633ff,0x9633ff,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x9633ff,0x9633ff,0x000000,0x000000,0x000000,0x9633ff,0x000000,0x000000,
0x9633ff,0x000000,0x9633ff,0x9633ff,0x000000,0x000000,0x9633ff,0x9633ff,0x9633ff,0x9633ff,0x000000,0x000000,0x9633ff,0x9633ff,0x000000,0x9633ff,
0x000000,0x000000,0x9633ff,0x000000,0x000000,0x000000,0x9633ff,0x9633ff,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
};
const long DeadEyesClosed[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x9633ff,0x000000,0x000000,0x000000,0x000000,0x9633ff,0x000000,0x9633ff,0x000000,0x000000,
0x9633ff,0x000000,0x000000,0x000000,0x9633ff,0x9633ff,0x000000,0x000000,0x000000,0x000000,0x9633ff,0x9633ff,0x000000,0x000000,0x000000,0x9633ff,
0x000000,0x000000,0x9633ff,0x000000,0x9633ff,0x000000,0x000000,0x000000,0x000000,0x9633ff,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x9633ff,0x000000,0x000000,0x000000,0x000000,0x9633ff,0x000000,0x9633ff,0x000000,0x000000,
0x9633ff,0x000000,0x000000,0x000000,0x9633ff,0x9633ff,0x000000,0x000000,0x000000,0x000000,0x9633ff,0x9633ff,0x000000,0x000000,0x000000,0x9633ff,
0x000000,0x000000,0x9633ff,0x000000,0x9633ff,0x000000,0x000000,0x000000,0x000000,0x9633ff,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
};
const long EyeBlast1[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,
0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,
0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,
0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,
0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,
0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,0x000000,0x000000,0xffffff,0xffffff,0x000000,0x000000,
};
const long EyeBlast2[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,
0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,
0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,
0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,
0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,
0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,0xffffff,0xffffff,0x000000,0x000000,0xffffff,0xffffff,
};
//
const long GetLucky1[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x000000,0x000000,0x000000,
0x000000,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x000000,0x000000,0x33ffbe,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x000000,0x33ffbe,0x000000,0x33ffbe,0x000000,
0x000000,0x33ffbe,0x000000,0x33ffbe,0x000000,0x33ffbe,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x33ffbe,0x000000,0x000000,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x000000,0x000000,
0x000000,0x000000,0x33ffbe,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
};
const long GetLucky2[] PROGMEM =
{
// 1         2       3         4         5      6         7       8        9        10       11       12       13       14       15       16
0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,
0x000000,0x000000,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x33ffbe,0x33ffbe,0x000000,
0x33ffbe,0x33ffbe,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x000000,0x000000,
0x000000,0x000000,0x33ffbe,0x000000,0x000000,0x33ffbe,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,
0x33ffbe,0x33ffbe,0x000000,0x33ffbe,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x33ffbe,0x000000,0x33ffbe,0x000000,0x000000,
0x000000,0x000000,0x33ffbe,0x000000,0x000000,0x000000,0x33ffbe,0x33ffbe,0x33ffbe,0x33ffbe,0x000000,0x000000,0x000000,0x000000,0x33ffbe,0x000000,
};
//
//
void setup(void) { 
FastLED.addLeds<NEOPIXEL,DATA_PIN>(leds, NUM_LEDS);  // Init of the Fastled library
FastLED.setBrightness(15);
Serial.begin(9600);
}
////////////////////////////  SUBROUTINES ////////////////////////////
//
void DisplayWhat()
{
  if(but0state == HIGH)
  {
    DisEyesBlink();
   }
  else if(but1state == HIGH)
  {
    DisEyesWink ();
   }
    else if(but2state == HIGH)
  {
   DisFire();
   }
    else if(but3state == HIGH)
  {
   DisHeart();
    }
    else if(but4state == HIGH)
  {
  DisBlueScan();
     }
    else if(but5state == HIGH)
  {
    DisDeadEyes();
     }
    else if(but6state == HIGH)
  {
     DisEyeBlast();
     }
    else if(but7state == HIGH)
  {
     DisGetLucky();
     }
}
//.......................DISPLAY HEART MESSAGE ...............................................
void DisHeart()
{
for(int passtime = 0; passtime < 3; passtime++) { // Display it 8 times
FastLED.clear();
//Force Heart 1st frame
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Heart01[i]));  // Read array from Flash
  }
FastLED.show();
delay(500);

// Force Heart 2nd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Heart02[i]));
  }
FastLED.show();
delay(500);

// Force Heart 3rd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Heart03[i]));
  }
FastLED.show();
delay(500);

// Force Heart 4th frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Heart04[i]));
  }
FastLED.show();
delay(500);

// Force Heart 5th frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Heart05[i]));
  }
FastLED.show();
delay(2000);
}
}
//
//.........................Display Get Lucky Message ..................................................
//
void DisGetLucky()
{
for(int passtime = 0; passtime < 3; passtime++) { // Display it 8 times
FastLED.clear();
//Force Eyes 1st frame
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(GetLucky1[i]));  // Read array from Flash
  }
FastLED.show();
delay(1000);

// Force Eyes 2nd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(GetLucky2[i]));
  }
FastLED.show();
delay(1000);
FastLED.clear();
}
}
//
//.........................Display EYES Blink Message ..................................................
//
void DisEyesBlink()
{
for(int passtime = 0; passtime < 3; passtime++) { // Display it 8 times
FastLED.clear();
//Force Eyes 1st frame
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(EyesOpen[i]));  // Read array from Flash
  }
FastLED.show();
delay(1000);

// Force Eyes 2nd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(EyesClosed[i]));
  }
FastLED.show();
delay(1000);
FastLED.clear();
}
}
//
//.........................Display EYES Blast Message ..................................................
//
void DisEyeBlast()
{
for(int passtime = 0; passtime < 3; passtime++) { // Display it 8 times
FastLED.clear();
//Force Eyes 1st frame
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(EyeBlast1[i]));  // Read array from Flash
  }
FastLED.show();
delay(1000);

// Force Eyes 2nd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(EyeBlast2[i]));
  }
FastLED.show();
delay(1000);
FastLED.clear();
}
}
//
// ..........................Display Eyes WINK ................................................
//
void DisEyesWink()
{
for(int passtime = 0; passtime < 3; passtime++) { // Display it 8 times

// Force Eyes 1st frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(EyesOpen[i]));
  }
FastLED.show();
delay(1000);
// Force Eyes 4th frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(EyesWink[i]));
  }
FastLED.show();
delay(1000);
}
}
// ..............................Display Blue Scanner  ................................................
// Put BLUE SCAN 1st frame
void DisBlueScan()
{
for(int passtime = 0; passtime < 16; passtime++) {

FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Scan01[i]));
  }
FastLED.show();
delay(100);
// Put SCAN 2nd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Scan02[i]));
  }
FastLED.show();
delay(100);
// Put SCAN 3rd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Scan03[i]));
  }
FastLED.show();
delay(100);
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Scan04[i]));
  }
FastLED.show();
delay(100);
// Put SCAN 2nd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Scan05[i]));
  }
FastLED.show();
delay(100);
// Put SCAN 3rd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Scan06[i]));
  }
FastLED.show();
delay(100);
}
}
//
// ..........................Display Fire ................................................
//
void DisFire()
{
  for(int passtime = 0; passtime < 8; passtime++) { // Display it 8 times

// Force Fire 1st frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Fire1[i]));
  }
FastLED.show();
delay(200);
// Force Fire 2nd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Fire2[i]));
  }
FastLED.show();
delay(300);
// Force Fire 3rd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(Fire3[i]));
  }
FastLED.show();
delay(100);
}
}
//
//
//.........................Display DEAD EYES Message ..................................................
//
void DisDeadEyes()
{
for(int passtime = 0; passtime < 3; passtime++) { // Display it 8 times
FastLED.clear();
//Force Eyes 1st frame
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(DeadEyesOpen[i]));  // Read array from Flash
  }
FastLED.show();
delay(1000);

// Force Eyes 2nd frame
FastLED.clear();
for(int i = 0; i < NUM_LEDS; i++) {
    leds[i] = pgm_read_dword(&(DeadEyesClosed[i]));
  }
FastLED.show();
delay(1000);
FastLED.clear();
}
}
//
// ..........................Display Eyes WINK.....................................
//
void loop(void) { 
 //  Read the state of the buttons........
but0state = digitalRead(but0);
but1state = digitalRead(but1);
but2state = digitalRead(but2);
but3state = digitalRead(but3);
but4state = digitalRead(but4);
but5state = digitalRead(but5);
but6state = digitalRead(but6);
but7state = digitalRead(but7);
// --------------- Serial Print the status of the buttons being pushed ----------------
  Serial.println("  ");
  Serial.print(but7state);
   Serial.print(but6state);
    Serial.print(but5state);
     Serial.print(but4state);
      Serial.print(but3state);
       Serial.print(but2state);
        Serial.print(but1state);
         Serial.print(but0state);
     Serial.println("<--- Button States 7 thru 0"); 
//
// Check what button is being pressed and run that display or in none, then Blue Scan .......
DisplayWhat();
FastLED.clear();
FastLED.show();
}
