Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save tomjuggler/a154508c8fb564e50b68ac461d8b0a93 to your computer and use it in GitHub Desktop.
Save tomjuggler/a154508c8fb564e50b68ac461d8b0a93 to your computer and use it in GitHub Desktop.
Example
// Most of this code is the hard work of Tom Hastings www.bigtop.co.za //
// other credits here! Many thanks to .....//
volatile unsigned long millisecs = 0;
unsigned long seconds = 0;
volatile int variable = 0;
#include <avr/io.h>
#include <avr/interrupt.h>
typedef unsigned char PROGMEM prog_uchar;
//#include "FastSPI_LED2.h"
#include "FastLED.h"
//FastLED.h working now!
//#define BRIGHTNESS 20 //brightness done in code now
//
//////////////////////Colour Pallette Code:///////////////
boolean upDown = true;
boolean lines = true;
#define BRIGHTNESS 20
#define UPDATES_PER_SECOND 30000
CRGBPalette16 currentPalette;
TBlendType currentBlending;
extern CRGBPalette16 myRedWhiteBluePalette;
extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM;
int paletteVar = 1;
int motionSpeed = 1;
int maxStartIndex = 70;
int minStartIndex = 0;
volatile int setting = 2;
float thickness = PI;
const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM =
{
CRGB::Red,
CRGB::Gray, // 'white' is too bright compared to red and blue
CRGB::Blue,
CRGB::Black,
CRGB::Red,
CRGB::Gray,
CRGB::Blue,
CRGB::Black,
CRGB::Red,
CRGB::Red,
CRGB::Gray,
CRGB::Gray,
CRGB::Blue,
CRGB::Blue,
CRGB::Black,
CRGB::Black
};
//////////////////end Colour Pallette Code//////////////////////////////
#include <avr/pgmspace.h>
#define NUM_LEDS 37
CRGB leds[NUM_LEDS];
#define PIN 6
//eeprom stuff:
#include <EEPROM.h>
byte eeprom_option;
byte eeprom_address = 0;
//flash
//#include <Flash.h>
struct dataRGB { byte r;
byte g;
byte b; };
struct pattern { byte numLeds;
byte numFrames;
PROGMEM const prog_uchar *patData; };
struct pattern2 { byte numLeds;
byte numFrames;};
PROGMEM const prog_uchar message1Data[] =
{63, 63, 31, 31, 22, 9, 0, 0, -112, -3, -4, -4, -40, 68, 64, -92, -64, -32, -64, -60, -92, 96, 100, -8, -3, -4, -3, -111, 0, 0, 5, 22, 31, 31, 31, 63,
18, 63, 63, 63, 63, 18, 4, 0, 0, -112, -3, -3, -7, -43, 100, -128, -60, -64, -96, -92, -128, 100, -11, -3, -3, -3, 112, 0, 0, 4, 18, 95, 63, 63, 59, 22,
4, 18, 59, 63, 63, 63, 18, 4, 0, 32, -112, -3, -3, -3, -44, 96, -128, -60, -96, 96, 96, -44, -3, -3, -3, 112, 4, 0, 4, 17, 63, 63, 91, 91, 18, 5,
0, 8, 18, 59, 31, 63, 63, 18, 4, 0, 36, -112, -3, -3, -7, -44, 96, 96, 96, 100, -44, -3, -3, -35, 112, 0, 0, 4, 49, 95, 63, 63, 91, 50, 5, 0,
0, 0, 5, 18, 63, 63, 63, 63, 14, 4, 0, 4, -112, -3, -3, -3, -48, 68, 100, -44, -3, -4, -3, -112, 0, 0, 4, 17, 63, 63, 63, 63, 46, 5, 0, 0,
1, 0, 0, 5, 18, 59, 63, 31, 95, 18, 4, 0, 0, -112, -3, -3, -3, -40, -76, -3, -3, -3, 112, 0, 0, 4, 18, 95, 63, 27, 63, 18, 5, 0, 0, 1,
2, 2, 1, 0, 0, 50, 95, 63, 31, 63, 18, 4, 0, 0, -112, -3, -4, -4, -4, -4, -3, -112, 0, 0, 4, 50, 63, 31, 63, 63, 50, 5, 1, 1, 1, 2,
3, 2, 1, 1, 0, 0, 18, 95, 31, 31, 63, 18, 0, 0, 0, -80, -3, -4, -4, -3, -112, 0, 0, 4, 50, 95, 63, 63, 59, 18, 5, 1, 1, 1, 2, 2,
3, 3, 2, 2, 1, 0, 4, 50, 95, 31, 63, 63, 18, 4, 0, 0, -80, -3, -3, -112, 0, 0, 4, 50, 95, 63, 63, 59, 50, 5, 0, 1, 2, 2, 3, 3,
3, 3, 3, 2, 2, 1, 0, 4, 18, 95, 63, 31, 63, 18, 4, 0, 36, -112, 108, 4, 0, 4, 18, 95, 31, 63, 91, 50, 4, 0, 1, 1, 2, 3, 3, 3,
3, 3, 3, 3, 2, 2, 1, 0, 4, 50, 59, 31, 63, 63, 18, 4, 0, 0, 0, 0, 4, 18, 63, 31, 63, 59, 50, 4, 0, 1, 2, 2, 3, 3, 3, 3,
2, 2, 3, 3, 3, 2, 2, 1, 0, 4, 18, 63, 31, 63, 63, 18, 4, 0, 0, 4, 54, 63, 31, 31, 63, 18, 4, 0, 1, 2, 2, 3, 3, 3, 3, 3,
34, 2, 2, 3, 3, 3, 2, 2, 1, 0, 5, 50, 59, 63, 63, 63, 17, 8, 9, 18, 63, 63, 31, 63, 18, 5, 0, 1, 2, 2, 3, 3, 3, 2, 2, 34,
-121, 66, 34, 2, 3, 3, 3, 2, 2, 1, 0, 5, 18, 59, 63, 63, 95, 18, 22, 95, 63, 63, 63, 18, 4, 0, 1, 2, 2, 3, 3, 3, 3, 34, 66, -121,
-57, -93, 66, 34, 2, 3, 3, 3, 2, 2, 1, 0, 4, 50, 91, 63, 63, 63, 31, 31, 63, 95, 50, 4, 0, 1, 2, 3, 3, 3, 3, 2, 34, 66, -125, -89,
-29, -61, -89, 66, 2, 2, 3, 3, 3, 2, 1, 0, 0, 4, 18, 63, 31, 31, 31, 31, 63, 18, 0, 0, 0, 1, 2, 3, 3, 3, 3, 2, 66, -122, -57, -29,
-29, -29, -89, 98, 34, 2, 3, 3, 3, 3, 1, 1, 0, 0, 9, 59, 31, 31, 31, 31, 59, 9, 0, 0, 1, 2, 3, 3, 3, 3, 2, 2, 103, -89, -61, -29,
-29, -61, -93, 66, 2, 3, 3, 3, 3, 2, 1, 0, 0, 4, 18, 63, 31, 31, 31, 31, 95, 18, 0, 0, 1, 2, 2, 3, 3, 3, 3, 2, 66, -125, -61, -29,
-57, -93, 98, 34, 2, 3, 3, 3, 2, 2, 1, 0, 4, 18, 63, 63, 63, 63, 63, 63, 27, 95, 18, 4, 0, 0, 1, 2, 3, 3, 3, 3, 34, 98, -93, -57,
-89, 98, 34, 2, 3, 3, 3, 2, 2, 1, 0, 5, 50, 91, 63, 63, 59, 18, 22, 59, 63, 63, 95, 18, 4, 0, 0, 1, 3, 3, 3, 3, 2, 34, 98, -121,
34, 34, 3, 3, 3, 3, 2, 2, 1, 0, 5, 18, 63, 63, 59, 95, 17, 4, 5, 18, 95, 59, 63, 63, 18, 9, 0, 1, 2, 2, 3, 3, 3, 2, 2, 34,
2, 3, 3, 3, 3, 2, 1, 1, 0, 5, 18, 63, 63, 63, 59, 50, 4, 0, 0, 4, 13, 95, 63, 63, 63, 18, 5, 0, 1, 2, 2, 3, 3, 3, 2, 2,
3, 3, 3, 3, 2, 1, 1, 0, 5, 18, 63, 63, 63, 59, 18, 0, 0, 0, 4, 0, 0, 50, 59, 63, 63, 27, 18, 5, 0, 1, 2, 2, 3, 3, 3, 3,
3, 3, 3, 2, 1, 1, 0, 5, 50, 59, 63, 31, 63, 18, 4, 0, 36, -112, -112, 0, 0, 4, 50, 63, 31, 63, 63, 18, 4, 0, 1, 2, 3, 3, 3, 3,
3, 3, 2, 1, 0, 0, 5, 50, 63, 63, 63, 95, 17, 4, 0, 4, -112, -3, -3, -112, 0, 0, 5, 18, 63, 31, 63, 63, 50, 4, 0, 1, 2, 2, 3, 3,
3, 2, 1, 1, 0, 4, 18, 59, 63, 27, 95, 18, 4, 0, 4, -75, -3, -3, -3, -3, -108, 0, 0, 4, 18, 59, 63, 31, 59, 18, 5, 0, 1, 2, 2, 2,
2, 2, 1, 0, 5, 18, 59, 63, 59, 95, 13, 4, 0, 0, -112, -3, -4, -4, -4, -3, -3, -108, 0, 0, 5, 18, 63, 63, 63, 59, 50, 5, 0, 1, 1, 2,
1, 1, 0, 4, 18, 59, 63, 63, 91, 18, 4, 0, 36, -112, -3, -3, -3, -44, -40, -4, -4, -3, -112, 0, 0, 4, 18, 59, 63, 63, 59, 50, 4, 0, 1, 1,
0, 0, 5, 50, 59, 63, 63, 91, 49, 0, 0, 36, -112, -3, -3, -3, -48, 64, 100, -80, -4, -4, -3, -112, 0, 0, 4, 17, 59, 63, 63, 91, 50, 4, 0, 0,
0, 4, 50, 91, 63, 63, 95, 18, 0, 0, 4, -112, -3, -3, -7, -48, 96, 96, 64, 100, -48, -4, -4, -3, -112, 36, 0, 4, 18, 59, 63, 63, 91, 18, 4, 0,
9, 18, 63, 63, 63, 91, 50, 4, 0, 4, -112, -3, -4, -3, -48, 96, -128, -96, -92, 96, 96, -43, -3, -3, -4, -112, 36, 0, 4, 18, 63, 31, 63, 27, 18, 9,
22, 63, 63, 31, 63, 18, 4, 0, 0, -112, -3, -4, -4, -44, 100, -128, -64, -64, -64, -96, -128, 96, -44, -3, -4, -3, -112, 0, 0, 5, 18, 63, 31, 31, 63, 22,
63, 31, 31, 63, 18, 4, 0, 0, -112, -3, -4, -4, -44, 68, 96, -92, -64, -32, -32, -64, -96, 96, 68, -40, -4, -4, -3, -111, 0, 0, 4, 22, 31, 31, 31, 63 };
struct pattern message1 = {36, 33,message1Data};
PROGMEM const prog_uchar message2Data[] =
{-39, -3, -7, 104, 64, 64, 64, 64, 65, 65, -119, -6, -3, -108, 0, 0, 0, 0, 0, 0, 0, 4, 22, 63, 91, 10, 1, 1, 1, 1, 1, 5, 13, 59, 95, 58,
36, -76, -3, -7, -120, 64, 64, 64, 65, 64, 64, -116, -7, -3, -112, 0, 0, 0, 0, 0, 4, 50, 95, 59, 10, 5, 1, 1, 1, 1, 5, 14, 59, 91, 18, 9,
0, 36, -43, -3, -7, -120, 32, 65, 65, 65, 64, 96, -116, -7, -3, -112, 0, 0, 0, 4, 18, 127, 91, 14, 1, 1, 1, 1, 1, 1, 10, 55, 123, 50, 4, 0,
0, 0, 36, -75, -3, -39, 104, 64, 64, 97, 97, 64, 64, -116, -7, -3, 113, 4, 4, 18, 91, 91, 13, 1, 1, 1, 1, 1, 1, 10, 87, 91, 50, 5, 0, 0,
0, 0, 0, 36, -75, -3, -7, 104, 64, 64, 97, 65, 64, 64, -116, -2, -34, 81, 22, 91, 91, 14, 1, 1, 1, 1, 1, 1, 9, 87, 91, 50, 4, 0, 0, 0,
0, 0, 0, 0, 4, -39, -3, -7, -120, 64, 64, 97, 65, 64, 68, 108, -66, -98, 127, 59, 14, 5, 1, 1, 1, 1, 1, 9, 87, 127, 50, 9, 0, 0, 0, 0,
0, 0, 0, 0, 0, 36, -44, -3, -12, 104, 64, 64, 65, 33, 33, 4, 86, 123, 91, 14, 5, 1, 1, 1, 1, 1, 9, 54, 127, 54, 5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 36, -43, -3, -7, 104, 64, 65, 33, 5, 50, 91, 91, 14, 1, 1, 1, 1, 1, 1, 9, 55, 127, 54, 4, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 4, -75, -3, -7, 104, 0, 5, 50, 91, 91, 10, 1, 1, 1, 1, 1, 1, 14, 59, 95, 54, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 36, -76, -3, -39, 77, 50, 91, 59, 10, 5, 1, 1, 1, 0, 1, 10, 55, 95, 54, 4, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 36, -107, -66, 122, 91, 91, 14, 5, 1, 1, 1, 1, 1, 14, 59, 91, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 89, 127, 91, 14, 1, 1, 0, 1, 1, 1, 10, 55, 95, 90, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 17, 91, 91, 14, 1, 1, 1, 1, 1, 1, 10, 55, 127, 126, -66, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 4, 50, 91, 91, 14, 1, 1, 1, 1, 1, 1, 10, 87, 123, 86, 81, -34, -2, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 4, 50, 91, 87, 14, 1, 1, 1, 1, 1, 1, 14, 55, 95, 87, 5, 32, -116, -7, -3, -108, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 4, 49, 91, 91, 14, 1, 1, 1, 1, 1, 1, 10, 59, 95, 55, 5, 1, 65, 64, -116, -3, -3, -112, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 4, 18, 95, 59, 10, 1, 1, 1, 1, 0, 5, 13, 59, 90, 86, 5, 1, 65, 65, 64, 64, -116, -7, -3, -112, 32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 4, 50, 91, 91, 14, 5, 1, 1, 1, 1, 5, 9, 59, 95, 126, -102, 73, 64, 64, 65, 65, 64, 64, -116, -7, -3, -116, 32, 0, 0, 0, 0,
0, 0, 0, 4, 18, 91, 91, 14, 1, 1, 1, 1, 1, 1, 14, 55, 95, 54, 117, -34, -39, 104, 64, 65, 65, 65, 64, 64, -116, -7, -3, -112, 0, 0, 0, 0,
0, 0, 4, 18, 91, 91, 14, 1, 1, 1, 1, 1, 1, 10, 55, 95, 50, 4, 4, -71, -3, -39, 104, 32, 65, 65, 65, 64, 64, -83, -3, -35, 108, 36, 0, 0,
0, 4, 18, 95, 91, 14, 1, 1, 0, 1, 1, 1, 10, 55, 95, 54, 4, 0, 0, 36, -76, -3, -7, 104, 32, 64, 64, 64, 64, 64, -116, -3, -3, -112, 36, 0,
4, 50, 63, 59, 14, 1, 0, 1, 1, 1, 1, 10, 87, 95, 54, 4, 0, 0, 0, 0, 36, -76, -3, -7, 104, 64, 64, 97, 65, 32, 68, -112, -3, -35, -112, 0,
50, 91, 59, 14, 5, 1, 1, 0, 1, 1, 10, 87, 59, 22, 8, 0, 0, 0, 0, 0, 0, 36, -40, -3, -7, 100, 96, 97, 97, 65, 64, 32, -112, -3, -3, -108,
14, 91, 95, 18, 5, 1, 1, 1, 1, 0, 5, 87, 59, 59, 9, 0, 0, 0, 0, 0, 0, 72, -39, -3, -43, 100, 97, 65, 65, 65, 64, 68, -112, -3, -3, 108,
0, 13, 59, 95, 18, 5, 1, 1, 1, 1, 1, 5, 50, 95, 59, 9, 0, 0, 0, 0, 72, -3, -2, -79, 64, 64, 65, 65, 97, 64, 68, -79, -3, -39, 108, 0,
0, 4, 13, 59, 91, 18, 5, 1, 1, 1, 1, 1, 5, 50, 95, 55, 9, 0, 0, 72, -39, -3, -79, 100, 64, 64, 65, 65, 64, 68, -79, -3, -39, 108, 0, 0,
0, 0, 0, 13, 91, 95, 18, 5, 1, 1, 1, 1, 1, 9, 55, 91, 86, 45, 40, -39, -3, -43, 68, 32, 64, 65, 65, 64, 64, -47, -3, -39, 108, 0, 0, 0,
0, 0, 0, 0, 13, 91, 95, 14, 1, 1, 1, 1, 1, 1, 9, 87, -101, 117, -67, -3, -43, 68, 64, 64, 65, 65, 64, 68, -80, -3, -7, 108, 0, 0, 0, 0,
0, 0, 0, 0, 0, 14, 91, 95, 14, 5, 1, 1, 1, 1, 0, 4, 117, -34, -2, -43, 68, 64, 65, 65, 65, 64, 68, -80, -3, -7, 108, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 13, 91, 95, 14, 5, 1, 0, 0, 0, 40, -39, -35, -75, 100, 64, 64, 65, 65, 64, 68, -80, -3, -7, 108, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 13, 91, 91, 50, 5, 0, 0, 72, -39, -3, -75, 68, 64, 64, 97, 65, 64, 68, -80, -3, -7, 104, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 13, 91, 91, 50, 4, 72, -39, -3, -75, 100, 64, 64, 97, 97, 64, 64, -79, -3, -7, 108, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 122, -102, 117, -39, -3, -47, 68, 64, 65, 64, 97, 96, 64, -79, -3, -39, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 121, -34, -3, -80, 100, 64, 64, 65, 65, 64, 64, -47, -2, -71, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, -71, -2, -43, 68, 64, 97, 65, 32, 64, 68, -112, -2, -34, 121, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 72, -71, -35, -75, 68, 64, 65, 65, 65, 64, 68, -112, -3, -2, -107, 122, 54, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 68, -39, -3, -43, 68, 64, 65, 65, 65, 32, 100, -80, -3, -3, 108, 40, 86, 127, 55, 9, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 72, -7, -3, -44, 68, 64, 65, 97, 65, 64, 100, -80, -3, -35, 108, 0, 0, 9, 51, 95, 91, 9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 72, -39, -3, -47, 100, 64, 64, 65, 64, 64, 68, -79, -2, -35, 76, 0, 0, 1, 1, 5, 51, 127, 58, 9, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 72, -39, -3, -47, 100, 64, 65, 64, 64, 64, 68, -75, -3, -34, 113, 4, 0, 1, 1, 1, 1, 5, 50, 95, 58, 9, 0, 0, 0, 0, 0,
0, 0, 0, 0, 72, -39, -3, -43, 68, 64, 65, 65, 65, 32, 100, -80, -3, -35, -102, 122, 50, 5, 1, 1, 1, 1, 1, 5, 50, 95, 54, 9, 0, 0, 0, 0,
0, 0, 0, 72, -40, -3, -43, 68, 64, 65, 65, 65, 64, 68, -80, -3, -39, 76, 13, 90, 91, 18, 5, 1, 1, 1, 1, 1, 9, 55, 91, 54, 9, 0, 0, 0,
0, 0, 72, -40, -3, -43, 100, 64, 64, 65, 65, 64, 68, -79, -3, -3, 108, 0, 0, 13, 91, 95, 18, 5, 0, 1, 1, 1, 1, 10, 55, 95, 87, 9, 0, 0,
0, 72, -40, -3, -43, 100, 64, 65, 65, 65, 64, 100, -80, -3, -39, 108, 0, 0, 0, 0, 13, 91, 91, 18, 5, 0, 1, 1, 1, 1, 9, 55, 91, 54, 9, 0,
40, -39, -3, -40, 100, 64, 64, 65, 65, 64, 64, -83, -3, -3, 108, 0, 0, 0, 0, 0, 0, 14, 95, 91, 46, 1, 1, 1, 1, 1, 1, 10, 59, 95, 87, 9 };
struct pattern message2 = {36, 45,message2Data};
PROGMEM const prog_uchar message3Data[] =
{-122, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 85, 121, 4, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
102, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -71, 121, 4, 4, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
65, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -71, -71, 117, 4, 4, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
32, 105, 0, 0, 0, 0, 0, 0, 0, -1, -1, -42, -71, -107, 0, 4, 4, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 32, 105, 0, 0, 0, 0, -42, -42, -42, -42, -38, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 32, 105, 32, 32, 32, 32, 32, 32, 32, 0, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 32, 101, 100, 64, 64, 64, 64, 32, 32, 0, -42, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 32, 32, 100, 100, -124, 100, -83, -83, -115, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 32, 32, 32, 100, 100, 100, -115, -115, -115, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -119, -119, 64, 64, 64, 32, 32, 0, -74, -38, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 105, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, 32, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 32, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 117, 4, 4, 114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 32, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 118, 4, 4, 114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 117, 4, 4, 114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 118, 4, 4, 114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, 32, 0, 0, 0, 0, 0, 0, 0, 0, -1, -106, 0, 0, 0, 114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 105, 0, 0, 0, 0, 0, 0, -1, -1, -70, 0, 0, 0, 77, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 105, 0, 0, 0, 0, -74, -74, -38, -38, 0, 0, 0, 0, 109, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 32, 32, 32, 0, 0, 0, 0, 0, 0, -110, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -119, -119, 32, 64, 64, 32, 32, 32, -74, -74, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 105, 100, 100, -83, -115, -115, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 32, 100, 100, -115, -74, -106, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 32, 105, 32, 32, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 32, 105, 0, -1, -1, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 32, 106, 0, -1, 0, 0, 4, 118, 4, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 33, 106, 0, 0, 0, 0, 4, 118, 4, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, -33, 118, 4, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 105, 32, 0, -42, -38, -107, 4, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 105, 32, 0, 0, 0, 4, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 32, 105, 100, -115, -70, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 105, 100, -115, -42, -110, 0, 0,
0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 32, 0, 0, 0, 77, 0,
0, 0, 0, 0, 32, 32, 105, 100, 100, 100, -83, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, -1, -1, 0, 0, 0, 0, 82,
0, 0, 0, 32, 101, 101, 32, 0, 0, 0, 0, 0, 0, -74, -70, 0, 0, 0, 0, 0, 0, 0, 32, 106, 0, -1, 0, 0, 4, 118, 4, 82,
0, 0, 32, 105, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0, 0, 0, 32, 106, 0, 0, 0, 0, 4, 118, 4, 82,
0, 0, 105, 32, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 32, 105, 0, 0, 0, 0, -34, 118, 4, 82,
32, 105, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 32, 105, 0, 32, -42, -42, 117, 4, 0, 114,
33, 106, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, -119, 32, 32, 32, 0, 4, 77, 0,
106, 32, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 32, 101, 104, -115, -74, -106, 0, 0,
-122, 33, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 114, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0,
102, 33, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 118, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-122, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 117, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-122, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 118, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
struct pattern message3 = {32, 54,message3Data};
PROGMEM const prog_uchar message4Data[] =
{0, 0, 0, -69, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -73, -69, 0, 0, 0, -73, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -69, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, -106, 0, 0, 0, 0, 0, 0,
0, -73, 0, 0, 0, -69, 0, 0, 0, -73, 0, 0, 0, 0, 0, -74, -105, 0, -105, -105, 0, 0, 0, -105, 0, 0, -106, 0, 0, 0, 0, 0,
0, 0, -69, -69, -69, 0, -69, -73, -73, 0, 0, 0, 0, 0, 0, 0, -65, -101, -65, 0, 0, 0, 0, -105, 0, 0, -106, 0, 0, 0, 0, 0,
0, -74, 0, 0, 0, -73, 0, 0, 0, -73, 0, 0, 0, -73, 0, 0, -101, -65, -105, 0, 0, -105, 0, 0, -106, -106, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -69, 0, -105, 0, 0, 0, 0, 0, -69, -65, 0, 0, 0, -33, 0, 0, 0, -65, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -73, -69, 0, 0, 0, -69, -73, 0, 0, -74, -69, -33, -105, 0, -105, -37, -73, 0, -69, -33, -69, -105, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -73, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, -105, -65, -33, -65, -105, -33, 0, 0, 0, 0, 0, 0, 0, 114, 0, 114, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, -33, -33, -65, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, -101, -65, -65, -65, -101, -101, 0, 0, 0, 0, 0, 0, 0, 114, 0, 114, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, -69, -33, -101, 0, -101, -65, -101, 4, -105, -33, -37, -74, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, -65, 0, 0, 0, -105, 0, 0, 0, -37, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, -105, -33, -105, 0, 0, -105, 0, 0, 0, 0, -106, -105, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -106, -106, 0, 0, 0, 0, 0, 0, -65, -101, -65, 0, 0, 0, 0, 0, 0, -105, 0, 0, -74, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -106, 0, 0, -73, 0, 0, 0, 0, -74, -105, 0, -105, -69, 0, 0, 0, 0, 0, -106, 0, 0, -106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -106, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, -73, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -106, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -74, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -69, -65, 0, 0, 0, -33, -105, 0, 0, 0, 0, 0, 0, -73, -73, 0, 0, 0, -69, -69, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -73, -69, -33, 0, 0, 0, -33, -69, -69, 0, 0, 0, 0, 0, 0, 0, -73, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -105, -65, 0, -101, -105, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, -105, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0,
0, 0, -73, 0, 0, 0, 0, -101, -65, -101, 0, 0, 0, 0, -73, 0, 0, 0, -73, -73, -69, 0, -69, -73, -73, 0, 0, 0, 0, 0, 0, 0,
0, 0, -105, -65, -101, 0, -101, -65, -33, -65, -105, 0, -105, -33, -73, 0, 0, -73, 0, 0, 0, -69, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0,
0, 0, 0, -105, -69, -33, -65, -33, -33, -33, -65, -101, -33, -105, 0, 0, 0, 0, 0, 0, -73, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -101, -65, -105, 0, -101, -65, -65, -65, -101, 0, -105, -33, -105, 0, 0, 0, -69, -69, 0, 0, 0, -73, -73, 0, 0, 0, 0, 0, 0, 0,
0, 0, -106, 4, 0, 0, 4, -101, -65, -101, 0, 0, 0, 0, -105, 0, 0, 0, 0, -73, 0, 0, 0, -73, 0, 0, 114, 0, 114, 0, 0, 0,
0, 0, 0, 0, 0, 0, -101, -101, 0, -101, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0,
0, 0, 0, 0, -106, -33, -33, 0, 0, 0, -33, -33, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 114, 0, 0, 0,
0, 0, 0, 0, 0, -69, -65, 0, 0, 0, -69, -105, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -74, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, -73, -37, 0, 0, 0, -65, -105, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, -37, -33, 0, 0, 0, -33, -65, -73, 0, 0, 0, 0, 0,
0, -106, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, -69, 0, -106, -101, 0, 0, 0, 0, 0, 0, 0,
-105, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, -101, -65, -101, 0, 0, 0, 0, -73, 0, 0, 0,
-105, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, -65, -73, 0, -101, -65, -65, -65, -101, 0, -101, -65, -105, 0, 0, 0,
0, -73, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, -65, -33, -65, -65, -33, -65, -65, -101, -33, -101, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, -65, -105, 0, -101, -65, -33, -65, -101, 0, -105, -33, -105, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, -106, 0, 0, -69, 0, 0, 0, 0, -101, -65, -105, 0, 4, 0, 0, -106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, -105, 0, 0, 0, 0, 0, -101, -105, 0, -101, -106, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -110, 0, 114, 0, 0, 0, -106, 0, 0, -74, 0, 0, 0, -73, -37, -33, 0, 0, 0, -33, -65, -105, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, -74, -74, 0, 0, 0, 0, 0, -73, -37, 0, 0, 0, -65, -101, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 114, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -106, -101, 0, -69, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -65, -101, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -69, 0, 0, -101, -65, -73, 0, 0, -73, 0, 0, 0, 0, 114, 0, 114, 0, 0, 0, 0, -69, 0, 0, 0, -73, 0, 0,
0, 0, 0, 0, -73, -69, 0, 0, 0, -33, 0, 0, 0, -69, -73, 0, 0, 0, 0, 114, 0, 0, 0, 0, -69, -73, 0, 0, 0, -69, -73, 0,
0, 0, 0, -73, -37, -33, -105, 0, -101, -65, -101, 4, -105, -33, -33, -73, 0, 0, 114, 0, 114, 0, 0, 0, 0, 0, -69, 0, -73, 0, 0, 0,
0, 0, 0, 0, 0, 0, -101, -101, -65, -65, -65, -101, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, -73, 0, 0, 0, -73,
0, 0, 0, 0, 0, 0, 0, -65, -33, -65, -65, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, -73, -73, 0, -69, -69, -73, 0,
0, 0, 0, 0, 0, 0, -105, -101, -65, -65, -65, -101, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, -69, 0, 0, 0, -69,
0, 0, 0, -73, -33, -33, -101, 0, -101, -65, -101, 0, -73, -1, -33, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, -73, 0, 0, 0,
0, 0, 0, 0, -101, -65, 0, 0, 0, -101, 0, 0, 0, -69, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, -69, 0, 0, 0, -69, -73, 0,
0, 0, 0, 0, 0, -74, 0, 0, -101, -65, -105, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, -74, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -65, -101, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -73, -73, 0, -105, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, -106, 0, 0, 0,
0, 0, 0, 0, 0, -73, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, -106, 0, 0,
0, 0, 0, 0, -106, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, -69, 0, 0, 0, 0, 0, -106, 0, 0, -106, 0, 0,
0, 0, 0, 0, -105, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0, -73, -73, 0, 0, 0, -73, -74, 0, 0, 0, 0, 0, -106, -105, 0, 0, 0,
0, 0, 0, 0, 0, -106, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, -69, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 114, 0, 0, 0, -73, -73, -69, 0, -69, -73, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, -73, 0, 0, 0, -73, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 114, 0, 0, 0, 0, 0, -73, 0, -69, 0, 0, 0, 0, 0, 114, 0, 114, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, -69, 0, 0, 0, -73, -69, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, -73, 0, 0, 0, 0, 114, 0, 114, 0, 0, 0, 0 };
struct pattern message4 = {32, 69,message4Data};
PROGMEM const prog_uchar message5Data[] =
{100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -123,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, -124, -124, -124, -124, -124, 64, 32, 0, 0, 0, 0, 0, 0, 0, -1, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, -124, -124, -92, -96, -92, -92, -92, -128, -124, 32, 0, 0, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, -124, -92, -92, -92, -14, -10, -14, -92, -64, -92, -124, 32, 0, 0, 0, 0, 0, -1, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -124, -96, -64, -96, -96, -10, -5, -10, -60, -64, -64, -92, -124, 32, 0, 0, 0, 0, -5, -124,
100, -5, 0, 0, 0, 0, 0, 0, 0, 32, 32, -124, -96, -64, -64, -64, -64, -19, -10, -18, -64, -64, -64, -60, -124, 32, 0, 0, 0, 0, -5, -124,
100, -5, 0, 0, 0, 0, 0, 0, 0, 32, -124, -92, -96, -64, -64, -64, -64, -64, -96, -60, -64, -64, -64, -96, -92, -124, 32, 0, 0, 0, -5, -124,
100, -1, 0, 0, 0, 0, 0, 0, 32, 100, -92, -92, -14, -10, -15, -96, -64, -64, -64, -64, -64, -64, -96, -92, -96, -124, 32, 0, 0, 0, -5, 100,
100, -1, 0, 0, 0, 0, 0, 0, 64, -124, -96, -96, -9, -5, -10, -92, -64, -32, -64, -64, -64, -19, -10, -14, -96, -124, 32, 0, 0, 0, -1, 100,
100, -5, 0, 0, 0, 0, 0, 32, -124, -92, -64, -64, -18, -10, -19, -64, -32, -64, -32, -64, -60, -10, -5, -10, -92, -128, 32, 0, 0, 0, -1, 100,
100, -5, 0, 0, 0, 0, 0, 32, -96, -64, -64, -64, -64, -64, -64, -64, -64, -32, -64, -64, -96, -19, -10, -14, -92, -124, 32, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 32, -124, -96, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -92, -92, -124, -124, 0, 0, 0, 0, -1, 100,
100, -5, 0, 0, 0, 0, 32, -124, -92, -96, -64, -64, -64, -64, -64, -64, -96, -60, -64, -64, -64, -64, -96, -96, -124, 32, 0, 0, 0, 32, -5, -124,
100, -5, 0, 0, 0, 32, -124, -124, -14, -10, -14, -64, -64, -64, -32, -64, -14, -10, -15, -96, -64, -64, -96, -92, 64, 32, 0, 0, 0, 0, -5, 100,
100, -1, 0, 0, 0, 100, -124, -124, -6, -5, -10, -96, -64, -32, -64, -64, -10, -5, -10, -96, -64, -64, -96, 96, 32, 0, 0, 0, 0, 0, -5, 100,
100, -1, 0, 0, 0, 32, -124, -124, -14, -10, -19, -64, -64, -64, -32, -64, -19, -10, -19, -64, -64, -64, -64, -96, 64, 32, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 32, -124, -92, -92, -64, -64, -64, -64, -64, -64, -64, -96, -64, -64, -64, -64, -64, -92, -124, 32, 0, 0, 0, 32, -5, 100,
100, -5, 0, 0, 0, 0, 32, -124, -92, -64, -64, -64, -32, -32, -64, -64, -64, -64, -64, -64, -64, -64, -96, -92, -124, -124, 32, 0, 0, 0, -5, 100,
100, -1, 0, 0, 0, 0, 0, 32, -92, -64, -64, -64, -64, -64, -64, -64, -64, -32, -64, -64, -64, -19, -10, -14, -92, -124, 32, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 32, -124, -92, -64, -60, -15, -10, -14, -64, -64, -32, -32, -64, -96, -10, -5, -6, -92, -128, 32, 0, 0, 0, -5, -124,
100, -1, 0, 0, 0, 0, 0, 0, 64, -124, -96, -92, -10, -5, -10, -64, -64, -32, -64, -64, -96, -14, -10, -14, -96, -92, 32, 0, 0, 0, -5, -124,
100, -1, 0, 0, 0, 0, 0, 0, 32, -124, -92, -96, -14, -10, -18, -64, -64, -32, -64, -64, -32, -64, -64, -96, -96, -124, 32, 0, 0, 0, -5, 100,
100, -1, 0, 0, 0, 0, 0, 0, 32, 32, -124, -92, -92, -96, -64, -64, -64, -64, -96, -64, -64, -32, -32, -64, -92, -124, 32, 0, 0, 0, -5, -124,
100, -1, 0, 0, 0, 0, 0, 0, 0, 0, 32, -124, -92, -96, -64, -64, -64, -15, -10, -14, -64, -64, -64, -64, -92, 64, 0, 0, 0, 0, -5, -124,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, -124, -92, -64, -64, -96, -10, -5, -10, -60, -64, -64, -96, -124, 32, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -124, -96, -64, -92, -19, -10, -14, -64, -64, -92, -124, 32, 0, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -124, -128, -92, -128, -92, -128, -96, -92, -124, 32, 0, 0, 0, 0, 0, 32, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 100, -124, 96, -124, -123, 32, 32, 0, 0, 0, 0, 0, 0, 0, -1, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 101,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -123,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, -5, -124,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 105, 100, 100, 100, 32, 0, 0, 0, 0, 0, 0, 0, -5, -124,
100, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 100, 100, -78, -78, -83, -124, 96, -124, 100, 32, 0, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 100, -51, -1, -1, -1, -1, -51, -14, -14, -50, 100, 0, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 100, -14, -51, -1, -1, -1, -1, -51, -18, -18, -51, -1, 72, 0, 0, 0, 0, -1, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 100, -14, -19, -51, -1, -1, -1, -1, -51, -19, -19, -51, -1, -1, 100, 32, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 32, 100, -51, -15, -19, -19, -5, -1, -1, -5, -51, -15, -15, -51, -5, -1, 100, 32, 32, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 100, -51, -128, -96, -96, -128, -51, -46, -83, -51, -128, -96, -96, -128, -51, -51, -51, 100, 32, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 32, -124, -14, -96, -28, -60, -96, -14, -47, -47, -15, -96, -60, -60, -96, -14, -14, -18, -124, 32, 0, -5, -123,
100, -1, 0, 0, 0, 0, 0, 0, 0, 100, -46, -14, -96, -60, -60, -128, -14, -46, -46, -15, -96, -60, -28, -96, -14, -51, -18, -124, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 101, -82, -51, -128, -96, -96, -128, -50, -78, -83, -51, -124, -128, -128, -128, -51, -46, -50, 100, 0, 0, -5, 100,
100, -5, 32, 0, 0, 0, 0, 0, 69, -1, -1, -5, -19, -19, -19, -19, -5, -1, -1, -5, -51, -19, -14, -51, -1, -5, -5, 100, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 69, -1, -1, -1, -51, -19, -18, -50, -1, -1, -1, -1, -51, -18, -19, -51, -1, -1, 100, 32, 32, 32, -5, -124,
100, -1, 0, 0, 0, 0, 32, 100, -1, -1, -1, -1, -51, -19, -19, -50, -1, -1, -1, -1, -51, -18, -18, -51, -1, -1, 105, 32, 0, 32, -5, 100,
100, -5, 0, 0, 0, 32, -124, -51, -5, -1, -1, -5, -19, -19, -14, -51, -5, -1, -1, -1, -19, -18, -18, -51, -1, 68, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 32, 100, -128, -128, -51, -46, -51, -51, -96, -96, -96, -128, -51, -79, -79, -51, -128, -96, -96, -128, 100, 32, 0, 0, 0, 0, -5, 100,
100, -5, 0, 32, -124, -87, -60, -128, -14, -46, -51, -14, -96, -60, -60, -96, -14, -47, -47, -14, -96, -60, -60, -124, 32, 0, 0, 0, 0, 0, -5, 100,
100, -5, 0, 32, -124, -92, -60, -96, -14, -46, -46, -14, -128, -60, -28, -96, -14, -46, -14, -14, -96, -60, -60, -124, 32, 0, 0, 0, 0, 0, -5, -124,
100, -5, 0, 0, 32, -124, -124, -128, -50, -46, -83, -51, -124, -96, -96, -128, -51, -78, -83, -51, -128, -96, -128, -124, 100, 0, 0, 0, 0, 0, -5, 100,
100, -1, 0, 0, 0, 32, -124, -50, -5, -1, -1, -1, -51, -14, -19, -51, -1, -1, -1, -1, -51, -19, -18, -51, -5, 68, 0, 0, 0, 0, -1, 100,
100, -5, 0, 0, 0, 0, 32, 101, -5, -1, -1, -1, -51, -14, -14, -51, -1, -1, -1, -1, -51, -14, -18, -51, -1, -1, 101, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 32, 32, 105, -1, -1, -1, -51, -19, -19, -51, -1, -1, -1, -1, -51, -19, -19, -19, -1, -1, 100, 32, 0, 0, -5, 100,
100, -5, 32, 0, 0, 0, 0, 0, 69, -1, -1, -1, -51, -19, -19, -19, -5, -1, -1, -5, -51, -18, -18, -19, -5, -1, -5, 100, 0, 0, -5, -123,
100, -5, 0, 0, 0, 0, 0, 0, 32, 100, -46, -51, -128, -96, -96, -96, -51, -51, -83, -51, -128, -96, -96, -128, -47, -83, -51, 100, 0, 0, -5, -124,
100, -1, 0, 0, 0, 0, 0, 0, 0, 100, -46, -14, -96, -60, -28, -96, -14, -14, -46, -14, -96, -60, -60, -96, -14, -46, -47, -124, 32, 32, -5, -124,
100, -1, 0, 0, 0, 0, 0, 0, 0, 32, 100, -14, -96, -60, -28, -96, -14, -47, -46, -14, -96, -60, -28, -96, -14, -46, -46, 100, 32, 32, -5, -124,
100, -1, 0, 0, 0, 0, 0, 0, 0, 0, 100, -51, -96, -96, -96, -128, -51, -83, -83, -47, -128, -96, -96, -128, -51, -83, -51, 100, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 32, -124, -51, -14, -15, -51, -5, -1, -1, -5, -51, -14, -19, -19, -5, -1, 100, 32, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -124, -51, -14, -51, -1, -1, -1, -1, -51, -19, -19, -51, -5, -1, 100, 32, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 100, -46, -83, -1, -1, -1, -1, -51, -19, -19, -51, -5, 69, 32, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -46, -5, -1, -1, -1, -51, -15, -14, -51, 105, 0, 0, 0, 0, 0, -5, 104,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 100, 100, -78, -78, -79, 100, -124, -124, 100, 32, 0, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 101, 68, 100, 100, 100, 32, 32, 0, 0, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, -5, 100,
100, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 100 };
struct pattern message5 = {32, 67,message5Data};
PROGMEM const prog_uchar message6Data[] =
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 64, 64, 32, 32, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -83, -83, -83, -83, -83, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, -83, -6, -6, -6, -6, -6, -83, 32,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, -115, -79, 32, -79, -6, -48, -48, -48, -47, -47, -7, -84,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -115, -6, -6, -6, -84, -84, -7, -48, -48, -7, -7, -47, -7, -52,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -115, -6, -6, -47, -48, -7, -52, -48, -16, -7, -48, -47, -6, -47, -52,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -79, -6, -47, -6, -6, -16, -52, -16, -48, -7, -47, -47, -6, -83, 32,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -83, -6, -47, -6, -7, -16, -52, -16, -16, -16, -7, -6, -83, 32, 32,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, -6, -48, -16, -16, -16, -20, -16, -16, -16, -48, -83, 32, 32, -120,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -83, -6, -16, -16, -20, -20, -20, -16, -16, -52, 32, 32, -119, 32,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -83, -52, -52, -20, -20, -20, -52, -52, 64, -120, 105, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 64, -88, -88, -56, -56, -56, -88, -88, 32, 32, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -83, -52, -52, -20, -20, -20, -52, -52, 64, -120, -120, 32, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, -6, -16, -16, -16, -16, -20, -16, -16, -52, 64, 32, 105, 32,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -79, -6, -47, -48, -16, -16, -20, -16, -16, -16, -16, -51, 32, 32, 105,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -83, -6, -47, -7, -7, -16, -52, -16, -16, -16, -7, -7, -83, 32, 32,
0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 0, 0, 0, 0, 0, 32, -83, -6, -47, -7, -7, -16, -52, -16, -16, -7, -48, -47, -6, -51, 64,
0, 0, 0, 0, 0, 0, 32, -114, -118, -118, -114, 32, 0, 0, 0, 0, 32, -79, -6, -6, -47, -48, -7, -52, -16, -16, -7, -48, -48, -7, -15, -52,
0, 0, 0, 0, 0, 32, -119, -5, -5, -5, -5, -119, 32, 0, 0, 0, 0, 0, -115, -6, -6, -7, -52, -52, -7, -16, -16, -7, -7, -48, -7, -84,
0, 0, 0, 0, 32, -114, -5, -5, -45, -46, -46, -5, -86, 32, 32, 0, 0, 32, 32, -115, -79, -79, 32, -84, -6, -48, -16, -16, -16, -48, -6, -84,
0, 0, 0, 0, 32, -118, -5, -45, -5, -5, -13, -14, -54, -86, -86, -86, -87, 32, 32, 0, 0, 0, 0, 32, -79, -6, -7, -7, -7, -6, -83, 32,
0, 0, 0, 32, 64, -86, -13, -13, -5, -5, -13, -13, -18, -13, -9, -9, -9, -86, 32, 0, 0, 0, 0, 0, 0, -83, -79, -84, -79, -115, 0, 0,
32, 32, -82, -86, -86, 64, -86, -13, -13, -13, -13, -54, -9, -13, -13, -13, -13, -9, -118, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
32, -86, -9, -9, -13, -86, 96, -54, -13, -13, -18, -17, -13, -13, -9, -9, -13, -45, -9, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-86, -9, -9, -13, -13, -13, -54, 97, -22, -17, -22, -13, -13, -9, -13, -13, -9, -13, -9, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-86, -9, -13, -9, -9, -13, -13, -22, -95, -22, -17, -13, -13, -9, -13, -13, -9, -13, -9, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-86, -9, -13, -9, -9, -13, -17, -17, -22, -95, -22, -17, -13, -13, -9, -9, -17, -13, -118, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-86, -9, -13, -13, -14, -13, -18, -18, -17, -22, -95, -22, -17, -13, -13, -13, -86, -86, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
32, -86, -9, -13, -13, -50, -17, -17, -17, -17, -22, -95, -54, -86, -86, -86, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
32, 32, -87, -86, -50, -9, -13, -13, -13, -13, -17, -54, -123, 64, 64, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 32, 32, -86, -9, -46, -13, -9, -5, -13, -17, -54, 64, -123, 101, 101, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 32, -86, -9, -13, -9, -45, -45, -9, -13, -86, 64, 101, 32, 32, 32, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 32, -86, -5, -45, -5, -45, -45, -9, -13, -86, 64, 105, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 32, -119, -9, -13, -13, -9, -9, -13, -86, 64, 32, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 32, -82, -9, -45, -13, -13, -45, -86, 32, 32, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 32, -82, -9, -9, -9, -82, 32, 0, 0, 0, 0, 0, 0, 78, 78, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 32, 32, -119, -82, -115, 32, 0, 0, 0, 0, 0, 0, 78, -33, -33, -33, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 32, 32, 0, 0, 0, 0, 0, 0, 0, 78, -33, -105, -105, -105, -105, 78, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -33, -105, -105, -33, -65, -105, 78, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -65, -105, -33, -105, -105, -65, -105, 78, 1, 42, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -65, -105, -65, -105, -105, -33, -105, 78, 1, 42, 1, 0, 0, 41, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -65, 119, -105, -33, -65, -105, -105, 78, 1, 42, 42, 42, 37, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 83, -69, 119, -105, -105, 119, 119, 79, 10, 1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, -33, -105, -105, 115, 119, 119, 119, 119, 83, 10, 79, 79, 78, 110, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -33, -105, -105, -105, 119, 83, 83, 119, 83, 10, 83, -105, -105, -105, -105, 78, 78, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -65, -105, -33, -65, -105, 119, 119, 83, 10, 83, 119, -105, -105, -65, -65, -105, -105, 78, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -65, -105, -33, -33, 119, 119, 115, 10, 83, 119, 119, 119, -65, -105, -105, -33, -105, -33, 78, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -65, -65, -105, -105, -105, 79, 1, 115, 119, 83, 119, 119, -65, -105, -105, -33, -105, -69, 78, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -33, -65, -105, 78, 1, 79, 119, 119, 83, -105, -105, -105, -33, -65, -105, -105, -33, 78, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78, 1, 78, 119, 119, 119, 119, 83, -65, -105, -105, -105, -105, -33, 78, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -105, -105, -65, -65, -105, -105, 83, -69, -65, -65, -33, 78, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -65, 119, -33, -65, -105, -105, 78, 78, 78, 78, 78, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -33, -33, -105, -105, -105, -33, 78, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, -33, -37, -33, -33, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 78, 110, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -42, -43, -43, -43, 0, 0, 0, 0, 0, -74, -43, -43, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -75, -2, -2, -2, -2, -43, 0, 0, 0, -43, -2, -2, -2, -2, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -74, -2, -2, -39, -7, -7, -2, -43, 0, -43, -2, -7, -39, -39, -2, -2, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -75, -2, -7, -2, -3, -7, -7, -44, 32, -43, -7, -7, -2, -2, -7, -2, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -43, -2, -7, -3, -3, -8, -8, -8, -80, -12, -8, -8, -3, -2, -7, -2, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 32, -44, -3, -8, -8, -8, -8, -8, -80, -8, -8, -8, -8, -8, -3, -43, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 32, -43, -44, -8, -8, -8, -8, -8, -12, -48, -8, -8, -8, -8, -8, -40, -44, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -43, -2, -3, -8, -8, -8, -8, -8, -8, -48, -8, -8, -8, -8, -8, -8, -3, -2, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -43, -2, -7, -8, -8, -8, -8, -8, -8, -12, -48, -12, -8, -8, -8, -8, -4, -7, -7, -2, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -43, -2, -7, -8, -3, -3, -8, -8, -7, -12, -80, -12, -8, -8, -8, -3, -3, -7, -7, -2, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -43, -2, -7, -3, -8, -7, -3, -7, -43, 32, -84, 32, -43, -7, -3, -7, -7, -2, -7, -2, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -75, -2, -7, -3, -7, -7, -2, -43, 32, -115, 32, -79, 32, -43, -2, -7, -7, -3, -7, -2, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -75, -2, -7, -7, -3, -2, -43, 32, 0, -111, 0, -115, 32, 32, -43, -2, -2, -39, -7, -2, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -43, -2, -2, -39, -43, 0, 0, -111, 0, 0, 0, -115, 0, 0, -43, -39, -2, -2, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -43, -43, -43, 0, 0, -111, 0, 0, 0, 0, 0, -111, 0, 0, -75, -75, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
struct pattern message6 = {32, 73,message6Data};
void setup() {
Serial.begin(9600);
// INITIALIZE TIMER INTERRUPTS
TCCR0A = (1<<WGM01); //Timer in CTC mode
TCCR0B = ((1<<CS01)|(1<<CS00)); //1:64 prescaler
OCR0A = 249; //Value to have an compare at every 1ms
TIMSK0 = (1<<OCIE0A); //Enable timer interrupts
sei(); //Enable global interrupts
LEDS.addLeds<WS2811, PIN, GRB>(leds, NUM_LEDS);
LEDS.setBrightness( BRIGHTNESS );
////////colour pallett code here:
currentPalette = RainbowStripeColors_p;
currentBlending = NOBLEND;
//eeprom read/set code here.
eeprom_option = EEPROM.read(eeprom_address);
eeprom_option = eeprom_option + 1;
if (eeprom_option > 2)
eeprom_option = 0;
EEPROM.write(eeprom_address, eeprom_option);
}
// TIMER VECTOR, gets called once a millisecond (depends on prescaler and match register)
ISR(TIMER0_COMPA_vect){
/* Reload the timer */
// do timing based stuff here
millisecs++;
switch(millisecs){
case 0:
variable = 3;
return;
break;
case 1920:
variable = 3;
return;
break;
case 5333:
variable = 4;
return;
break;
case 10922:
variable = 3;
return;
break;
case 16320:
variable = 4;
return;
break;
case 20522:
variable = 5;
return;
break;
case 24426:
variable = 6;
return;
break;
case 29226:
variable = 3;
return;
break;
case 32127:
variable = 4;
return;
break;
case 35136:
variable = 3;
return;
break;
case 40213:
variable = 4;
return;
break;
case 43818:
variable = 5;
return;
break;
case 49045:
variable = 6;
return;
break;
case 52437:
variable = 3;
return;
break;
case 67939:
variable = 4;
return;
break;
case 91209:
variable = 5;
return;
break;
case 118760:
variable = 6;
return;
break;
case 139355:
variable = 1;
return;
break;
case 157276:
variable = 2;
return;
break;
case 174127:
variable = 2;
return;
break;
case 176802:
variable = 3;
return;
break;
case 192316:
variable = 4;
return;
break;
case 205155:
variable = 5;
return;
break;
case 221203:
variable = 6;
return;
break;
//continuous pattern mode
}
}
void loop()
{
PROGMEM const prog_uchar *rgbx;
struct pattern *pat;
switch(eeprom_option){
case 0:
{
//////////////////////////////////////////////actions////////////////////////////////////////////
switch(variable){
case 0:
break;
case 1:
{
pat = &message1;
rgbx = pat->patData;
for (int j = 0; j < pat->numFrames; j++ ) {
for (int i = 0; i < pat->numLeds; i++) {
byte R1 = (pgm_read_byte_near(rgbx++) & 0xE0);
leds[i].r = R1; // /5 to bring brightness down - removed for this gig, brightnesss var should deal with it...?
byte G1 = ((pgm_read_byte_near(rgbx) << 3) & 0xE0);
leds[i].g = G1;
byte M1 = (pgm_read_byte_near(rgbx) << 6);
leds[i].b = M1;
}
LEDS.show();
//delay(1);
}
break;
}
case 2:
{
pat = &message2;
rgbx = pat->patData;
for (int j = 0; j < pat->numFrames; j++ ) {
for (int i = 0; i < pat->numLeds; i++) {
byte R1 = (pgm_read_byte_near(rgbx++) & 0xE0);
leds[i].r = R1; // /5 to bring brightness down
byte G1 = ((pgm_read_byte_near(rgbx) << 3) & 0xE0);
leds[i].g = G1;
byte M1 = (pgm_read_byte_near(rgbx) << 6);
leds[i].b = M1;
}
LEDS.show();
//delay(1);
}
break;
}
case 3:
{
pat = &message3;
rgbx = pat->patData;
for (int j = 0; j < pat->numFrames; j++ ) {
for (int i = 0; i < pat->numLeds; i++) {
byte R1 = (pgm_read_byte_near(rgbx++) & 0xE0);
leds[i].r = R1; // /5 to bring brightness down
byte G1 = ((pgm_read_byte_near(rgbx) << 3) & 0xE0);
leds[i].g = G1;
byte M1 = (pgm_read_byte_near(rgbx) << 6);
leds[i].b = M1;
}
LEDS.show();
//delay(1);
}
break;
}
case 4:
{
pat = &message4;
rgbx = pat->patData;
for (int j = 0; j < pat->numFrames; j++ ) {
for (int i = 0; i < pat->numLeds; i++) {
byte R1 = (pgm_read_byte_near(rgbx++) & 0xE0);
leds[i].r = R1; // /5 to bring brightness down
byte G1 = ((pgm_read_byte_near(rgbx) << 3) & 0xE0);
leds[i].g = G1;
byte M1 = (pgm_read_byte_near(rgbx) << 6);
leds[i].b = M1;
}
LEDS.show();
//delay(1);
}
break;
}
case 5:
{
pat = &message5;
rgbx = pat->patData;
for (int j = 0; j < pat->numFrames; j++ ) {
for (int i = 0; i < pat->numLeds; i++) {
byte R1 = (pgm_read_byte_near(rgbx++) & 0xE0);
leds[i].r = R1; // /5 to bring brightness down
byte G1 = ((pgm_read_byte_near(rgbx) << 3) & 0xE0);
leds[i].g = G1;
byte M1 = (pgm_read_byte_near(rgbx) << 6);
leds[i].b = M1;
}
LEDS.show();
//delay(1);
}
break;
}
case 6:
{
pat = &message6;
rgbx = pat->patData;
for (int j = 0; j < pat->numFrames; j++ ) {
for (int i = 0; i < pat->numLeds; i++) {
byte R1 = (pgm_read_byte_near(rgbx++) & 0xE0);
leds[i].r = R1; // /5 to bring brightness down
byte G1 = ((pgm_read_byte_near(rgbx) << 3) & 0xE0);
leds[i].g = G1;
byte M1 = (pgm_read_byte_near(rgbx) << 6);
leds[i].b = M1;
}
LEDS.show();
//delay(1);
}
break;
}
/////////////////////////////////////////////end actions///////////////////////////////////////////
}
break;
}
case 1: //Colour pallette code:
{
ChangePalettePeriodically();
static uint8_t startIndex = 0;
startIndex = startIndex + thickness; //PI; /* motion speed */
FillLEDsFromPaletteColors( startIndex);
//Serial.println(startIndex);
if (startIndex == 70){
upDown = false;
}
FastLED.show();
FastLED.delay(1000 / UPDATES_PER_SECOND);
break;
}
case 2: //Second Colour pallette code:
{
//currentPalette = myRedWhiteBluePalette_p;
ChangePalettePeriodically();
static uint8_t startIndex = 0;
if(upDown == true) {
startIndex = startIndex + thickness; //PI; /* motion speed */
FillLEDsFromPaletteColors( startIndex);
//Serial.println(startIndex);
if (startIndex == 70){
upDown = false;
}
}
else {
startIndex = startIndex - thickness;// PI; /* motion speed */
FillLEDsFromPaletteColors( startIndex);
//Serial.println(startIndex);
if (startIndex == 0){
upDown = true;
}
}
FastLED.show();
FastLED.delay(1000 / UPDATES_PER_SECOND);
break;
}
}
///////////////////////////end eeprom switch/////////////////
}
//colour pallette code:
void FillLEDsFromPaletteColors( uint8_t colorIndex)
{
uint8_t brightness = 255;
for( int i = 0; i < NUM_LEDS; i++) {
leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending);
colorIndex += 3;
}
}
void add_glitter() //from https://gist.github.com/kriegsman/ccffc81a74bc03636ce1
{
int chance_of_glitter = 10; // percent of the time that we add glitter
int number_of_glitters = 5; // number of glitter sparkles to add
int r = random8(100);
if( r < chance_of_glitter ) {
for( int j = 0; j < number_of_glitters; j++) {
int pos = random16( NUM_LEDS);
leds[pos] = CRGB::White; // very bright glitter
}
}
}
void ChangePalettePeriodically()
{
uint8_t secondHand = (millis() / 1000) % 60;
static uint8_t lastSecond = 99;
if( lastSecond != secondHand) {
lastSecond = secondHand;
//if( secondHand == 1) { SetupVariablePalette(CRGB::Red, CRGB::Gray, CRGB::Blue, CRGB::Black); }
if( secondHand == 15) { currentPalette = myRedWhiteBluePalette_p; currentBlending = NOBLEND; thickness = 1; }
//if( secondHand == 20) { SetupVariablePalette(CRGB::Green, CRGB::Gray, CRGB::Pink, CRGB::Black); }
if( secondHand == 25) { currentPalette = RainbowStripeColors_p; currentBlending = NOBLEND; thickness = 2;}
//if( secondHand == 30) { SetupVariablePalette(CRGB::Orange, CRGB::Gray, CRGB::Cyan, CRGB::Black); }
if( secondHand == 35) { currentPalette = myRedWhiteBluePalette_p; currentBlending = NOBLEND; thickness = 3;}
//if( secondHand == 40) { SetupVariablePalette(CRGB::Magenta, CRGB::Gray, CRGB::Yellow, CRGB::Black); }
if( secondHand == 45) { currentPalette = PartyColors_p; currentBlending = NOBLEND; thickness = PI; }
//if( secondHand == 50) { SetupVariablePalette(CRGB::Blue, CRGB::Gray, CRGB::Green, CRGB::Black); }
if( secondHand == 55) { currentPalette = LavaColors_p; currentBlending = NOBLEND; thickness = PI/2;}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment