//
// ESP32 Starbucks Logo 44x44 with Scroll & Fade - this sketch uses 4 44x11 panels
// to create a 44x44 logo matrix. It included the capability to both scroll
// and fade the logo.
//
// LOGO_MAX_BRIGHTNESS - integer 0 to 255 defining the maximum brightness of the logo
//
// LOGO_SCROLL_ENABLED - set to true or false to enable/disable logo scrolling
// LOGO_SCROLL_STEP_PAUSE - time in milliseconds of the pause after each scroll step
// LOGO_SCROLL_END_PAUSE - time in milliseconds of the pause after one complete scroll cycle
//
// LOGO_FADE_ENABLED - set to true or false to enable/disable logo fading
// LOGO_FADE_RATE - an integer value from 0 to 8 defining the fade rate where 0 is the slowest and 8 is the fastest,
// this value specifies the number of steps when the logo fades in or out
// 0 = 256 steps 1 = 128 step 2 = 64 steps 3 = 32 steps 4 = 16 steps
// 5 = 8 steps 6 = 4 step 7 = 2 steps 8 = 1 step
// LOGO_FADE_END_PAUSE - time in milliseconds of the pause after one complete fade cycle
//
// -- Logo Display Settings ----------------------------------------------------------
#define LOGO_MAX_BRIGHTNESS 255 // Integer 0 to 255 (255 is max brightness)
#define LOGO_SCROLL_ENABLED true // false or true
#define LOGO_SCROLL_STEP_PAUSE 20 // Time delay in milliseconds
#define LOGO_SCROLL_END_PAUSE 1000 // Time delay in milliseconds
#define LOGO_FADE_ENABLED true // false or true
#define LOGO_FADE_RATE 4 // Integer 0 to 8 for fade rate
#define LOGO_FADE_END_PAUSE 2000 // Time delay in milliseconds
// -- End of Logo Display Settings ---------------------------------------------------
// Include libraries
#include <Adafruit_NeoPixel.h>
#include <Adafruit_NeoMatrix.h>
// Define the two logo panels
#define PANEL_A_PIN 2
#define PANEL_B_PIN 4
#define WIDTH 44
#define HEIGHT 44
// Define the two matrices each as 44x22
Adafruit_NeoMatrix messagePanelA = Adafruit_NeoMatrix(44, 11, 1, 2, PANEL_A_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE +
NEO_TILE_TOP + NEO_TILE_LEFT + NEO_TILE_ROWS + NEO_TILE_PROGRESSIVE,
NEO_GRB + NEO_KHZ800);
Adafruit_NeoMatrix messagePanelB = Adafruit_NeoMatrix(44, 11, 1, 2, PANEL_B_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE +
NEO_TILE_TOP + NEO_TILE_LEFT + NEO_TILE_ROWS + NEO_TILE_PROGRESSIVE,
NEO_GRB + NEO_KHZ800);
//
// Define logo color array
//
uint16_t logoColors[WIDTH * HEIGHT];
long rawHexColors[WIDTH * HEIGHT] = {
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfdfefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe,
0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe,
0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7a5d, 0xfefefe,
0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0xfdfefe,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x097a5c, 0x097b5c, 0x519380, 0xfefefe,
0xfefefe, 0xf8fffd, 0x217760, 0x097b5c, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0xfefefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5e, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefdfe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7a5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfdfefd, 0x0a7b5d, 0xfefefe, 0x097b5d,
0x0a7b5d, 0xfefefe, 0x0a7356, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5c, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d,
0x0f785b, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x94cdbf, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x097a5c, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0x2b7c62, 0x0a7b5d, 0xfefefe, 0xfefefd, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xacd5ca, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x3c8973, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x047755, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfbfffe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x88b5a8, 0xfdfefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xfefefe, 0xfdfefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x097a5c, 0xfefefe,
0xfefefe, 0xfefefe, 0x57a28d, 0x0a7b5d, 0x097b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xf6fdfb, 0x0a7b5d, 0x0a7b5e, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe,
0xfefefe, 0x097a5c, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x097b5d, 0xfefefe, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfdfffe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe,
0xfefefe, 0x0a7b5c, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfafefd, 0xfefefe, 0x0a7b5d, 0xa0c6bb, 0x0a7b5d, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xffffff, 0xffffff,
0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe,
0x4a9681, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x75ae9d, 0xfefefe, 0x0a7b5d, 0x0a7b5d,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff,
0xffffff, 0xfefefe, 0xfefdfd, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x097a5c,
0x0a7b5d, 0x0a7b5d, 0x0a7a5c, 0xfdfefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe,
0x077a5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5c, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff,
0xffffff, 0xfefefe, 0x0a7b5d, 0x4e9782, 0xfefefe, 0xfefefe, 0xfefefe, 0x0d7356, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x017957, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x67a18e, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x097b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfdfefe, 0x0a7b5d, 0xfefefe, 0xffffff,
0xffffff, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x017654, 0xe4ecea, 0x0a7b5d, 0xd0e1da, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0x087c5b,
0x0a7a5d, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfdfefe, 0x0a7b5d, 0xfefefd, 0x097b5d, 0xe0e8e5, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x097b5d, 0xfefdfe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xffffff,
0xffffff, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xc8e0d8, 0xfefefe, 0xfefefd, 0xfcfffe,
0xfcfffe, 0xfdfdfd, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xffffff,
0xffffff, 0xfefefe, 0xfefefe, 0xfdfefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d,
0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0x579884, 0xfefefe, 0xfefefe, 0xffffff,
0xffffff, 0xfefefe, 0xfefefe, 0xfefefe, 0xfcfefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xa6c7bd, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0x0a7b5d, 0xd9e6e1, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xd4ebe6, 0xfefefe, 0xfefefe, 0xfefefe, 0xffffff,
0xffffff, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x097b5d, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d,
0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xffffff, 0xdce7e4, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0xfefdfe, 0x0a7b5e, 0x097a5c, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0x0a7a5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xffffff, 0xffffff,
0xfefefe, 0xfefefe, 0xfefdfe, 0xfefefe, 0xfefefe, 0x097c5c, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x097b5b, 0xfefefe, 0xfefefe, 0xfefdfe, 0xfefdfe, 0xfefefe, 0xffffff, 0xffffff,
0xfefefe, 0xfefefe, 0xfefefe, 0x0c7456, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0xfefefe, 0x0a7b5d, 0xfefefe, 0x0b7a5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0x0a7b5d, 0xfffdfe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a785c, 0xfefefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff,
0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xcfece4, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7a5d,
0x09795a, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x448c77, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5e, 0x0a7b5d, 0xfefefe, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xd5f0e8, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfdfefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe,
0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5c, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xf5faf9, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfdfefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff,
0xffffff, 0xfefefe, 0xfefefe, 0x097a5c, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe,
0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x04795a, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xfefefe, 0xf7fbfa, 0x0a7b5d, 0xfdfdfd, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe,
0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xb5d0c7, 0xfefdfe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x067859, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe,
0x0a7b5d, 0x0a7b5d, 0x9fc5b9, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0x0a7b5d, 0x30826a, 0xa0c7bc, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7a5c, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0b7658, 0xfdfefd, 0x0a7b5d, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0xfdfefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefdfd, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x097b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfdfdfd, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0x0a7b5d, 0xdbebe6, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfdfdfd, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x097c5c, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfdfefe, 0xfefefe, 0xfefefe,
0xfefdfe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x097b5d, 0x4c947e, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefdfe, 0xfefefe, 0xfefefe,
0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d,
0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe,
0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x2c7f66, 0x0a7b5d, 0x097c5d, 0xfefefe, 0x0a7b5d,
0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x1f8063, 0xfefefe,
0x0a7b5d, 0xfefefd, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe,
0xfefefe, 0xfafefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe,
0x087657, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xdfeeea, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe,
0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfdfefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xd2e9e1, 0x0a7b5d, 0xfefefe,
0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d,
0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x5d9d89, 0x0a7b5d, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x097b5d,
0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0x0a7b5d, 0xfefefe, 0x0a7b5d,
0xfefefe, 0x097b5d, 0x0a7b5d, 0x097b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0x38866f, 0xdee8e4, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d,
0x398d73, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0x0a7b5d,
0xfdfefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe,
0x0a7b5e, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0x0a7b5d, 0xfefefe, 0xfefefe, 0xfefefe,
0xfefefe, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xfefefe,
0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xfefefe, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
0xffffff, 0xffffff, 0xffffff, 0xffffff
};
//
// Setup function
//
void setup() {
Serial.begin(15200);
Serial.println("setup started.");
messagePanelA.begin();
messagePanelA.setBrightness(LOGO_MAX_BRIGHTNESS);
messagePanelB.begin();
messagePanelB.setBrightness(LOGO_MAX_BRIGHTNESS);
buildLogoColorArray();
Serial.println("setup complete.");
}
//
// Loop function
//
void loop() {
Serial.println("New loop started");
int numberOfRowsToScroll;
if (LOGO_SCROLL_ENABLED) {
numberOfRowsToScroll = HEIGHT;
} else {
numberOfRowsToScroll = 0;
}
// Logo scroll code
Serial.println(" Logo scroll started");
for (int scrollStep=0; scrollStep<=numberOfRowsToScroll; scrollStep++) {
drawLogoOnAllPixels(scrollStep);
messagePanelA.show();
messagePanelB.show();
delay(LOGO_SCROLL_STEP_PAUSE);
}
Serial.println(" Logo scroll-end pause started");
delay(LOGO_SCROLL_END_PAUSE);
// Logo fade code
Serial.println(" Logo fade started");
if (LOGO_FADE_ENABLED) {
const int numberOfFadeIncrements = ( 256 / (1 << LOGO_FADE_RATE));
// const int fadeIncrementor = ((1 << LOGO_FADE_RATE) % 257);
const int fadeIncrementor = LOGO_MAX_BRIGHTNESS / numberOfFadeIncrements;
int brightness = LOGO_MAX_BRIGHTNESS;
// Debug print statements
//Serial.print("LOGO_MAX_BRIGHTNESS = ");Serial.println(LOGO_MAX_BRIGHTNESS);
//Serial.print("numberOfFadeIncrements = ");Serial.println(numberOfFadeIncrements);
//Serial.print("fadeIncrementor = ");Serial.println(fadeIncrementor);
//Serial.println("-----------------------------");
for (int fadeIterator=0; fadeIterator<=(2*numberOfFadeIncrements); fadeIterator++) {
// Determine brightness value
if ((fadeIterator >= 0) && (fadeIterator < (numberOfFadeIncrements))) {
brightness = brightness - fadeIncrementor;
} else if (fadeIterator == numberOfFadeIncrements) {
brightness = 0;
} else if (fadeIterator <= ((2*numberOfFadeIncrements))) {
brightness = brightness + fadeIncrementor;
}
// Debug print statements
//Serial.print("fadeIterator = ");Serial.println(fadeIterator);
//Serial.print("brightness = ");Serial.println(brightness);
// Limit brightness to values in range 0..255
if (brightness < 0) {brightness = 0;}
if (brightness > LOGO_MAX_BRIGHTNESS) {brightness = LOGO_MAX_BRIGHTNESS;}
if (brightness > 255) {brightness = 255;}
// pdate the brightness of both panels
messagePanelA.setBrightness(brightness);
messagePanelB.setBrightness(brightness);
// As changing the brightness can be a "lossy" operation (per the NeoPixel documentation).
// redraw the logo to insure the new brightness value is correctly applied to all of the pixels
// and use a scroll step of 0 because we want the logo displayed without any scrolling
drawLogoOnAllPixels(0);
messagePanelA.show();
messagePanelB.show();
}
}
Serial.println(" Logo fade-end pause started");
// Display logo at full brightness
messagePanelA.setBrightness(LOGO_MAX_BRIGHTNESS);
messagePanelB.setBrightness(LOGO_MAX_BRIGHTNESS);
messagePanelA.show();
messagePanelB.show();
delay(LOGO_FADE_END_PAUSE);
Serial.println("End of loop");
}
//
// Support functions
//
void buildLogoColorArray() {
int index=0;
long colors;
int colorR;
int colorG;
int colorB;
for (int i=0; i<=((WIDTH*HEIGHT)-1); i++) {
colors = rawHexColors[index];
colorR = colors / 0x10000;
colors = colors % 0x10000;
colorG = colors / 0x100;
colorB = colors % 0x100;
logoColors[index] = messagePanelA.Color(colorR, colorG, colorB);
index++;
}
}
void drawLogoOnAllPixels(int scrollStep) {
for (int y=0; y<=(HEIGHT-1); y++) {
for (int x=0; x<=(WIDTH-1); x++) {
int colorIndex = (((y*WIDTH) + x) + (scrollStep*WIDTH)) % (WIDTH*HEIGHT);
if (y<22) {
messagePanelA.drawPixel(x,y,logoColors[colorIndex]);
} else {
messagePanelB.drawPixel(x,(y-22),logoColors[colorIndex]);
}
}
}
}
X Coordinate -->
Y Coordinate -->