This commit is contained in:
lady ada 2020-06-05 19:27:55 -04:00
parent 29319db015
commit 81de3d04ec
3 changed files with 261 additions and 186 deletions

View file

@ -19,9 +19,10 @@
*
* @section dependencies Dependencies
*
* This library depends on <a href="https://github.com/adafruit/Adafruit-GFX-Library">
* Adafruit_GFX</a> being present on your system. Please make sure you have
* installed the latest version before using this library.
* This library depends on <a
* href="https://github.com/adafruit/Adafruit-GFX-Library"> Adafruit_GFX</a>
* being present on your system. Please make sure you have installed the latest
* version before using this library.
*
* @section author Author
*
@ -38,7 +39,6 @@
#include "Adafruit_SH110X.h"
#include "splash.h"
// CONSTRUCTORS, DESTRUCTOR ------------------------------------------------
/*!
@ -75,10 +75,9 @@
allocation is performed there!
*/
Adafruit_SH110X::Adafruit_SH110X(uint16_t w, uint16_t h, TwoWire *twi,
int8_t rst_pin, uint32_t clkDuring, uint32_t clkAfter) :
Adafruit_MonoOLED(w, h, twi, rst_pin, clkDuring, clkAfter)
{
}
int8_t rst_pin, uint32_t clkDuring,
uint32_t clkAfter)
: Adafruit_MonoOLED(w, h, twi, rst_pin, clkDuring, clkAfter) {}
/*!
@brief Constructor for SPI SH110X displays, using software (bitbang)
@ -107,9 +106,10 @@ Adafruit_SH110X::Adafruit_SH110X(uint16_t w, uint16_t h, TwoWire *twi,
@note Call the object's begin() function before use -- buffer
allocation is performed there!
*/
Adafruit_SH110X::Adafruit_SH110X(uint16_t w, uint16_t h, int8_t mosi_pin,
int8_t sclk_pin, int8_t dc_pin, int8_t rst_pin, int8_t cs_pin) : Adafruit_MonoOLED(w, h, mosi_pin, sclk_pin, dc_pin, rst_pin, cs_pin) {
}
Adafruit_SH110X::Adafruit_SH110X(uint16_t w, uint16_t h, int8_t mosi_pin,
int8_t sclk_pin, int8_t dc_pin, int8_t rst_pin,
int8_t cs_pin)
: Adafruit_MonoOLED(w, h, mosi_pin, sclk_pin, dc_pin, rst_pin, cs_pin) {}
/*!
@brief Constructor for SPI SH110X displays, using native hardware SPI.
@ -138,15 +138,14 @@ Adafruit_SH110X::Adafruit_SH110X(uint16_t w, uint16_t h, int8_t mosi_pin,
allocation is performed there!
*/
Adafruit_SH110X::Adafruit_SH110X(uint16_t w, uint16_t h, SPIClass *spi,
int8_t dc_pin, int8_t rst_pin, int8_t cs_pin, uint32_t bitrate) :
Adafruit_MonoOLED(w, h, spi, dc_pin, rst_pin, cs_pin, bitrate) {
}
int8_t dc_pin, int8_t rst_pin, int8_t cs_pin,
uint32_t bitrate)
: Adafruit_MonoOLED(w, h, spi, dc_pin, rst_pin, cs_pin, bitrate) {}
/*!
@brief Destructor for Adafruit_SH110X object.
*/
Adafruit_SH110X::~Adafruit_SH110X(void) {
}
Adafruit_SH110X::~Adafruit_SH110X(void) {}
// ALLOCATE & INIT DISPLAY -------------------------------------------------
@ -186,46 +185,44 @@ bool Adafruit_SH110X::begin(uint8_t addr, boolean reset) {
setContrast(0x2F);
// the featherwing with 128x64 oled is 'rotated' so to make the splash right, rotate!
// the featherwing with 128x64 oled is 'rotated' so to make the splash right,
// rotate!
if (WIDTH == 64 && HEIGHT == 128) {
setRotation(1);
drawBitmap((HEIGHT - splash2_width) / 2,
(WIDTH - splash2_height) / 2,
drawBitmap((HEIGHT - splash2_width) / 2, (WIDTH - splash2_height) / 2,
splash2_data, splash2_width, splash2_height, 1);
setRotation(0);
}
// Init sequence, make sure its under 32 bytes, or split into multiples!
static const uint8_t init[] = {
SH110X_DISPLAYOFF, // 0xAE
SH110X_SETDISPLAYCLOCKDIV, 0x51, // 0xd5, 0x51,
SH110X_MEMORYMODE, // 0x20
SH110X_SETCONTRAST, 0x4F, // 0x81, 0x4F
SH110X_DCDC, 0x8A, // 0xAD, 0x8A
SH110X_SEGREMAP, // 0xA0
SH110X_COMSCANINC, // 0xC0
SH110X_SETDISPSTARTLINE, 0x0, // 0xDC 0x00
SH110X_SETDISPLAYOFFSET, 0x60, // 0xd3, 0x60,
SH110X_SETPRECHARGE, 0x22, // 0xd9, 0x22,
SH110X_SETVCOMDETECT, 0x35, // 0xdb, 0x35,
SH110X_SETMULTIPLEX, 0x3F, // 0xa8, 0x3f,
//SH110X_SETPAGEADDR, // 0xb0
//SH110X_SETCOMPINS, 0x12, // 0xda, 0x12,
SH110X_DISPLAYALLON_RESUME, // 0xa4
SH110X_NORMALDISPLAY, // 0xa6
SH110X_DISPLAYOFF, // 0xAE
SH110X_SETDISPLAYCLOCKDIV, 0x51, // 0xd5, 0x51,
SH110X_MEMORYMODE, // 0x20
SH110X_SETCONTRAST, 0x4F, // 0x81, 0x4F
SH110X_DCDC, 0x8A, // 0xAD, 0x8A
SH110X_SEGREMAP, // 0xA0
SH110X_COMSCANINC, // 0xC0
SH110X_SETDISPSTARTLINE, 0x0, // 0xDC 0x00
SH110X_SETDISPLAYOFFSET, 0x60, // 0xd3, 0x60,
SH110X_SETPRECHARGE, 0x22, // 0xd9, 0x22,
SH110X_SETVCOMDETECT, 0x35, // 0xdb, 0x35,
SH110X_SETMULTIPLEX, 0x3F, // 0xa8, 0x3f,
// SH110X_SETPAGEADDR, // 0xb0
// SH110X_SETCOMPINS, 0x12, // 0xda, 0x12,
SH110X_DISPLAYALLON_RESUME, // 0xa4
SH110X_NORMALDISPLAY, // 0xa6
};
if (! oled_commandList(init, sizeof(init))) {
if (!oled_commandList(init, sizeof(init))) {
return false;
}
delay(100); // 100ms delay recommended
oled_command(SH110X_DISPLAYON); // 0xaf
delay(100); // 100ms delay recommended
oled_command(SH110X_DISPLAYON); // 0xaf
return true; // Success
}
// REFRESH DISPLAY ---------------------------------------------------------
/*!
@ -245,7 +242,7 @@ void Adafruit_SH110X::display(void) {
yield();
uint16_t count = WIDTH * ((HEIGHT + 7) / 8);
uint8_t *ptr = buffer;
uint8_t *ptr = buffer;
uint8_t dc_byte = 0x40;
uint8_t pages = ((HEIGHT + 7) / 8);
@ -265,17 +262,17 @@ void Adafruit_SH110X::display(void) {
*/
uint8_t first_page = window_y1 / 8;
uint8_t last_page = (window_y2+7) / 8;
uint8_t last_page = (window_y2 + 7) / 8;
uint8_t page_start = min(bytes_per_page, (uint8_t)window_x1);
uint8_t page_end = (uint8_t)max((int)0, (int)window_x2);
/*
Serial.print("Pages: ");
Serial.print("Pages: ");
Serial.print(first_page);
Serial.print(" -> ");
Serial.println(last_page);
pages = min(pages, last_page);
Serial.print("Page addr: ");
Serial.print("Page addr: ");
Serial.print(page_start);
Serial.print(" -> ");
Serial.println(page_end);
@ -285,17 +282,17 @@ void Adafruit_SH110X::display(void) {
// Set high speed clk
i2c_dev->setSpeed(i2c_preclk);
for (uint8_t p=first_page; p<pages; p++) {
for (uint8_t p = first_page; p < pages; p++) {
uint8_t bytes_remaining = bytes_per_page;
ptr = buffer + (uint16_t)p * (uint16_t)bytes_per_page;
// fast forward to dirty rectangle beginning
ptr += page_start;
bytes_remaining -= page_start;
// cut off end of dirty rectangle
bytes_remaining -= (WIDTH-1) - page_end;
bytes_remaining -= (WIDTH - 1) - page_end;
uint8_t cmd[] = {0x00, SH110X_SETPAGEADDR + p,
0x10 + (page_start >> 4), page_start & 0xF};
uint8_t cmd[] = {0x00, SH110X_SETPAGEADDR + p, 0x10 + (page_start >> 4),
page_start & 0xF};
i2c_dev->write(cmd, 4);
while (bytes_remaining) {
@ -310,8 +307,8 @@ void Adafruit_SH110X::display(void) {
i2c_dev->setSpeed(i2c_postclk);
} else { // SPI
//SH110X_MODE_DATA
//while(count--) SPIwrite(*ptr++);
// SH110X_MODE_DATA
// while(count--) SPIwrite(*ptr++);
}
// reset dirty window
window_x1 = 1024;
@ -319,4 +316,3 @@ void Adafruit_SH110X::display(void) {
window_x2 = -1;
window_y2 = -1;
}

View file

@ -27,58 +27,63 @@
#include <Adafruit_MonoOLED.h>
/// fit into the SH110X_ naming scheme
#define SH110X_BLACK 0 ///< Draw 'off' pixels
#define SH110X_WHITE 1 ///< Draw 'on' pixels
#define SH110X_INVERSE 2 ///< Invert pixels
#define SH110X_BLACK 0 ///< Draw 'off' pixels
#define SH110X_WHITE 1 ///< Draw 'on' pixels
#define SH110X_INVERSE 2 ///< Invert pixels
#define SH110X_MEMORYMODE 0x20 ///< See datasheet
#define SH110X_COLUMNADDR 0x21 ///< See datasheet
#define SH110X_PAGEADDR 0x22 ///< See datasheet
#define SH110X_SETCONTRAST 0x81 ///< See datasheet
#define SH110X_CHARGEPUMP 0x8D ///< See datasheet
#define SH110X_SEGREMAP 0xA0 ///< See datasheet
#define SH110X_MEMORYMODE 0x20 ///< See datasheet
#define SH110X_COLUMNADDR 0x21 ///< See datasheet
#define SH110X_PAGEADDR 0x22 ///< See datasheet
#define SH110X_SETCONTRAST 0x81 ///< See datasheet
#define SH110X_CHARGEPUMP 0x8D ///< See datasheet
#define SH110X_SEGREMAP 0xA0 ///< See datasheet
#define SH110X_DISPLAYALLON_RESUME 0xA4 ///< See datasheet
#define SH110X_DISPLAYALLON 0xA5 ///< Not currently used
#define SH110X_NORMALDISPLAY 0xA6 ///< See datasheet
#define SH110X_INVERTDISPLAY 0xA7 ///< See datasheet
#define SH110X_SETMULTIPLEX 0xA8 ///< See datasheet
#define SH110X_DCDC 0xAD ///< See datasheet
#define SH110X_DISPLAYOFF 0xAE ///< See datasheet
#define SH110X_DISPLAYON 0xAF ///< See datasheet
#define SH110X_SETPAGEADDR 0xB0 ///< Specify page address to load display RAM data to page address register
#define SH110X_COMSCANINC 0xC0 ///< Not currently used
#define SH110X_COMSCANDEC 0xC8 ///< See datasheet
#define SH110X_SETDISPLAYOFFSET 0xD3 ///< See datasheet
#define SH110X_SETDISPLAYCLOCKDIV 0xD5 ///< See datasheet
#define SH110X_SETPRECHARGE 0xD9 ///< See datasheet
#define SH110X_SETCOMPINS 0xDA ///< See datasheet
#define SH110X_SETVCOMDETECT 0xDB ///< See datasheet
#define SH110X_SETDISPSTARTLINE 0xDC ///< Specify Column address to determine the initial display line or COM0.
#define SH110X_DISPLAYALLON 0xA5 ///< Not currently used
#define SH110X_NORMALDISPLAY 0xA6 ///< See datasheet
#define SH110X_INVERTDISPLAY 0xA7 ///< See datasheet
#define SH110X_SETMULTIPLEX 0xA8 ///< See datasheet
#define SH110X_DCDC 0xAD ///< See datasheet
#define SH110X_DISPLAYOFF 0xAE ///< See datasheet
#define SH110X_DISPLAYON 0xAF ///< See datasheet
#define SH110X_SETPAGEADDR \
0xB0 ///< Specify page address to load display RAM data to page address
///< register
#define SH110X_COMSCANINC 0xC0 ///< Not currently used
#define SH110X_COMSCANDEC 0xC8 ///< See datasheet
#define SH110X_SETDISPLAYOFFSET 0xD3 ///< See datasheet
#define SH110X_SETDISPLAYCLOCKDIV 0xD5 ///< See datasheet
#define SH110X_SETPRECHARGE 0xD9 ///< See datasheet
#define SH110X_SETCOMPINS 0xDA ///< See datasheet
#define SH110X_SETVCOMDETECT 0xDB ///< See datasheet
#define SH110X_SETDISPSTARTLINE \
0xDC ///< Specify Column address to determine the initial display line or
///< COM0.
#define SH110X_SETLOWCOLUMN 0x00 ///< Not currently used
#define SH110X_SETHIGHCOLUMN 0x10 ///< Not currently used
#define SH110X_SETSTARTLINE 0x40 ///< See datasheet
#define SH110X_SETLOWCOLUMN 0x00 ///< Not currently used
#define SH110X_SETHIGHCOLUMN 0x10 ///< Not currently used
#define SH110X_SETSTARTLINE 0x40 ///< See datasheet
/*!
@brief Class that stores state and functions for interacting with
SH110X OLED displays.
*/
class Adafruit_SH110X : public Adafruit_MonoOLED {
public:
public:
// NEW CONSTRUCTORS -- recommended for new projects
Adafruit_SH110X(uint16_t w, uint16_t h, TwoWire *twi=&Wire, int8_t rst_pin=-1,
uint32_t preclk=400000, uint32_t postclk=100000);
Adafruit_SH110X(uint16_t w, uint16_t h, TwoWire *twi = &Wire,
int8_t rst_pin = -1, uint32_t preclk = 400000,
uint32_t postclk = 100000);
Adafruit_SH110X(uint16_t w, uint16_t h, int8_t mosi_pin, int8_t sclk_pin,
int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
Adafruit_SH110X(uint16_t w, uint16_t h, SPIClass *spi,
int8_t dc_pin, int8_t rst_pin, int8_t cs_pin, uint32_t bitrate=8000000UL);
int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
Adafruit_SH110X(uint16_t w, uint16_t h, SPIClass *spi, int8_t dc_pin,
int8_t rst_pin, int8_t cs_pin, uint32_t bitrate = 8000000UL);
~Adafruit_SH110X(void);
bool begin(uint8_t i2caddr=0x3C, boolean reset=true);
void display(void);
bool begin(uint8_t i2caddr = 0x3C, boolean reset = true);
void display(void);
private:
private:
};
#endif // _Adafruit_SH110X_H_

270
splash.h
View file

@ -1,108 +1,182 @@
#define splash1_width 82
#define splash1_width 82
#define splash1_height 64
const uint8_t PROGMEM splash1_data[] = {
B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B10000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B10000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11100000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11110000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00011111,B11111000,B01111111,B11110000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00111111,B11111110,B01111111,B11110000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00111111,B11111111,B01111111,B11110000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00011111,B11111111,B11111011,B11100000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00001111,B11111111,B11111001,B11111111,B11000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00001111,B11111111,B11111001,B11111111,B11111000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000111,B11111111,B11110001,B11111111,B11111111,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000011,B11111100,B01110011,B11111111,B11111111,B10000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000001,B11111110,B00111111,B11111111,B11111111,B10000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B11111111,B00011110,B00001111,B11111111,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B01111111,B11111110,B00011111,B11111100,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00001111,B11011111,B11111111,B11100000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00011111,B00011001,B11111111,B11000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00111111,B00111100,B11111111,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B01111110,B01111100,B11111000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B01111111,B11111110,B01111100,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B11111100,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000001,B11111111,B11101111,B11111110,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000001,B11111111,B11001111,B11111110,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000011,B11111111,B00000111,B11111110,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000011,B11111100,B00000111,B11111110,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000011,B11110000,B00000011,B11111110,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000001,B10000000,B00000000,B11111110,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111110,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111110,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001100,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B00000111,B10000000,B00000000,B11111100,B00000000,B00000000,B00000011,B11000000,B00000000,
B00000000,B00000000,B00000111,B10000000,B00000001,B11111100,B00000000,B00000000,B00000011,B11000000,B00000000,
B00000000,B00000000,B00000111,B10000000,B00000001,B11111100,B00000000,B00000000,B00000011,B11000000,B00000000,
B00000000,B00000000,B00000111,B10000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00011110,B00000000,
B00000000,B00000000,B00000111,B10000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00011110,B00000000,
B01111111,B11100011,B11110111,B10011111,B11111001,B11111101,B11100111,B01111000,B01111011,B11011111,B11000000,
B11111111,B11110111,B11111111,B10111111,B11111101,B11111101,B11111111,B01111000,B01111011,B11011111,B11000000,
B11111111,B11110111,B11111111,B10111111,B11111101,B11111101,B11111111,B01111000,B01111011,B11011111,B11000000,
B11110000,B11110111,B10000111,B10111100,B00111101,B11100001,B11111111,B01111000,B01111011,B11011110,B00000000,
B11110000,B11110111,B10000111,B10111100,B00111101,B11100001,B11110000,B01111000,B01111011,B11011110,B00000000,
B00000000,B11110111,B10000111,B10000000,B00111101,B11100001,B11100000,B01111000,B01111011,B11011110,B00000000,
B01111111,B11110111,B10000111,B10011111,B11111101,B11100001,B11100000,B01111000,B01111011,B11011110,B00000000,
B11111111,B11110111,B10000111,B10111111,B11111101,B11100001,B11100000,B01111000,B01111011,B11011110,B00000000,
B11110000,B11110111,B10000111,B10111100,B00111101,B11100001,B11100000,B01111000,B01111011,B11011110,B00000000,
B11110000,B11110111,B10000111,B10111100,B00111101,B11100001,B11100000,B01111000,B01111011,B11011110,B00000000,
B11110000,B11110111,B10000111,B10111100,B00111101,B11100001,B11100000,B01111000,B01111011,B11011110,B00000000,
B11111111,B11110111,B11111111,B10111111,B11111101,B11100001,B11100000,B01111111,B11111011,B11011111,B11000000,
B11111111,B11110111,B11111111,B10111111,B11111101,B11100001,B11100000,B01111111,B11111011,B11011111,B11000000,
B01111100,B11110011,B11110011,B10011111,B00111101,B11100001,B11100000,B00111110,B01111011,B11001111,B11000000,
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000000,
B11111111,B11111111,B11111111,B11111111,B11111101,B01101000,B11011011,B00010001,B00011010,B00110001,B11000000,
B11111111,B11111111,B11111111,B11111111,B11111101,B00101011,B01011010,B11111011,B01101010,B11101111,B11000000,
B11111111,B11111111,B11111111,B11111111,B11111101,B01001011,B01011011,B00111011,B00011010,B00110011,B11000000,
B11111111,B11111111,B11111111,B11111111,B11111101,B01101011,B01011011,B11011011,B01101010,B11111101,B11000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000001, B10000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000011, B10000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000111,
B11000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000111, B11000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001111, B11000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00011111, B11100000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00011111, B11100000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00111111, B11100000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00111111, B11110000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B01111111,
B11110000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00011111, B11111000, B01111111, B11110000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00111111, B11111110,
B01111111, B11110000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00111111, B11111111, B01111111, B11110000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00011111,
B11111111, B11111011, B11100000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00001111, B11111111, B11111001, B11111111,
B11000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00001111, B11111111, B11111001, B11111111, B11111000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000111, B11111111, B11110001,
B11111111, B11111111, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000011, B11111100, B01110011, B11111111, B11111111, B10000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000001, B11111110,
B00111111, B11111111, B11111111, B10000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B11111111, B00011110, B00001111, B11111111,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B01111111, B11111110, B00011111, B11111100, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00111111, B11111111, B11111111,
B11111000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00001111, B11011111, B11111111, B11100000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00011111, B00011001,
B11111111, B11000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00111111, B00111100, B11111111, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B01111110,
B01111100, B11111000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B01111111, B11111110, B01111100, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B11111111, B11111111, B11111100, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B11111111, B11111111, B11111110,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B11111111, B11111111, B11111110, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000001, B11111111, B11101111,
B11111110, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000001, B11111111, B11001111, B11111110, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000011, B11111111,
B00000111, B11111110, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000011, B11111100, B00000111, B11111110, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000011,
B11110000, B00000011, B11111110, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000001, B10000000, B00000000, B11111110,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B01111110, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00111110, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00001100, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000111, B10000000, B00000000,
B11111100, B00000000, B00000000, B00000011, B11000000, B00000000, B00000000,
B00000000, B00000111, B10000000, B00000001, B11111100, B00000000, B00000000,
B00000011, B11000000, B00000000, B00000000, B00000000, B00000111, B10000000,
B00000001, B11111100, B00000000, B00000000, B00000011, B11000000, B00000000,
B00000000, B00000000, B00000111, B10000000, B00000001, B11100000, B00000000,
B00000000, B00000000, B00011110, B00000000, B00000000, B00000000, B00000111,
B10000000, B00000001, B11100000, B00000000, B00000000, B00000000, B00011110,
B00000000, B01111111, B11100011, B11110111, B10011111, B11111001, B11111101,
B11100111, B01111000, B01111011, B11011111, B11000000, B11111111, B11110111,
B11111111, B10111111, B11111101, B11111101, B11111111, B01111000, B01111011,
B11011111, B11000000, B11111111, B11110111, B11111111, B10111111, B11111101,
B11111101, B11111111, B01111000, B01111011, B11011111, B11000000, B11110000,
B11110111, B10000111, B10111100, B00111101, B11100001, B11111111, B01111000,
B01111011, B11011110, B00000000, B11110000, B11110111, B10000111, B10111100,
B00111101, B11100001, B11110000, B01111000, B01111011, B11011110, B00000000,
B00000000, B11110111, B10000111, B10000000, B00111101, B11100001, B11100000,
B01111000, B01111011, B11011110, B00000000, B01111111, B11110111, B10000111,
B10011111, B11111101, B11100001, B11100000, B01111000, B01111011, B11011110,
B00000000, B11111111, B11110111, B10000111, B10111111, B11111101, B11100001,
B11100000, B01111000, B01111011, B11011110, B00000000, B11110000, B11110111,
B10000111, B10111100, B00111101, B11100001, B11100000, B01111000, B01111011,
B11011110, B00000000, B11110000, B11110111, B10000111, B10111100, B00111101,
B11100001, B11100000, B01111000, B01111011, B11011110, B00000000, B11110000,
B11110111, B10000111, B10111100, B00111101, B11100001, B11100000, B01111000,
B01111011, B11011110, B00000000, B11111111, B11110111, B11111111, B10111111,
B11111101, B11100001, B11100000, B01111111, B11111011, B11011111, B11000000,
B11111111, B11110111, B11111111, B10111111, B11111101, B11100001, B11100000,
B01111111, B11111011, B11011111, B11000000, B01111100, B11110011, B11110011,
B10011111, B00111101, B11100001, B11100000, B00111110, B01111011, B11001111,
B11000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B11111111, B11111111,
B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111,
B11111111, B11000000, B11111111, B11111111, B11111111, B11111111, B11111101,
B01101000, B11011011, B00010001, B00011010, B00110001, B11000000, B11111111,
B11111111, B11111111, B11111111, B11111101, B00101011, B01011010, B11111011,
B01101010, B11101111, B11000000, B11111111, B11111111, B11111111, B11111111,
B11111101, B01001011, B01011011, B00111011, B00011010, B00110011, B11000000,
B11111111, B11111111, B11111111, B11111111, B11111101, B01101011, B01011011,
B11011011, B01101010, B11111101, B11000000,
};
#define splash2_width 115
#define splash2_width 115
#define splash2_height 32
const uint8_t PROGMEM splash2_data[] = {
B00000000,B00000000,B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000000,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000001,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000011,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00000111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00000000,B00001111,B11111000,B00000000,B00000000,B00000000,B00000011,B11000000,B00000000,B01111110,B00000000,B00000000,B00000001,B11100000,B00000000,
B01111111,B00001111,B11111000,B00000000,B00000000,B00000000,B00000011,B11000000,B00000000,B11111110,B00000000,B00000000,B00000001,B11100000,B00000000,
B11111111,B11101111,B11111000,B00000000,B00000000,B00000000,B00000011,B11000000,B00000000,B11111110,B00000000,B00000000,B00000001,B11100000,B00000000,
B11111111,B11111111,B11111000,B00000000,B00000000,B00000000,B00000011,B11000000,B00000000,B11110000,B00000000,B00000000,B00000000,B00001111,B00000000,
B01111111,B11111110,B01111111,B11000000,B00000000,B00000000,B00000011,B11000000,B00000000,B11110000,B00000000,B00000000,B00000000,B00001111,B00000000,
B00111111,B11111110,B01111111,B11111000,B00111111,B11110001,B11111011,B11001111,B11111100,B11111110,B11110011,B10111100,B00111101,B11101111,B11100000,
B00011111,B11111110,B01111111,B11111111,B01111111,B11111011,B11111111,B11011111,B11111110,B11111110,B11111111,B10111100,B00111101,B11101111,B11100000,
B00011111,B11000110,B11111111,B11111111,B01111111,B11111011,B11111111,B11011111,B11111110,B11111110,B11111111,B10111100,B00111101,B11101111,B11100000,
B00001111,B11100011,B11000111,B11111110,B01111000,B01111011,B11000011,B11011110,B00011110,B11110000,B11111111,B10111100,B00111101,B11101111,B00000000,
B00000111,B11111111,B10000111,B11111100,B01111000,B01111011,B11000011,B11011110,B00011110,B11110000,B11111000,B00111100,B00111101,B11101111,B00000000,
B00000001,B11111111,B11111111,B11110000,B00000000,B01111011,B11000011,B11000000,B00011110,B11110000,B11110000,B00111100,B00111101,B11101111,B00000000,
B00000001,B11110011,B01111111,B11100000,B00111111,B11111011,B11000011,B11001111,B11111110,B11110000,B11110000,B00111100,B00111101,B11101111,B00000000,
B00000011,B11100011,B00111111,B10000000,B01111111,B11111011,B11000011,B11011111,B11111110,B11110000,B11110000,B00111100,B00111101,B11101111,B00000000,
B00000111,B11100111,B00111100,B00000000,B01111000,B01111011,B11000011,B11011110,B00011110,B11110000,B11110000,B00111100,B00111101,B11101111,B00000000,
B00000111,B11111111,B10111110,B00000000,B01111000,B01111011,B11000011,B11011110,B00011110,B11110000,B11110000,B00111100,B00111101,B11101111,B00000000,
B00000111,B11111111,B11111110,B00000000,B01111000,B01111011,B11000011,B11011110,B00011110,B11110000,B11110000,B00111100,B00111101,B11101111,B00000000,
B00001111,B11111111,B11111110,B00000000,B01111111,B11111011,B11111111,B11011111,B11111110,B11110000,B11110000,B00111111,B11111101,B11101111,B11100000,
B00001111,B11111111,B11111111,B00000000,B01111111,B11111011,B11111111,B11011111,B11111110,B11110000,B11110000,B00111111,B11111101,B11101111,B11100000,
B00001111,B11111001,B11111111,B00000000,B00111110,B01111001,B11111001,B11001111,B10011110,B11110000,B11110000,B00011111,B00111101,B11100111,B11100000,
B00011111,B11110001,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
B00011111,B10000000,B11111111,B00000000,B01111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,
B00011100,B00000000,B01111111,B00000000,B01111111,B11111111,B11111111,B11111111,B11111110,B10110100,B01101101,B10001000,B10001101,B00011000,B11100000,
B00000000,B00000000,B00011111,B00000000,B01111111,B11111111,B11111111,B11111111,B11111110,B10010101,B10101101,B01111101,B10110101,B01110111,B11100000,
B00000000,B00000000,B00001111,B00000000,B01111111,B11111111,B11111111,B11111111,B11111110,B10100101,B10101101,B10011101,B10001101,B00011001,B11100000,
B00000000,B00000000,B00000110,B00000000,B01111111,B11111111,B11111111,B11111111,B11111110,B10110101,B10101101,B11101101,B10110101,B01111110,B11100000,
B00000000, B00000000, B01100000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B11100000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000001, B11100000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000001, B11110000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000011, B11110000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000111,
B11110000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000111, B11111000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00001111, B11111000, B00000000, B00000000, B00000000, B00000011,
B11000000, B00000000, B01111110, B00000000, B00000000, B00000001, B11100000,
B00000000, B01111111, B00001111, B11111000, B00000000, B00000000, B00000000,
B00000011, B11000000, B00000000, B11111110, B00000000, B00000000, B00000001,
B11100000, B00000000, B11111111, B11101111, B11111000, B00000000, B00000000,
B00000000, B00000011, B11000000, B00000000, B11111110, B00000000, B00000000,
B00000001, B11100000, B00000000, B11111111, B11111111, B11111000, B00000000,
B00000000, B00000000, B00000011, B11000000, B00000000, B11110000, B00000000,
B00000000, B00000000, B00001111, B00000000, B01111111, B11111110, B01111111,
B11000000, B00000000, B00000000, B00000011, B11000000, B00000000, B11110000,
B00000000, B00000000, B00000000, B00001111, B00000000, B00111111, B11111110,
B01111111, B11111000, B00111111, B11110001, B11111011, B11001111, B11111100,
B11111110, B11110011, B10111100, B00111101, B11101111, B11100000, B00011111,
B11111110, B01111111, B11111111, B01111111, B11111011, B11111111, B11011111,
B11111110, B11111110, B11111111, B10111100, B00111101, B11101111, B11100000,
B00011111, B11000110, B11111111, B11111111, B01111111, B11111011, B11111111,
B11011111, B11111110, B11111110, B11111111, B10111100, B00111101, B11101111,
B11100000, B00001111, B11100011, B11000111, B11111110, B01111000, B01111011,
B11000011, B11011110, B00011110, B11110000, B11111111, B10111100, B00111101,
B11101111, B00000000, B00000111, B11111111, B10000111, B11111100, B01111000,
B01111011, B11000011, B11011110, B00011110, B11110000, B11111000, B00111100,
B00111101, B11101111, B00000000, B00000001, B11111111, B11111111, B11110000,
B00000000, B01111011, B11000011, B11000000, B00011110, B11110000, B11110000,
B00111100, B00111101, B11101111, B00000000, B00000001, B11110011, B01111111,
B11100000, B00111111, B11111011, B11000011, B11001111, B11111110, B11110000,
B11110000, B00111100, B00111101, B11101111, B00000000, B00000011, B11100011,
B00111111, B10000000, B01111111, B11111011, B11000011, B11011111, B11111110,
B11110000, B11110000, B00111100, B00111101, B11101111, B00000000, B00000111,
B11100111, B00111100, B00000000, B01111000, B01111011, B11000011, B11011110,
B00011110, B11110000, B11110000, B00111100, B00111101, B11101111, B00000000,
B00000111, B11111111, B10111110, B00000000, B01111000, B01111011, B11000011,
B11011110, B00011110, B11110000, B11110000, B00111100, B00111101, B11101111,
B00000000, B00000111, B11111111, B11111110, B00000000, B01111000, B01111011,
B11000011, B11011110, B00011110, B11110000, B11110000, B00111100, B00111101,
B11101111, B00000000, B00001111, B11111111, B11111110, B00000000, B01111111,
B11111011, B11111111, B11011111, B11111110, B11110000, B11110000, B00111111,
B11111101, B11101111, B11100000, B00001111, B11111111, B11111111, B00000000,
B01111111, B11111011, B11111111, B11011111, B11111110, B11110000, B11110000,
B00111111, B11111101, B11101111, B11100000, B00001111, B11111001, B11111111,
B00000000, B00111110, B01111001, B11111001, B11001111, B10011110, B11110000,
B11110000, B00011111, B00111101, B11100111, B11100000, B00011111, B11110001,
B11111111, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00011111,
B10000000, B11111111, B00000000, B01111111, B11111111, B11111111, B11111111,
B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11100000,
B00011100, B00000000, B01111111, B00000000, B01111111, B11111111, B11111111,
B11111111, B11111110, B10110100, B01101101, B10001000, B10001101, B00011000,
B11100000, B00000000, B00000000, B00011111, B00000000, B01111111, B11111111,
B11111111, B11111111, B11111110, B10010101, B10101101, B01111101, B10110101,
B01110111, B11100000, B00000000, B00000000, B00001111, B00000000, B01111111,
B11111111, B11111111, B11111111, B11111110, B10100101, B10101101, B10011101,
B10001101, B00011001, B11100000, B00000000, B00000000, B00000110, B00000000,
B01111111, B11111111, B11111111, B11111111, B11111110, B10110101, B10101101,
B11101101, B10110101, B01111110, B11100000,
};