驴友花雕 发表于 2021-9-27 10:56:29

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之四:初始化ss_oled库

实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之四:初始化ss_oled库
实验接线:
oled模块    Ardunio Uno
GND---------GND接地线
VCC---------5V 接电源
SDA---------D6
SCL ------- D4
*/

#include <ss_oled.h>

// Use -1 for the Wire library default pins
// or specify the pin numbers to use with the Wire library or bit banging on any GPIO pins
// These are reversed because I did straight-through wiring for my SSD1306
// and it has the 4-pin header as GND,VCC,SCL,SDA, but the GROVE connector is
// GND,VCC,SDA,SCL
#define GROVE_SDA_PIN 32
#define GROVE_SCL_PIN 26
// These are the pin numbers for the M5Stack Atom default I2C
#define SDA_PIN 8
#define SCL_PIN 9
// Set this to -1 to disable or the GPIO pin number connected to the reset
// line of your display if it requires an external reset
#define RESET_PIN -1
// let ss_oled figure out the display address
#define OLED_ADDR -1
// don't rotate the display
#define FLIP180 0
// don't invert the display
#define INVERT 0
// Bit-Bang the I2C bus
#define USE_HW_I2C 0

// Change these if you're using different OLED displays
#define MY_OLED1 OLED_128x64
#define MY_OLED2 OLED_128x64

// 2 copies of the SSOLED structure. Each structure is about 56 bytes
// There is no limit to the number of simultaneous displays which can be controlled by ss_oled
SSOLED ssoled;

void setup() {
char *msgs[] = {(char *)"SSD1306 @ 0x3C", (char *)"SSD1306 @ 0x3D",(char *)"SH1106 @ 0x3C",(char *)"SH1106 @ 0x3D"};
int rc;
// The I2C SDA/SCL pins set to -1 means to use the default Wire library
// If pins were specified, they would be bit-banged in software
// This isn't inferior to hw I2C and in fact allows you to go faster on certain CPUs
// The reset pin is optional and I've only seen it needed on larger OLEDs (2.4")
//    that can be configured as either SPI or I2C
//
//oledInit(SSOLED *, type, oled_addr, rotate180, invert, bWire, SDA_PIN, SCL_PIN, RESET_PIN, speed)

rc = oledInit(&ssoled, MY_OLED1, OLED_ADDR, FLIP180, INVERT, 1, SDA_PIN, SCL_PIN, RESET_PIN, 400000L); // use standard I2C bus at 400Khz
if (rc != OLED_NOT_FOUND)
{
    oledFill(&ssoled, 0, 1);
    oledWriteString(&ssoled, 0,0,0,msgs, FONT_NORMAL, 0, 1);
    oledWriteString(&ssoled, 0,8,3,(char *)"Display", FONT_STRETCHED, 0, 1);
    oledWriteString(&ssoled, 0,56,6,(char *)"0", FONT_STRETCHED, 0, 1);
}
rc = oledInit(&ssoled, MY_OLED2, OLED_ADDR, FLIP180, INVERT, 0, GROVE_SDA_PIN, GROVE_SCL_PIN, RESET_PIN, 400000L); // use standard I2C bus at 400Khz
if (rc != OLED_NOT_FOUND)
{
    oledFill(&ssoled, 0, 1);
    oledSetTextWrap(&ssoled, 1);
    oledWriteString(&ssoled, 0,0,0,msgs, FONT_SMALL, 0, 1);
    oledWriteString(&ssoled, 0,4,2,(char *)"Display", FONT_NORMAL, 0, 1);
    oledWriteString(&ssoled, 0,28,3,(char *)"1", FONT_NORMAL, 0, 1);
}
} /* setup() */

void loop() {
// put your main code here, to run repeatedly:

} /* loop() */

驴友花雕 发表于 2021-9-27 11:00:00

实验场景图


驴友花雕 发表于 2021-9-27 11:08:52

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之五:I2C 检测器 - 使用 BitBang_I2C 库扫描和识别 I2C 总线上的设备

实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之五:I2C 检测器 - 使用 BitBang_I2C 库扫描和识别 I2C 总线上的设备
实验接线:
oled模块    Ardunio Uno
GND---------GND接地线
VCC---------5V 接电源
SDA---------D6
SCL ------- D4
*/

// I2C Detector - scan and identify devices on an I2C bus using the BitBang_I2C library
//
// The purpose of this code is to provide a sample sketch which can serve
// to detect not only the addresses of I2C devices, but what type of device each one is.
// So far, I've added the 25 devices I've personally used or found to be reliably detected
// based on their register contents. I encourage people to do pull requests to add support
// for more devices to make this code have wider appeal.

// There are plenty of I2C devices which appear at fixed addresses, yet don't have unique
// "Who_Am_I" registers or other data to reliably identify them. It's certainly possible to
// write code which initializes these devices and tries to verify their identity. This can
// potentially damage them and would necessarily increase the code size. I would like to keep
// the size of this code small enough so that it can be included in many microcontroller
// projects where code space is scarce.

// Copyright (c) 2019 BitBank Software, Inc.
// Written by Larry Bank
// email: bitbank@pobox.com
// Project started 25/02/2019
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.If not, see <http://www.gnu.org/licenses/>.
//
// Uses my Bit Bang I2C library. You can find it here:
// https://github.com/bitbank2/BitBang_I2C
#include <BitBang_I2C.h>

// Arbitrary pins I used for testing with an ATmega328p
// Define as -1, -1 to use the Wire library over the default I2C interface
#define SDA_PIN A4
#define SCL_PIN A5
// M5Stack Atom Grove connector pin assignments
//#define SDA_PIN 32
//#define SCL_PIN 26
// M5Stack Atom internal I2C connected to the IMU
//#define SDA_PIN 25
//#define SCL_PIN 21
// M5Stack Core2 internal I2C
#define SDA_PIN 8
#define SCL_PIN 9
//
// If you don't need the explicit device names displayed, disable this code by
// commenting out the next line
//
#define SHOW_NAME
#ifdef SHOW_NAME
const char *szNames[]= {"Unknown","SSD1306","SH1106","VL53L0X","BMP180", "BMP280","BME280",
                "MPU-60x0", "MPU-9250", "MCP9808","LSM6DS3", "ADXL345", "ADS1115","MAX44009",
                "MAG3110", "CCS811", "HTS221", "LPS25H", "LSM9DS1","LM8330", "DS3231", "LIS3DH",
                "LIS3DSH","INA219","SHT3X","HDC1080","MPU6886","BME680", "AXP202", "AXP192", "24AA02XEXX",
                "DS1307", "MPU688X", "FT6236G", "FT6336G", "FT6336U", "FT6436", "BM8563","BNO055"};
#endif

BBI2C bbi2c;

void setup() {
Serial.begin(115200);
memset(&bbi2c, 0, sizeof(bbi2c));
bbi2c.bWire = 0; // use bit bang, not wire library
bbi2c.iSDA = SDA_PIN;
bbi2c.iSCL = SCL_PIN;
I2CInit(&bbi2c, 100000L);
delay(100); // allow devices to power up
}

void loop() {
uint8_t map;
uint8_t i;
int iDevice, iCount;

Serial.println("Starting I2C Scan");
I2CScan(&bbi2c, map); // get bitmap of connected I2C devices
if (map == 0xfe) // something is wrong with the I2C bus
{
    Serial.println("I2C pins are not correct or the bus is being pulled low by a bad device; unable to run scan");
}
else
{
    iCount = 0;
    for (i=1; i<128; i++) // skip address 0 (general call address) since more than 1 device can respond
    {
      if (map & (1 << (i & 7))) // device found
      {
      iCount++;
      Serial.print("Device found at 0x");
      Serial.print(i, HEX);
      iDevice = I2CDiscoverDevice(&bbi2c, i);
      Serial.print(", type = ");
#ifdef SHOW_NAME
      Serial.println(szNames); // show the device name as a string
#else
      Serial.println(iDevice); // show the device name as the enum index
#endif
      }
    } // for i
    Serial.print(iCount, DEC);
    Serial.println(" device(s) found");
}
delay(5000);
}

驴友花雕 发表于 2021-9-27 11:10:21

实验串口返回情况


驴友花雕 发表于 2021-9-27 11:41:08

本帖最后由 驴友花雕 于 2021-9-27 11:48 编辑

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之六:动画:一匹走路的狼

实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之六:动画:一匹走路的狼
实验接线:
oled模块    Ardunio Uno
GND---------GND接地线
VCC---------5V 接电源
SDA---------D8
SCL ------- D9
*/

#include <ss_oled.h>

// Define these pins to be -1,-1 if you're using the default hardware I2C interface
// For bit bang I2C, define them to the port number and bit of the pins you choose (on AVR)
// or just the pin numbers on other MCUs
// My demo was run on an Arduino Pro Mini (ATmega328) with SDA connected to D8 and SCL to D9
// These translate to PORT B, bit 0 (0xB0) and PORT B, bit 1 (0xB1)
//#define SDA_PIN 0xb0
//#define SCL_PIN 0xb1

// These pin numbers are for the M5Stack Atom
#define SDA_PIN 8
#define SCL_PIN 9
// Set this to -1 to disable or the GPIO pin number connected to the reset
// line of your display if it requires an external reset
#define RESET_PIN -1
// let ss_oled figure out the display address
#define OLED_ADDR -1
// don't rotate the display
#define FLIP180 0
// don't invert the display
#define INVERT 0
// Bit-Bang the I2C bus
// Set this to 1 to use the wire library
#define USE_HW_I2C 0

// Most people have the 0.96" 128x64 SSD1306 OLED display
// Leave this line alone if you do.
// For the Pimoroni 128x128, comment out this line (or delete it)
#define OLED128x64 1

// 128x64 animation sequence
#ifdef OLED128x64
#define OLED_TYPE OLED_128x64
const byte bAnimation[] PROGMEM = {
0xe5,0x00,0x48,0x80,0xff,0x00,0xf9,0x00,0x40,0x0f,0xc0,0xe0,0xf0,0xfe,0xfe,0xff,
0xfe,0xfc,0xf8,0xf0,0xf0,0xe0,0xe0,0xc0,0x80,0x80,0xff,0x00,0xea,0x00,0x58,0x04,
0x0e,0x1e,0xc4,0x1f,0x50,0x3f,0x7f,0xcb,0xff,0x70,0xfe,0xf8,0xf0,0xc0,0x80,0x80,
0xff,0x00,0xed,0x00,0x48,0x01,0xdf,0xff,0xc4,0xfe,0xc2,0xff,0xc3,0x7f,0xce,0xff,
0x40,0x07,0x7f,0x7f,0x3f,0x3f,0x1f,0x0f,0x07,0x03,0xfd,0x00,0x50,0x03,0x07,0xcd,
0xff,0xc6,0x7f,0xcf,0xff,0x50,0xfc,0xe0,0xc5,0x00,0xc7,0x01,0xff,0x00,0xc8,0x00,
0x48,0xe0,0xc2,0xff,0x40,0x08,0x7f,0x1f,0x0f,0x03,0x00,0x00,0x01,0x0f,0x7f,0xc2,
0xff,0xc6,0x00,0x50,0x07,0x3f,0xc3,0xff,0x40,0x10,0x1f,0x07,0x03,0x03,0x07,0x0f,
0x0f,0x1f,0x1f,0x3f,0x3f,0x7f,0x7f,0xfc,0xf8,0xf0,0xe0,0xff,0x00,0xcc,0x00,0x40,
0x08,0x80,0x80,0xc0,0xf8,0xfe,0x7f,0x1f,0x07,0x01,0xc6,0x00,0xc1,0x80,0xc2,0xff,
0xc4,0x00,0x40,0x07,0x80,0x80,0xc0,0xf0,0xff,0xff,0x3f,0x0f,0xcc,0x00,0x68,0x01,
0x8f,0xff,0xff,0xf0,0xff,0x00,0xca,0x00,0x68,0x01,0x01,0x03,0x03,0x01,0xcb,0x00,
0xc3,0x01,0xc5,0x00,0xc4,0x01,0xcf,0x00,0xc3,0x03,0x48,0x01,0xe8,0x00,0x00,0x25,
0x48,0x00,0x00,0x79,0x4a,0x80,0x51,0xf8,0xff,0x4f,0xff,0x48,0xc0,0x00,0x6b,0x48,
0x00,0x00,0x14,0x49,0xfc,0x48,0xe0,0x00,0x70,0x48,0x00,0x00,0x1e,0x4d,0xfe,0x5a,
0xfe,0xfe,0xbe,0x95,0xff,0xc1,0xfe,0x00,0x07,0x40,0x08,0xff,0xff,0x7f,0x7f,0x3f,
0x1f,0x0f,0x06,0x02,0x00,0x3c,0x49,0x01,0x48,0xcf,0x00,0x0b,0x48,0x7f,0x00,0x1c,
0xc1,0x01,0x00,0x07,0x48,0x01,0x00,0x47,0x52,0x00,0xf0,0x54,0xff,0x3f,0x59,0x7f,
0xff,0xff,0x57,0x03,0x00,0x5b,0x00,0x0f,0x7f,0x5b,0xff,0x0f,0x07,0x49,0x1f,0x4b,
0x3f,0x68,0xfe,0xf8,0xe0,0xe0,0x00,0x00,0x4c,0x49,0x00,0x61,0x80,0xe0,0xf8,0xff,
0x57,0x0f,0x03,0x51,0x1f,0xff,0x55,0xf8,0x00,0x40,0x09,0x00,0x00,0x80,0x80,0xe0,
0xfd,0x7f,0x3f,0x0f,0x02,0x00,0x0a,0x52,0x03,0xff,0x48,0x00,0x00,0x4a,0x51,0x00,
0x03,0x49,0x01,0x48,0x01,0x00,0x0d,0x4e,0x00,0x4c,0x00,0x48,0x01,0x00,0x0e,0x68,
0x00,0x01,0x01,0x00,0x00,0x00,0x28,0x00,0xa1,0x4d,0xf0,0x49,0xfe,0x49,0xf8,0x49,
0xf0,0x48,0xe0,0x00,0x6d,0x5c,0x06,0x0e,0x0f,0x58,0x1f,0x1f,0x3f,0x00,0x09,0x4a,
0xfe,0x4a,0xf0,0x48,0x00,0x00,0x6e,0x48,0x1f,0x00,0x1c,0x4c,0xfe,0x4b,0xfc,0xc2,
0x7e,0xc6,0xfe,0x10,0xc2,0xfe,0x20,0xc2,0xfe,0x70,0x7e,0x7e,0x3e,0x3e,0x1e,0x0e,
0x00,0x3e,0x50,0x03,0x87,0x00,0x12,0x50,0x3f,0x7f,0x00,0x0e,0x53,0xf8,0x00,0x48,
0x01,0x00,0x0a,0xc1,0x01,0x00,0x46,0x4b,0xe0,0x49,0x7f,0x49,0x01,0x91,0xff,0x58,
0x3f,0x07,0x00,0x00,0x08,0x5b,0x03,0x1f,0x7f,0x79,0xff,0x0f,0x0f,0x1f,0x1f,0x3f,
0x3f,0x78,0x7f,0x7f,0xfc,0xf0,0xe0,0x00,0x00,0x00,0x4e,0x49,0x00,0x7c,0x80,0xe0,
0xfc,0xff,0x3f,0x0f,0x01,0x70,0x0f,0x3f,0xff,0xf0,0xe0,0x00,0x00,0x07,0x40,0x07,
0x00,0x00,0x80,0xe0,0xff,0x7f,0x1f,0x07,0x00,0x09,0x68,0xff,0xff,0x7f,0x00,0x00,
0x00,0x4c,0x53,0x00,0x01,0x48,0x01,0x00,0x09,0x48,0x00,0x00,0x09,0x70,0x00,0x03,
0x03,0x03,0x03,0x01,0x00,0x0d,0x58,0x01,0x00,0x00,0x00,0x2a,0x00,0x26,0x48,0x80,
0x00,0x79,0x4a,0xe0,0x4b,0xfc,0x49,0xfc,0x49,0xf8,0x49,0xf0,0x50,0xe0,0xc0,0x00,
0x6b,0x4a,0x02,0x78,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x1f,0x00,0x09,0x70,0xff,0xfe,
0xfc,0xf8,0xe0,0xc0,0x00,0x6f,0x48,0x0f,0x00,0x13,0xac,0xfe,0x4c,0xff,0x4b,0xfe,
0x48,0x3e,0x00,0x0d,0xa3,0xfe,0x49,0xfe,0x4a,0x7e,0x50,0x1e,0x0c,0x00,0x3c,0x49,
0x00,0x48,0x07,0x00,0x0a,0x4f,0x7f,0x48,0x7f,0x00,0x0e,0x93,0x00,0x4a,0x01,0xca,
0x03,0x09,0x01,0x00,0x45,0x52,0x00,0xf8,0x62,0xff,0x1f,0x03,0xe1,0x58,0x7f,0x1f,
0x03,0x00,0x0b,0x48,0x3f,0x00,0x07,0x4a,0x1f,0x68,0x7e,0xf8,0xf0,0xe0,0x00,0x00,
0x53,0x73,0x80,0xe0,0xfe,0x7f,0x1f,0x07,0x70,0x1f,0xff,0xff,0xf0,0x00,0x00,0x00,
0x0a,0x7f,0x00,0x80,0xc0,0xff,0xff,0x3f,0x06,0x51,0x7f,0xff,0xc1,0x00,0x00,0x4f,
0x4c,0x00,0x48,0x01,0x00,0x07,0x60,0x01,0x01,0x00,0x00,0x00,0x08,0x52,0x00,0x01,
0x58,0x03,0x03,0x01,0x00,0x0b,0x48,0x00,0x00,0x2c,0x00,0x25,0x50,0x80,0xc0,0x00,
0x79,0x4d,0xf0,0x55,0xff,0xfe,0x49,0xc0,0x48,0x80,0x00,0x6b,0x4f,0x06,0x48,0x3f,
0x00,0x0e,0x48,0x80,0x00,0x6f,0x48,0x01,0x00,0x12,0x4a,0xfe,0xc2,0xff,0x00,0x08,
0x4b,0xfc,0x49,0x7e,0x4a,0xfe,0xd3,0xfc,0x58,0x7c,0x3c,0x1c,0x00,0x53,0x50,0x3f,
0xff,0x00,0x11,0x49,0x01,0x91,0x03,0xc8,0x07,0x0c,0x03,0x03,0x01,0x01,0x00,0x44,
0x4b,0xf0,0xc2,0xff,0x68,0x7f,0x1f,0x07,0x01,0x00,0x00,0x09,0x4e,0x07,0x40,0x0a,
0xff,0x3f,0x3f,0x7f,0x7f,0xff,0xff,0xf0,0x60,0x00,0x00,0x00,0x52,0x4a,0x00,0x70,
0xc0,0xf8,0xff,0xff,0x1f,0x1f,0xc2,0xff,0x58,0xc0,0x00,0x00,0x00,0x0d,0x59,0x00,
0x80,0xc3,0x5b,0xff,0x7f,0x06,0x70,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x52,0x74,
0x00,0x03,0x03,0x03,0x03,0x01,0x68,0x01,0x01,0x01,0x00,0x00,0x00,0x0b,0x53,0x00,
0x02,0x96,0x03,0xc1,0x01,0x00,0x30,0x00,0x27,0x48,0x80,0x00,0x76,0x53,0x80,0xc0,
0x4c,0xff,0x49,0xfc,0x4a,0xf8,0x48,0xe0,0x00,0x6c,0x5c,0x00,0x07,0x07,0x49,0x07,
0x50,0x1f,0x3f,0x00,0x09,0x68,0xff,0xfe,0xfc,0xf0,0xc0,0x00,0x6f,0x50,0x00,0x7f,
0x00,0x10,0x4b,0xfe,0x4f,0xfe,0x92,0xff,0x54,0xfe,0xfc,0x4a,0x7e,0xc3,0xfe,0x00,
0x51,0x5f,0x01,0x03,0x07,0x9f,0x7f,0x49,0x3f,0x48,0x3f,0x00,0x0b,0x54,0x3f,0x07,
0x49,0x00,0x91,0x01,0x9c,0x03,0xc1,0x03,0x00,0x48,0x49,0x80,0x4a,0xfe,0x78,0x7f,
0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x0a,0x64,0x01,0x07,0x1f,0x7f,0xc3,0xff,0x48,
0xe0,0xc2,0x00,0x00,0x55,0x49,0x00,0x52,0x80,0xe7,0x70,0xff,0xc7,0x00,0x00,0x00,
0x00,0x00,0x10,0x59,0x00,0x81,0xc7,0xc2,0xff,0x68,0x1f,0x07,0x01,0x00,0x00,0x00,
0x56,0x4a,0x01,0x4d,0x01,0xc2,0x00,0x00,0x0e,0x76,0x00,0x00,0x01,0x01,0x01,0x01,
0xc1,0x00,0x00,0x30,0x00,0x27,0x48,0x00,0x00,0x79,0x4e,0xf8,0x4c,0xf8,0x48,0xc0,
0x00,0x6c,0x4a,0x02,0x49,0x07,0x91,0x07,0x50,0x07,0x0f,0x00,0x0c,0x4a,0xf8,0x48,
0x80,0x00,0x86,0xc1,0xfe,0x00,0x0b,0x57,0x7e,0x3e,0x48,0xfc,0x00,0x12,0x48,0x00,
0x00,0x3f,0x4e,0xef,0x97,0x3f,0x93,0x3f,0x48,0x3f,0x00,0x0a,0x55,0x1f,0x00,0x4a,
0x00,0x4b,0x01,0xa3,0x03,0xc1,0x01,0x00,0x44,0x62,0xf0,0xfc,0xff,0xff,0x68,0xff,
0xff,0x1f,0x01,0x00,0x00,0x0c,0x7c,0x00,0x00,0x03,0x07,0x0f,0x1f,0x7f,0x50,0x80,
0x00,0x00,0x59,0x5a,0x00,0x87,0xbf,0x58,0x7f,0x1f,0x07,0x00,0x14,0x5c,0x00,0xf0,
0xfc,0xc1,0x00,0x00,0x58,0x5a,0x00,0x01,0x01,0x48,0x01,0x00,0x16,0x92,0x00,0xc1,
0x01,0x00,0x36,0x00,0x24,0x49,0x80,0x48,0x80,0x00,0x7f,0x59,0xfe,0xfc,0xfc,0x49,
0xf0,0x68,0xf0,0xe0,0xe0,0xc0,0x80,0x00,0x6c,0x49,0x0f,0x70,0x0f,0x0f,0x0f,0x0f,
0x1f,0x7f,0x00,0x0a,0x50,0xff,0xfe,0x00,0x84,0xbe,0xff,0x4a,0xfe,0x49,0xfc,0x53,
0xfc,0x3c,0x93,0x7e,0xce,0xfe,0x5a,0x7e,0x7e,0x3c,0x48,0x08,0x00,0x3d,0x58,0x81,
0xc7,0xf7,0x00,0x0e,0x48,0x7f,0x00,0x0f,0x4f,0x7f,0xc2,0x00,0xc9,0x01,0x10,0xc1,
0x00,0x00,0x40,0x7b,0xe0,0xf8,0x7e,0x3f,0x1f,0x07,0x87,0x50,0x7f,0x03,0x00,0x12,
0x54,0x9f,0xff,0x48,0xff,0x00,0x59,0x40,0x09,0x3f,0x7f,0x00,0x00,0x80,0xe0,0xff,
0xff,0x3f,0x0f,0x00,0x11,0x40,0x09,0x78,0x3c,0x1e,0x0f,0x87,0x81,0xc0,0xf9,0xff,
0x0f,0x00,0x5a,0x93,0x00,0x48,0x01,0x00,0x17,0x4b,0x00,0x48,0x01,0x00,0x35,0x00,
0x24,0x49,0x00,0x48,0x00,0x00,0x81,0x49,0xf8,0x49,0xf8,0x49,0xe0,0x58,0xc0,0x80,
0x00,0x00,0x6b,0x4d,0x0f,0x58,0x1f,0x3f,0xff,0x00,0x0a,0x50,0xfc,0xf8,0x00,0x71,
0x50,0x07,0xff,0x00,0x0f,0xc3,0xfe,0x00,0x07,0xc1,0xfe,0x00,0x0a,0x48,0xfe,0x00,
0x10,0x49,0x7e,0x49,0x3e,0x58,0x1c,0x0c,0x00,0x00,0x3c,0x66,0x80,0xc3,0xf3,0xff,
0x50,0xff,0x7f,0x00,0x17,0x50,0xff,0x08,0x00,0x08,0x4e,0x00,0xc4,0x00,0x00,0x40,
0x79,0xc0,0xf0,0xfc,0x3f,0x3f,0x1f,0x0f,0x4b,0x07,0x58,0xff,0x3f,0x01,0x00,0x0e,
0x61,0x07,0x8f,0xff,0xff,0x61,0x7f,0x3f,0x7f,0x7f,0x58,0xff,0xf0,0xc0,0x00,0x52,
0x73,0x70,0x7e,0x7f,0x1f,0x01,0x00,0x51,0x80,0xc0,0x58,0xff,0x3f,0x07,0x00,0x0d,
0x78,0x70,0x7c,0x3e,0x1f,0x0f,0x07,0x03,0xc2,0x00,0x70,0x80,0x80,0xff,0xff,0x7f,
0x0f,0x00,0x59,0x52,0x00,0x03,0x48,0x01,0x00,0x17,0x78,0x00,0x00,0x00,0x03,0x01,
0x01,0x01,0x00,0x32,0x00,0xa0,0x5d,0x80,0xe0,0xf0,0x4a,0xf8,0x4a,0xf0,0x58,0xc0,
0x80,0x00,0x00,0x6a,0x55,0x06,0x0e,0x58,0x1f,0x3f,0x7f,0x00,0x0a,0x4a,0xfe,0x48,
0xe0,0x00,0x70,0x48,0x1f,0x00,0x10,0xa7,0xff,0x4e,0xfe,0xc2,0xfe,0x00,0x18,0x58,
0x1e,0x0e,0x04,0x00,0x3d,0x58,0x00,0x03,0xc7,0x00,0x07,0x48,0xff,0x00,0x07,0x4b,
0x7f,0x48,0xff,0x00,0x0b,0x5d,0xff,0xfe,0xe0,0x9e,0x01,0xc1,0x01,0x00,0x43,0x40,
0x0b,0x00,0x80,0xf0,0xf8,0xfe,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x7f,0x08,0xc2,0xff,
0x00,0x0c,0x5b,0x07,0x1f,0xff,0x40,0x0b,0x07,0x0f,0x1f,0x3f,0x3f,0x7f,0x7f,0xff,
0xff,0xf0,0xc0,0xc0,0x00,0x4e,0x72,0x80,0xe0,0xfc,0xff,0x3f,0x07,0xc2,0x00,0x78,
0x80,0x80,0xe0,0xff,0xff,0x3f,0x0f,0x00,0x09,0x79,0xc0,0xe0,0xf0,0x7c,0x3f,0x1f,
0x0f,0x4a,0x01,0xc3,0x00,0x70,0x80,0x80,0xc1,0xff,0xff,0x1f,0x00,0x56,0x99,0x00,
0xc3,0x01,0x00,0x16,0xc3,0x00,0xc4,0x01,0x00,0x2d,0x00,0x9f,0x57,0x00,0xc0,0x68,
0xfc,0xf0,0xf0,0xe0,0xe0,0x00,0x6d,0x58,0x04,0x0e,0x1e,0xc4,0x1f,0x11,0xff,0x00,
0x0c,0x48,0xf0,0x00,0x70,0x50,0x01,0x7f,0x00,0x1b,0x94,0xff,0x4a,0xfe,0x60,0xff,
0xff,0x7f,0x7f,0xc7,0xff,0x18,0xc7,0xff,0x60,0x7f,0x7f,0x3f,0x1f,0x0a,0x06,0x02,
0x00,0x3c,0x60,0x01,0x07,0x87,0xef,0x00,0x07,0xb3,0xff,0x58,0x7f,0x7f,0xff,0x00,
0x0d,0x5b,0xff,0xfc,0x80,0x48,0x01,0x00,0x0a,0x48,0x01,0x00,0x43,0x40,0x0d,0x00,
0x00,0xe0,0xf8,0xfe,0xff,0x7f,0x1f,0x0f,0x07,0x03,0x01,0x00,0x0f,0x08,0xc2,0xff,
0x00,0x07,0x62,0x07,0x3f,0x7f,0xff,0x52,0x9f,0x07,0x40,0x0b,0x0f,0x1f,0x1f,0x3f,
0x3f,0x7f,0x7f,0xff,0xfc,0xf0,0xe0,0xe0,0x00,0x4d,0x7b,0xc0,0xe0,0xf8,0xff,0x7f,
0x1f,0x07,0xc4,0x00,0xc1,0x80,0xc2,0xff,0x4d,0x0e,0x6c,0xc0,0xe0,0xf0,0xf8,0x7e,
0x4e,0x00,0xc3,0x00,0x48,0x83,0xc2,0xff,0x00,0x4c,0xa7,0x01,0xa1,0x00,0x60,0x01,
0x03,0x03,0x01,0x00,0x16,0x99,0x00,0x60,0x03,0x03,0x03,0x01,0x00,0x2a
};
#endif

// 128x128 animation sequence
// for Pimoroni 128x128
#ifndef OLED128x64
#define OLED_TYPE OLED_128x128
const byte bAnimation[] PROGMEM = {
0xff,0xff,0xff,0xff,0xfe,0xff,0xc2,0x7f,0xff,0xff,0xde,0xff,0x48,0xbf,0xc8,0x3f,
0xc7,0x7f,0x40,0x0a,0x3f,0x3f,0x1f,0x4f,0x67,0x67,0x73,0x71,0x79,0x7c,0x7c,0xc3,
0x7e,0x40,0x07,0x7c,0x78,0x79,0x33,0x23,0x07,0x0f,0x1f,0xc3,0x0f,0xc1,0x27,0xc9,
0x67,0x70,0xe7,0xe7,0x4f,0x4f,0x1f,0x9f,0xff,0xff,0xc2,0xff,0x40,0x10,0xfe,0xfc,
0xf9,0xf3,0xe7,0xe7,0xc7,0xd7,0x97,0xb7,0x37,0x27,0x27,0x87,0xc7,0xcf,0xef,0xc2,
0xcf,0x48,0xdf,0xc3,0x9f,0xc2,0x3f,0xc2,0x7f,0xcd,0xff,0x40,0x0d,0xfe,0xfe,0xfc,
0xf1,0xc3,0x04,0x31,0xf0,0xf1,0xf9,0xf9,0xfc,0xfc,0xfe,0xff,0xff,0xc6,0xff,0x40,
0x11,0x3f,0x1f,0x8f,0xe7,0xf3,0xf9,0xf8,0xf8,0xf2,0x67,0x07,0x0f,0x1f,0x1f,0x3f,
0x7f,0xff,0xff,0xc4,0x7f,0xc3,0x3f,0xc1,0x3e,0xc2,0x3c,0x40,0x0c,0x39,0x79,0x7b,
0xf3,0xf7,0xe7,0xe7,0x8f,0x1f,0x1f,0x3f,0x7f,0x7f,0xc2,0xff,0x58,0xfe,0xf0,0x01,
0xff,0xff,0xc8,0xff,0x70,0x3f,0x07,0x41,0x78,0x7c,0x7f,0xc4,0xff,0xc1,0x1f,0xc3,
0x00,0x48,0xf0,0xc2,0xff,0x58,0xfe,0xfc,0x06,0xc4,0x00,0x50,0x01,0x03,0xcd,0xff,
0x40,0x09,0xfc,0xf0,0x81,0x06,0x64,0xe1,0xe3,0xe7,0xf1,0xf8,0xff,0xff,0xc7,0xff,
0x40,0x10,0x03,0x00,0xfc,0xf0,0xe2,0xce,0x9e,0x1c,0x3c,0x79,0x79,0x73,0xe6,0xc0,
0xc8,0x98,0xbc,0xc5,0xff,0x50,0xf9,0xe0,0xc2,0xc0,0x60,0xe0,0xe0,0xf8,0xfe,0xc8,
0xff,0x40,0x0a,0x0f,0x07,0xf3,0x73,0x33,0x33,0x47,0x0f,0x38,0x00,0x9f,0xf2,0xff,
0x40,0x0f,0x7f,0x1f,0x8f,0xc7,0xe3,0xe3,0xe1,0xc9,0x99,0x31,0x73,0xe3,0xc7,0x8f,
0x1f,0x7f,0xc8,0xff,0x60,0xfc,0xe0,0x03,0x3f,0xc4,0xff,0xc1,0xfe,0xc2,0xfc,0x40,
0x0f,0x3c,0x1d,0x8f,0xc7,0xe7,0xf3,0xf3,0xb3,0xb3,0x93,0x93,0xe7,0xe7,0xcf,0x8f,
0x9f,0xc6,0x3f,0x40,0x12,0x9f,0x9f,0x1f,0x3f,0x7c,0xf8,0x7b,0x13,0x00,0x01,0x00,
0x04,0x80,0xf0,0xff,0xff,0x3f,0x3f,0x8f,0xc2,0x87,0xc2,0x93,0x40,0x08,0x27,0x27,
0x67,0x4f,0x8f,0x9f,0x3f,0x3f,0x7f,0xdd,0xff,0x60,0x1f,0x01,0xe0,0xfe,0xc7,0xff,
0x40,0x07,0xf8,0x81,0x07,0x7f,0xfe,0xc0,0x01,0x0f,0xc2,0xcf,0x58,0xdf,0x9f,0x9f,
0xc3,0x3f,0x40,0x14,0xbc,0x98,0x91,0x87,0x8f,0x1f,0x1f,0x3f,0x7f,0x7f,0x40,0x00,
0x0e,0xc7,0xf1,0xf8,0x7c,0x3e,0x3f,0x9f,0xdf,0xc6,0xff,0x58,0xfe,0xfc,0xf9,0xc5,
0xff,0x40,0x10,0xf8,0x00,0x00,0x02,0x01,0x00,0x20,0x24,0x26,0x67,0xcf,0xc7,0xc0,
0xc0,0xa7,0xe7,0xcf,0xc7,0xff,0x40,0x08,0xfe,0xf7,0xef,0xef,0xce,0x84,0x00,0x03,
0x47,0xda,0xff,0x40,0x09,0xf8,0x80,0x03,0x13,0xdb,0xcb,0x4b,0x6b,0x6b,0x6f,0xc2,
0x3f,0x78,0xff,0x00,0x80,0xff,0x03,0x00,0x1e,0xc6,0xff,0x78,0xfe,0xfc,0xf8,0xf1,
0xc1,0x0c,0x3c,0xc6,0xfe,0xc2,0xfc,0x40,0x09,0xf8,0xf0,0xe6,0xc7,0x97,0x93,0x93,
0x99,0x99,0x9d,0xc2,0xcf,0x50,0x87,0x97,0xc6,0x9f,0x40,0x1d,0x87,0x80,0x20,0x26,
0x00,0x43,0x4e,0x4f,0x4f,0x4e,0x26,0x24,0x21,0x83,0x87,0x1f,0x7f,0xff,0xff,0x07,
0x0f,0x01,0x07,0x7f,0xff,0xff,0x9f,0x83,0x03,0x87,0xc2,0xff,0x40,0x07,0xfe,0xfc,
0xf8,0xf1,0xe3,0x87,0x1f,0x3f,0xd6,0xff,0x40,0x19,0xfe,0xf8,0xe0,0xc2,0x06,0x12,
0x03,0x0b,0x0b,0x03,0x81,0x85,0x84,0x47,0x1f,0x3f,0x7f,0xfe,0xff,0xff,0x0b,0x03,
0x07,0x9f,0x3f,0x3f,0xc2,0x9f,0x58,0xc7,0xe0,0xf0,0xe4,0xff,0x40,0x19,0xfe,0xfe,
0xfc,0xf8,0xf0,0xe3,0xc7,0xcf,0x8f,0x9f,0x80,0xc8,0xc3,0xf0,0xf8,0xfe,0xff,0xfe,
0xfc,0xfc,0xf9,0xf1,0xe3,0xc0,0x93,0x3f,0xc7,0xff,0x58,0x3e,0x00,0x81,0xda,0xff,
0x40,0x11,0xfc,0xf9,0xf3,0xe7,0xcf,0x8f,0x9f,0x3f,0x3f,0x3e,0x7c,0x78,0x70,0x20,
0x05,0xc0,0xe0,0xfe,0xff,0xff,0xc6,0xff,0x58,0xfc,0xf8,0xf9,0xc3,0xf3,0x60,0xf9,
0xf8,0xfc,0xfe,0xe5,0xff,0xc1,0xfe,0xff,0xff,0xd8,0xff,0x50,0x7f,0x3f,0xff,0xff,
0xf1,0xff,0x68,0xfb,0xfd,0x4c,0x24,0x00,0xc2,0x01,0x40,0x0a,0x47,0x73,0x1b,0x01,
0x00,0x20,0x18,0xcf,0x07,0x87,0x5f,0xff,0xff,0xec,0xff,0x60,0xfd,0xfc,0xf0,0xf9,
0xc2,0xfc,0x40,0x0c,0xf8,0xf8,0xfc,0xfa,0xf0,0xf8,0xfe,0xfd,0xfc,0xfe,0xf8,0xf8,
0xfc,0xff,0xff,0xff,0xff,0xc6,0xff,0x00,0xbe,0x48,0xff,0x00,0x60,0x68,0xff,0xdf,
0x1f,0x5f,0xdf,0xc4,0x9f,0xc1,0xbf,0xc5,0x3f,0x08,0x40,0x08,0x1f,0x0f,0x0f,0x27,
0x23,0x33,0x39,0x39,0x7d,0x09,0x7c,0x21,0x7c,0x09,0x73,0x18,0x40,0x13,0x4f,0x47,
0x67,0x63,0x73,0x33,0x31,0x19,0x99,0xc9,0xcc,0xc4,0x04,0x44,0x10,0x38,0x1c,0x8c,
0xc0,0xf1,0xc2,0xff,0x00,0x42,0x40,0x0e,0xff,0xfe,0xfc,0xf9,0xf1,0xf3,0xe3,0xeb,
0xcb,0x9b,0x93,0xb3,0x33,0x33,0x77,0xc2,0x27,0xc3,0x8f,0x19,0xbf,0x00,0x0e,0xa1,
0xfe,0x40,0x07,0xfc,0xf8,0xe1,0x81,0x08,0x7c,0xfe,0xfe,0xc4,0xff,0x00,0x46,0x40,
0x0f,0xff,0x3f,0x1f,0x8f,0xc7,0xe3,0xf3,0xf9,0xec,0xcc,0x1e,0x1e,0x3e,0x7f,0x7f,
0xff,0x10,0xc7,0xff,0xc2,0x7e,0x40,0x0a,0x7c,0xfc,0xfd,0xf9,0xf3,0xf3,0xf7,0xe7,
0xef,0xcf,0x1f,0x0c,0x3f,0x7f,0xff,0xff,0x1b,0xfc,0x00,0x0f,0x00,0x48,0x75,0x7f,
0x1f,0x87,0xe1,0xf8,0xfe,0x54,0x7f,0x37,0x59,0xc0,0xfe,0xfe,0x64,0xf9,0xf9,0x09,
0x04,0x50,0x00,0x06,0xc7,0xfe,0x28,0x40,0x07,0xfe,0xf8,0xe0,0x06,0x0d,0xe9,0xcf,
0xcf,0x0a,0xf0,0xfc,0x00,0x47,0x49,0x07,0x40,0x0f,0xf8,0xe1,0x84,0x1c,0x38,0x79,
0x71,0xf3,0xe3,0xe7,0xcc,0x90,0x10,0x30,0x70,0xfc,0x28,0x50,0xe3,0xc1,0xc3,0x80,
0x58,0xc0,0xe0,0xfc,0x00,0x08,0x40,0x08,0x3f,0x0f,0xcf,0x67,0x27,0x67,0x0f,0x1f,
0xe0,0x09,0x3f,0x00,0x32,0xcf,0xff,0x00,0x08,0x63,0xf8,0x80,0x0f,0x7f,0x60,0xfe,
0xfc,0xfc,0xf8,0xc2,0xf9,0x58,0xfb,0xfb,0xfe,0xc6,0xff,0x68,0x7f,0x7f,0x3f,0x3f,
0x7f,0xcb,0xff,0x40,0x09,0xf8,0xf0,0xe7,0xec,0xe0,0xc0,0x04,0x70,0x00,0x00,0x10,
0xd1,0xff,0x00,0x18,0xe1,0xff,0x40,0x08,0xfc,0xf8,0xf1,0xc7,0x8f,0x1f,0x3f,0x7f,
0x7f,0xc7,0xff,0x40,0x0b,0xcf,0xc3,0xf1,0xf8,0xfc,0xfe,0xfe,0xff,0xff,0xfe,0xff,
0xff,0xc2,0x7f,0xc4,0x3f,0x60,0x1f,0x0f,0x4f,0xcf,0xc2,0xe7,0x60,0xc3,0xc0,0x98,
0x1f,0x08,0x48,0xf0,0xff,0xff,0xd4,0xff,0x40,0x18,0xfe,0xfc,0xfc,0x7c,0x39,0x19,
0x83,0x43,0x23,0x03,0x87,0xc7,0xc7,0xe7,0xe7,0x27,0x07,0x87,0xc7,0xe1,0xe0,0xf0,
0xf2,0xfa,0xfe,0xc5,0xff,0x60,0xfe,0xfe,0xfc,0xfd,0xc5,0xff,0x50,0xfc,0x70,0x08,
0x40,0x09,0x04,0xec,0xcc,0xfc,0xf9,0xf1,0xe3,0xc7,0x0f,0x3f,0xf6,0xff,0x70,0x1f,
0x0f,0xc7,0xe7,0xf3,0xf3,0xc2,0xe7,0x60,0xcf,0x8f,0x1f,0x31,0x08,0x48,0x0e,0xc5,
0xfc,0x40,0x08,0xf9,0xf8,0xf2,0xf3,0xe0,0xc4,0x8e,0x1f,0x3f,0xc3,0xff,0x40,0x09,
0xf0,0xe0,0xc7,0x07,0x27,0x67,0x77,0x7f,0x73,0xf3,0xc9,0xff,0x40,0x16,0x7f,0x1f,
0x8f,0x9f,0x4f,0x07,0x23,0x38,0x0c,0xff,0xff,0x7f,0x3f,0x3f,0x5f,0xff,0xfc,0xf8,
0xf0,0xe3,0xc7,0x1f,0x3f,0xf1,0xff,0x40,0x11,0xf3,0xc0,0x02,0x3a,0x72,0xf2,0xe4,
0xcd,0x89,0x93,0x37,0x3f,0x7f,0xfe,0xfc,0xf0,0xc0,0x8d,0xc6,0xff,0x78,0xdf,0x1f,
0x1f,0x0f,0xc7,0xe0,0xf0,0xc7,0xff,0x40,0x07,0xfe,0xfc,0xf8,0xf0,0xf3,0xe3,0xe3,
0xe1,0xc2,0xe7,0x58,0xf3,0xf3,0xf9,0xc3,0xf8,0xc1,0xfc,0xc2,0xfe,0x70,0xf8,0xe0,
0x83,0x02,0x30,0x7c,0xc5,0xff,0x70,0xfe,0xf1,0x02,0x10,0x03,0x1f,0xf1,0xff,0x40,
0x13,0xfe,0xfc,0xf8,0xf9,0xf3,0xf3,0xe3,0xe3,0xc2,0xc4,0x84,0x81,0x03,0x03,0x27,
0x0f,0x1f,0x3f,0x3f,0xff,0xc3,0xbf,0x58,0x3c,0x00,0xc1,0xe4,0xff,0x78,0xfe,0xfc,
0xf8,0xf9,0xf9,0xf1,0xf3,0xc2,0xf9,0x58,0xfc,0xfc,0xfe,0xcb,0xff,0x50,0x7f,0x3f,
0xd7,0xff,0x08,0xc2,0xff,0x08,0xc2,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,
0x20,0x58,0xfe,0xfc,0xfc,0xc2,0xf8,0x48,0xf2,0xc4,0xf3,0xc1,0xf8,0xf2,0xff,0x68,
0xfb,0xfd,0x4c,0x24,0x00,0xc2,0x01,0x60,0x47,0x73,0x1b,0x01,0x08,0x70,0x20,0x18,
0xcf,0x07,0x87,0x5f,0xc9,0xff,0x08,0xc7,0xff,0x08,0xc6,0xff,0x10,0xc3,0xff,0x19,
0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,0xf4,0xff,0x60,0xfd,0xfc,0xf0,0xf9,0xc2,
0xfc,0x40,0x0c,0xf8,0xf8,0xfc,0xfa,0xf0,0xf8,0xfe,0xfd,0xfc,0xfe,0xf8,0xf8,0xfc,
0xd1,0xff,0x08,0xc6,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,
0xff,0xd3,0xff,0x08,0xd2,0xff,0x09,0xff,0x09,0xff,0x09,0xff,0x00,0x09,0x4f,0xff,
0xcf,0xff,0x00,0xbf,0xc1,0xff,0x00,0x5f,0xd4,0xff,0x40,0x10,0x7f,0x3f,0x3f,0x9f,
0x9f,0xcf,0xcf,0xe7,0xe7,0xf7,0xe7,0xe7,0xcf,0x9f,0x1f,0x3f,0x7f,0xc3,0xff,0xc4,
0x7f,0xc7,0x3f,0xc3,0x7f,0x00,0x44,0x78,0xf3,0xe3,0xcb,0x9b,0x9b,0x33,0x73,0xc4,
0x33,0xc5,0x73,0x60,0xf1,0xf0,0xf0,0xf2,0xce,0xf3,0xc5,0xf0,0xc3,0xf2,0x40,0x0e,
0xe3,0xc3,0x83,0x13,0x63,0x13,0x23,0x93,0x96,0x8e,0xce,0xe6,0xe2,0xf0,0xf9,0x00,
0x45,0x40,0x0b,0xff,0xff,0x7e,0x3e,0x9c,0xc9,0xa1,0x23,0x33,0x79,0x79,0xfc,0xc3,
0xfe,0xc2,0xfc,0x48,0xfd,0xc2,0xf9,0x40,0x0e,0xfb,0xf3,0xf3,0xf7,0xe7,0xe7,0xef,
0xcf,0xcf,0x9f,0x9f,0xbf,0x3f,0x3f,0x7f,0xc3,0xff,0x23,0xfc,0xf0,0x01,0x00,0x49,
0x40,0x07,0xff,0x7f,0x1f,0x87,0xe3,0xf1,0xfc,0xfe,0x1c,0xff,0xdf,0x07,0x02,0x13,
0x01,0xf3,0xfb,0x08,0x60,0xe7,0xe7,0x27,0x07,0xc4,0x03,0x50,0x33,0xf3,0xc5,0xfb,
0x48,0xf7,0x18,0x40,0x0c,0xfe,0xfc,0xf0,0xe1,0x81,0x13,0x27,0x6f,0x1f,0x3f,0x7f,
0x1f,0x80,0x00,0x47,0x40,0x11,0x3f,0x01,0xc0,0x06,0x03,0x73,0xe7,0xe7,0xcf,0xcf,
0x9f,0x1f,0x31,0x40,0x80,0x80,0xc0,0xf0,0x28,0x48,0x8f,0xc5,0x00,0x50,0x80,0xf0,
0x00,0x08,0x40,0x0a,0xff,0x7f,0x3f,0xbf,0x9f,0x3f,0x3f,0x7c,0x80,0x03,0xff,0x00,
0x4b,0x40,0x09,0xe0,0x00,0x3f,0xff,0xfe,0xfc,0xf8,0xf9,0xf3,0xf3,0xc2,0xe7,0x60,
0xce,0xcc,0xed,0xf9,0x3d,0xff,0xfe,0xfe,0xfe,0xfe,0x00,0x0b,0x40,0x0f,0xe0,0xc0,
0x9f,0xbf,0xa1,0xa1,0x84,0xc4,0x04,0x04,0x64,0x49,0x11,0x23,0x07,0x0f,0x00,0x26,
0xe0,0xff,0x78,0xfe,0xf0,0xc1,0x87,0x1f,0x3f,0x7f,0xcb,0xff,0x40,0x09,0xbf,0x8f,
0xc7,0xe3,0xf1,0xf9,0xf8,0xfc,0xfc,0xfd,0xc8,0xff,0x40,0x0b,0x7f,0x1f,0x0f,0x07,
0xe7,0xe3,0xf3,0xf1,0xf0,0xe4,0xe4,0xce,0xc3,0xfe,0x70,0xfc,0xfc,0xf9,0xe3,0x07,
0x0f,0xff,0xff,0xc8,0xff,0x40,0x08,0xfe,0xfc,0x18,0x01,0xe1,0xf3,0xe7,0x67,0x07,
0xc2,0x0f,0x68,0x1f,0x1f,0x9f,0x1f,0x9f,0xc5,0x3f,0xc4,0x1f,0x78,0x9f,0xcf,0x07,
0x01,0xf0,0xfc,0xfe,0xc2,0xff,0x58,0x7f,0x7f,0x3f,0xc6,0xff,0x78,0xfe,0x71,0x03,
0x8f,0xe3,0xf0,0xf8,0xff,0xff,0xca,0xff,0x40,0x11,0xfc,0xfc,0xf9,0xf9,0xf1,0xc0,
0x8e,0x1f,0x37,0x73,0x08,0x40,0x61,0x04,0x08,0x21,0x47,0x80,0x10,0x40,0x1c,0x7e,
0xc0,0x80,0x06,0x3e,0x3e,0x3c,0x19,0x82,0x04,0x10,0xc1,0xc9,0x99,0x9c,0x9c,0x1e,
0x1e,0x4e,0x7f,0x3f,0x1f,0x7f,0x3f,0x1f,0x8f,0xc3,0xf0,0xfc,0xff,0xff,0xd7,0xff,
0x40,0x08,0xfe,0xf0,0xc0,0x82,0x12,0x33,0x73,0xf8,0xf8,0xc3,0xfc,0xc2,0xf9,0x40,
0x10,0xf1,0xe0,0xe0,0xe1,0xc4,0x06,0x07,0x03,0xf3,0xf9,0xf0,0xf0,0xe0,0xe2,0xef,
0xff,0xfe,0x10,0xff,0xff,0xda,0xff,0x58,0x83,0x01,0x78,0xc6,0xfc,0xc2,0xf9,0x60,
0xf1,0xf0,0xf4,0xe5,0xc2,0xff,0x40,0x07,0x7f,0x3f,0xbf,0xfe,0xf0,0x60,0x07,0x1f,
0xc4,0x9f,0x60,0xcf,0xe3,0xf0,0xfc,0xdc,0xff,0x50,0x7f,0x3f,0xd7,0xff,0x08,0xc2,
0xff,0x08,0xc2,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,
0x58,0xfe,0xf0,0xf0,0xc5,0xe1,0x40,0x0c,0xe5,0xe5,0xf1,0xf0,0xf2,0xf0,0xf9,0xf9,
0xf8,0xfc,0xfc,0xf9,0xf9,0xc2,0xfc,0x48,0xfe,0xda,0xff,0x68,0xfb,0xfd,0x4c,0x24,
0x00,0xc2,0x01,0x61,0x47,0x73,0x1b,0x01,0x70,0x20,0x18,0xcf,0x07,0x87,0x5f,0xc9,
0xff,0x08,0xc7,0xff,0x08,0xc6,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,
0x07,0x4f,0xff,0xf4,0xff,0x60,0xfd,0xfc,0xf0,0xf9,0xc2,0xfc,0x40,0x0c,0xf8,0xf8,
0xfc,0xfa,0xf0,0xf8,0xfe,0xfd,0xfc,0xfe,0xf8,0xf8,0xfc,0xd1,0xff,0x08,0xc6,0xff,
0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,0xd3,0xff,0x08,0xd2,
0xff,0x09,0xff,0x09,0xff,0x09,0xff,0x00,0x09,0x4f,0xff,0xcf,0xff,0x00,0xff,0x00,
0x34,0x40,0x09,0x7f,0x3f,0x9f,0x9f,0xcf,0xc7,0xe7,0xf3,0xf3,0xfb,0xc2,0xf9,0x40,
0x07,0xf3,0xf3,0xe7,0xcf,0x8f,0x1f,0x3f,0x7f,0xc3,0x3f,0xcd,0x9f,0x60,0xbf,0x3f,
0x7f,0x7f,0x00,0x40,0x40,0x0a,0xfe,0xfc,0xf8,0xf2,0xe4,0xcc,0x9c,0x9c,0x0c,0x5c,
0x5c,0xc2,0xdc,0x48,0x9c,0xc2,0x1c,0x48,0xbc,0xc3,0x3c,0xc3,0x7d,0xc7,0xfd,0xcb,
0xfc,0x40,0x0f,0xf9,0xf9,0xf1,0xc1,0x0d,0x11,0xc5,0xc1,0xc5,0xe5,0xe7,0xf3,0xf1,
0xf8,0xfc,0xfe,0x00,0x45,0x40,0x0c,0x7f,0x3f,0x9f,0xcf,0xe7,0xe2,0xe2,0xc8,0x9c,
0x9e,0x3e,0x3f,0x7f,0xc5,0xff,0xc2,0xfe,0xc2,0xfc,0x40,0x0f,0xfd,0xf9,0xf9,0xfb,
0xf3,0xf3,0xe7,0xe7,0xef,0xcf,0xcf,0x9f,0x9f,0x3f,0x7f,0x7f,0x2c,0xff,0xf8,0xc0,
0x07,0x00,0x49,0x7b,0x1f,0x07,0xe3,0xf8,0xfc,0xfe,0xff,0x62,0x7f,0x7f,0x01,0x00,
0x59,0xc0,0xfc,0xfd,0x58,0xfb,0xf9,0x19,0xc2,0x01,0xc2,0x00,0x48,0x0c,0xc5,0xfc,
0x93,0xfd,0x40,0x0c,0xff,0xff,0xfc,0xf0,0xc0,0x04,0x19,0xd3,0xc7,0x8f,0x9f,0xc7,
0xe0,0x00,0x47,0x40,0x11,0x0f,0x00,0xf0,0xc1,0x89,0x39,0x79,0x71,0xf3,0xe3,0xe7,
0xcf,0x88,0x00,0x20,0x60,0xf0,0xfc,0x2a,0xe3,0x80,0x1c,0x80,0xc0,0xe0,0xf8,0x00,
0x08,0x40,0x09,0x3f,0x1f,0xcf,0xcf,0x4f,0x0f,0x9f,0x1e,0x00,0x01,0xc6,0x0f,0x40,
0x0f,0x4f,0x07,0x87,0x03,0x03,0x43,0xe3,0x63,0x03,0x03,0x93,0xf3,0xf3,0xc7,0x0f,
0x3f,0x00,0x35,0x59,0xf0,0x80,0x0f,0x68,0xff,0xff,0xfe,0xfc,0xfc,0xc2,0xf9,0xc2,
0xf3,0x50,0xf2,0xfe,0x00,0x07,0xc3,0xff,0x00,0x0b,0x40,0x0a,0xf0,0xe0,0xef,0xcc,
0xc8,0xc8,0xe4,0x30,0x00,0xc0,0xfe,0xc2,0xff,0x70,0xe0,0x02,0x13,0xb2,0xb2,0xf0,
0xc2,0xf8,0x5b,0xfc,0xfc,0xfe,0x60,0x7f,0x0f,0x80,0xf0,0x00,0x15,0xd3,0xff,0x40,
0x08,0x3f,0x1f,0x87,0xe3,0xf3,0x79,0x79,0x39,0x38,0xc2,0x39,0x40,0x09,0x33,0x23,
0x00,0x10,0xe3,0x87,0x1f,0x3f,0x7f,0x7f,0xc9,0xff,0x60,0xcf,0xe3,0xf1,0xf9,0xc4,
0xfc,0xcc,0xff,0x40,0x0a,0x7f,0x7f,0x3f,0x8f,0xc7,0xe1,0xf8,0xfe,0xff,0xff,0x03,
0x08,0x58,0xf8,0x7c,0x3e,0xcc,0xff,0x50,0xfe,0xf8,0x08,0x48,0x0f,0xe9,0xff,0x40,
0x2f,0xe0,0xc0,0x0f,0x33,0xf8,0xfc,0x3e,0x8e,0xc7,0xe7,0xf3,0x73,0x39,0x19,0x90,
0xc0,0x01,0x19,0xf8,0xfc,0xe0,0xfc,0xfc,0xf8,0xf9,0x61,0x03,0x13,0x87,0xc7,0x67,
0x27,0x37,0x93,0x93,0x43,0x03,0x07,0x87,0x87,0xc7,0xcf,0xcf,0x87,0x07,0x27,0x67,
0xe7,0xc2,0xf3,0x68,0xf9,0xf9,0xfc,0xfc,0xfe,0xc8,0xff,0x48,0xc0,0x08,0x50,0x38,
0x78,0xc5,0xff,0x40,0x0a,0x7f,0x3f,0xff,0xff,0x7f,0x3f,0x1f,0x8f,0xc7,0xe0,0xf8,
0xec,0xff,0x40,0x26,0xfc,0xf8,0xf1,0xf3,0xe7,0xe7,0xcf,0xcd,0xcc,0xce,0xc7,0xc3,
0xc1,0xe0,0xe0,0xf1,0xe3,0xe1,0xe4,0xe7,0xe7,0xf3,0xf0,0xc0,0x86,0x1f,0x3f,0x60,
0x40,0xc3,0x91,0x9c,0x3e,0x39,0x3d,0x8c,0xc4,0xe0,0xf9,0xc2,0xff,0x13,0xe0,0xc0,
0xc0,0x08,0x40,0x08,0x30,0x3c,0xf8,0xf1,0xe3,0x07,0x1f,0x9f,0x3f,0xc3,0x7f,0xc2,
0xff,0x48,0xfe,0xca,0xfc,0xc1,0xfe,0xff,0xff,0xc8,0xff,0x40,0x0f,0x7f,0x3f,0x1f,
0x98,0x90,0x82,0xc4,0xcc,0xcc,0xce,0xce,0xcf,0x9f,0x1f,0x3f,0x7f,0xc2,0xff,0x78,
0xfe,0xff,0x3f,0x37,0x30,0x18,0x07,0x08,0x68,0x80,0x87,0x41,0x68,0x7e,0xc2,0x7f,
0x78,0x7c,0xf0,0x80,0xf8,0xe1,0x03,0x0f,0xff,0xff,0xd4,0xff,0x68,0xf8,0xe0,0xe2,
0xcf,0x0f,0xc3,0x1f,0x40,0x11,0x5f,0x7f,0x7f,0x3f,0x3f,0xbf,0x9f,0x9f,0xcf,0xe7,
0xf3,0xf9,0x8c,0x06,0x62,0xf0,0xf8,0xf8,0xc2,0xfc,0xc4,0xfe,0xc2,0xff,0x68,0x7f,
0x08,0x80,0xe4,0xfc,0xd8,0xff,0x50,0x7f,0x3f,0xd7,0xff,0x08,0xc2,0xff,0x08,0xc2,
0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,0xc3,0xff,0xc2,
0xfe,0xcb,0xff,0x68,0xfe,0xfc,0xf0,0xf1,0xf1,0xc3,0xe1,0x40,0x08,0xf1,0xf1,0xf3,
0xf3,0xf9,0xf8,0xfc,0xfc,0xfe,0xcf,0xff,0x68,0xfb,0xfd,0x4c,0x24,0x00,0xc2,0x01,
0x61,0x47,0x73,0x1b,0x01,0x70,0x20,0x18,0xcf,0x07,0x87,0x5f,0xc9,0xff,0x08,0xc7,
0xff,0x08,0xc6,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,
0xf4,0xff,0x60,0xfd,0xfc,0xf0,0xf9,0xc2,0xfc,0x40,0x0c,0xf8,0xf8,0xfc,0xfa,0xf0,
0xf8,0xfe,0xfd,0xfc,0xfe,0xf8,0xf8,0xfc,0xd1,0xff,0x08,0xc6,0xff,0x10,0xc3,0xff,
0x19,0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,0xd3,0xff,0x08,0xd2,0xff,0x09,0xff,
0x09,0xff,0x09,0xff,0x00,0x09,0x4f,0xff,0xcf,0xff,0x00,0xbc,0xc5,0x7f,0x00,0x5e,
0x60,0x9f,0x1f,0x9f,0x9f,0xc2,0xbf,0xca,0x3f,0x40,0x14,0x1f,0x0f,0x07,0x27,0x33,
0x31,0x39,0x3c,0x3c,0x3e,0x3e,0x3f,0x3f,0x3e,0x3e,0x3c,0x38,0x39,0xb3,0x87,0x87,
0xc2,0x8f,0x60,0x87,0x87,0xa7,0x27,0xc7,0x33,0x40,0x07,0xb3,0x33,0xe7,0xe7,0x67,
0x2f,0x0f,0xcf,0x00,0x40,0x40,0x10,0xff,0xff,0xfe,0xfc,0xfd,0xf9,0xf3,0xe3,0xe3,
0xcb,0xd3,0x13,0x33,0x33,0x97,0xd7,0xc7,0xc2,0xe7,0xc1,0xef,0xc2,0xcf,0x48,0xdf,
0xc2,0x9f,0xc2,0x3f,0xc2,0x7f,0xcc,0xff,0x40,0x0b,0xfe,0xfc,0xf8,0xe1,0x02,0x10,
0xf2,0xf8,0xf9,0xfc,0xfc,0xfe,0xc2,0xff,0x00,0x2a,0x58,0x3f,0x1f,0x8f,0xc2,0xcf,
0x60,0x8f,0x9f,0x1f,0x3f,0xc2,0x7f,0x00,0x0b,0x40,0x10,0x7f,0x3f,0x8f,0xc7,0xe3,
0xf1,0xf9,0xfc,0xfa,0xfb,0x33,0x27,0x07,0x0f,0x1f,0x9f,0xbf,0x08,0xc2,0x7f,0xc5,
0x3f,0x40,0x12,0xbf,0x9f,0x9e,0xbe,0xbe,0xbc,0xbc,0xbd,0xb9,0xf9,0xf3,0xf3,0xe7,
0xc7,0x8f,0x1f,0x1f,0x3f,0x7f,0x1b,0xff,0xf0,0x00,0x18,0xc2,0x7f,0xc2,0x3f,0xc3,
0x7f,0x00,0x22,0x40,0x0a,0x3f,0x0f,0xc7,0xe0,0xe0,0x73,0x73,0xc3,0x03,0x00,0x7c,
0xc2,0x7e,0x70,0x3e,0x1c,0xc0,0xc1,0x0f,0x1f,0x28,0x68,0x1f,0x07,0x61,0x38,0x3e,
0xc2,0x7f,0x1b,0x1f,0x0d,0x00,0x1b,0xf0,0xff,0xff,0x0e,0xfe,0xfe,0x02,0x00,0x00,
0x00,0x18,0x48,0x03,0xc7,0xff,0x28,0x40,0x1f,0xff,0xfe,0xf8,0xc1,0x03,0x32,0xf0,
0x73,0x73,0x71,0x3c,0x0f,0x01,0x90,0x80,0x00,0x18,0x18,0x59,0x58,0x50,0x52,0x06,
0x06,0x1c,0xfc,0xf9,0xf1,0xf1,0xe1,0xcc,0xdc,0xc2,0xfc,0x40,0x07,0xf9,0xf9,0xf1,
0xf3,0xe3,0x87,0x1f,0x3f,0x00,0x0f,0x40,0x0f,0x02,0x00,0x3d,0xbc,0x9e,0x9e,0x1e,
0x3c,0x3c,0x30,0x80,0x80,0x38,0x7e,0x7f,0x7f,0x17,0x80,0xc0,0xf8,0xfc,0xfc,0xfc,
0x00,0x08,0x40,0x0f,0xfe,0xf0,0xe1,0xc7,0x8e,0x9e,0x3c,0x3c,0x79,0x71,0x73,0xe4,
0xcc,0xcc,0x9c,0xff,0x28,0x50,0xf8,0xf0,0xc3,0xe0,0x58,0xf0,0xf8,0xff,0x00,0x08,
0x40,0x1f,0x0f,0x03,0xf3,0x19,0x09,0x23,0x93,0x01,0x08,0x04,0xc0,0xf2,0xf2,0xf8,
0xf9,0xf8,0xfc,0xf8,0xf0,0xc2,0x8e,0x1e,0x3e,0x3b,0x67,0xe7,0xe7,0xe3,0xe0,0x78,
0x3f,0x3f,0x0a,0x1f,0x8f,0x00,0x09,0x60,0xef,0xc8,0x00,0x07,0x00,0x0d,0x40,0x15,
0xfc,0xf8,0xe3,0xc3,0xc3,0x93,0x93,0xb2,0x30,0x3c,0x3f,0x1f,0x1f,0x0e,0x46,0x4e,
0xcf,0x8f,0x9f,0x1f,0x3f,0x7f,0x0e,0x7f,0x1e,0x00,0x03,0x1f,0x7f,0x08,0xc3,0xff,
0xc5,0xfe,0x48,0xff,0x30,0xc1,0x7f,0xc3,0x3f,0xc1,0x7f,0x00,0x09,0x40,0x31,0xfe,
0xfc,0xf9,0xfb,0xfb,0xf9,0x39,0x0c,0xc0,0xf0,0xff,0x7f,0x3f,0x0f,0x07,0x87,0xa7,
0xb3,0x33,0x27,0x67,0xe7,0xc7,0xce,0x9e,0x1c,0x7c,0xfc,0xfc,0xfe,0xfe,0xfc,0xf8,
0xf1,0xe7,0xe7,0xc7,0xcf,0xcf,0xc7,0xe7,0xe0,0xe0,0xc7,0xcf,0xcf,0xc7,0xe7,0xf0,
0xfe,0x28,0xce,0xff,0x08,0x48,0x00,0xc7,0xfc,0x40,0x15,0xf8,0xf3,0xc7,0x0e,0x78,
0xe0,0x02,0x1e,0xff,0xff,0xfe,0xf8,0xf1,0xe3,0xc7,0x8f,0x9f,0x1f,0x3f,0x3f,0x7f,
0x7f,0xc4,0xff,0x40,0x0a,0x43,0x61,0x60,0x72,0x72,0x79,0x78,0x78,0x7c,0xfc,0xfc,
0xc5,0xff,0xc2,0x7f,0x40,0x08,0x3f,0x3f,0x9f,0x8f,0xc7,0xe3,0xf0,0xfc,0xfe,0xc2,
0xff,0x70,0x20,0x00,0x1f,0x1f,0x9f,0xbf,0xc6,0xff,0x40,0x09,0xf9,0xf0,0xf0,0xe3,
0xe7,0xcf,0x8f,0x1f,0x3f,0x7f,0xe3,0xff,0x48,0xc0,0x08,0x40,0x0a,0x1f,0x9f,0x5f,
0x0f,0x2f,0x87,0x17,0x57,0x3f,0xbf,0xbf,0x11,0xff,0x10,0x70,0x07,0x63,0xf3,0xf1,
0xf9,0xf8,0xc3,0xfc,0x40,0x07,0xf8,0xf9,0xf0,0xe0,0xc4,0x8c,0x04,0x64,0xc3,0xf2,
0xc5,0xf8,0x40,0x0a,0xe0,0xc0,0x89,0x11,0x21,0x4c,0x4c,0x9c,0x9c,0x9e,0x9e,0xc4,
0x3f,0x40,0x09,0x07,0x01,0x99,0x8c,0x84,0xc4,0xc4,0x0e,0x1e,0x7e,0xc2,0xfe,0xc3,
0xff,0x70,0x3f,0x07,0x0f,0x1f,0x0f,0x87,0xc4,0xff,0x40,0x07,0xfe,0xfc,0xf8,0xf1,
0x83,0x0f,0x1f,0x7f,0xde,0xff,0x40,0x16,0xfe,0xf8,0xe0,0xc2,0x89,0x0d,0x04,0x12,
0x82,0xc9,0xc5,0xe7,0xe0,0xcc,0x19,0x18,0x3f,0x7f,0xfe,0xff,0x7f,0x3f,0x3f,0xc9,
0x7f,0x58,0x7e,0x30,0x01,0xcd,0xff,0xc1,0xfe,0xc2,0xfc,0xc8,0xf9,0x50,0xe1,0x80,
0x0b,0x06,0x0e,0xf8,0x08,0x48,0x07,0xc3,0xff,0x40,0x0a,0x3f,0x07,0x80,0xf8,0xfc,
0xf0,0xe2,0xc7,0xcf,0x9f,0x9f,0xc5,0x3f,0x60,0x9f,0x80,0xe6,0xe0,0xe2,0xff,0x78,
0xfc,0xf0,0xc6,0xcf,0x9f,0x3f,0x3f,0xc2,0x7f,0x48,0x3f,0x10,0x40,0x07,0x80,0xc3,
0xe0,0xf0,0xfc,0xfc,0xff,0xff,0xc8,0xfe,0xdf,0xff,0x40,0x0b,0xfe,0xf8,0xf0,0xe3,
0xc4,0xce,0xcf,0xe7,0xe3,0xf0,0xfc,0xfe,0xfc,0xff,0x08,0x48,0xfe,0xff,0xff,0xd3,
0xff,0x50,0x7f,0x3f,0xd7,0xff,0x08,0xc2,0xff,0x08,0xc2,0xff,0x10,0xc3,0xff,0x19,
0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,0xf4,0xff,0x68,0xfb,0xfd,0x4c,0x24,0x00,
0xc2,0x01,0x61,0x47,0x73,0x1b,0x01,0x70,0x20,0x18,0xcf,0x07,0x87,0x5f,0xc9,0xff,
0x08,0xc7,0xff,0x08,0xc6,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,0x07,
0x4f,0xff,0xf4,0xff,0x60,0xfd,0xfc,0xf0,0xf9,0xc2,0xfc,0x40,0x0c,0xf8,0xf8,0xfc,
0xfa,0xf0,0xf8,0xfe,0xfd,0xfc,0xfe,0xf8,0xf8,0xfc,0xd1,0xff,0x08,0xc6,0xff,0x10,
0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,0xd3,0xff,0x08,0xd2,0xff,
0x09,0xff,0x09,0xff,0x09,0xff,0x00,0x09,0x4f,0xff,0xcf,0xff,0x00,0xbc,0x9a,0xff,
0x48,0xff,0x00,0x5e,0x49,0xdf,0x50,0x5f,0xdf,0xc4,0x9f,0xc1,0xbf,0x00,0x08,0x49,
0x0f,0x51,0x23,0x33,0x60,0x39,0x7d,0x7c,0x7c,0xc2,0x7e,0x40,0x1a,0x7c,0x7c,0x79,
0x73,0x23,0x07,0x0f,0x4f,0x47,0x67,0x63,0x73,0x33,0x31,0x19,0x99,0xc9,0xcc,0xc4,
0x04,0x44,0x10,0x38,0x1c,0x8c,0xc0,0xf1,0xc2,0xff,0x00,0x42,0x59,0xff,0xfe,0xfc,
0x51,0xf1,0xf3,0x40,0x07,0xeb,0xcb,0x9b,0x93,0xb3,0x33,0x33,0x77,0xc2,0x27,0xc3,
0x8f,0x91,0x9f,0x51,0xbf,0x3f,0x91,0x7f,0xc1,0xff,0x00,0x07,0xc4,0xfe,0x40,0x07,
0xfc,0xf8,0xe1,0x81,0x08,0x7c,0xfe,0xfe,0xc3,0xff,0x00,0x2d,0xcc,0xff,0x00,0x0b,
0x40,0x10,0xff,0xff,0x3f,0x1f,0x8f,0xc7,0xe3,0xf3,0xf9,0xec,0xcc,0x1e,0x1e,0x3e,
0x7f,0x7f,0xff,0x08,0xc8,0xff,0xc2,0x7e,0x40,0x0f,0x7c,0xfc,0xfd,0xf9,0xf3,0xf3,
0xf7,0xe7,0xef,0xcf,0x1f,0x1f,0x3f,0x7f,0xff,0xff,0x1b,0xfc,0x00,0x0f,0x18,0xc9,
0xff,0x00,0x22,0xd3,0xff,0x28,0x40,0x07,0x7f,0x1f,0x87,0xe1,0xf8,0xfe,0xff,0xff,
0x1a,0x7f,0x37,0x23,0xc0,0xfe,0xfe,0x0c,0xf9,0xf9,0x09,0x04,0x28,0x48,0x06,0xc7,
0xfe,0x28,0x40,0x0a,0xfe,0xf8,0xe0,0x06,0x0d,0xe9,0xcf,0xcf,0xe7,0xf0,0xfc,0xdf,
0xff,0x00,0x0f,0xcf,0xff,0x17,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x08,0x40,0x0f,
0xf8,0xe1,0x84,0x1c,0x38,0x79,0x71,0xf3,0xe3,0xe7,0xcc,0x90,0x10,0x30,0x70,0xfc,
0x28,0x50,0xe3,0xc1,0xc3,0x80,0x58,0xc0,0xe0,0xfc,0x00,0x08,0x58,0x3f,0x0f,0xcf,
0xc2,0x67,0x68,0x0f,0x1f,0x20,0x00,0x3f,0xc2,0x7f,0xd4,0xff,0x00,0x09,0xc3,0xff,
0x00,0x0d,0xd2,0xff,0x49,0x7f,0x91,0x3f,0x6a,0xf8,0x80,0x0f,0x7f,0xff,0x60,0xfe,
0xfc,0xfc,0xf8,0xc2,0xf9,0x5e,0xfb,0xfb,0xfe,0xc7,0xff,0x00,0x09,0x40,0x13,0xf8,
0xf0,0xe6,0xec,0xec,0xe4,0xe4,0x30,0x00,0xc0,0xf8,0xf8,0xf2,0xf2,0xe0,0xe4,0xc8,
0x89,0x11,0x33,0x08,0x40,0x07,0x07,0x0f,0x9f,0x8f,0xcf,0xe7,0xe7,0xe3,0xc4,0xf3,
0x48,0xe3,0x10,0x50,0x0f,0x3f,0xca,0xff,0x28,0xd1,0xff,0x40,0x18,0x3f,0x0f,0xcf,
0xe7,0xe3,0xf3,0x73,0x79,0x00,0x00,0x1e,0x3f,0x3e,0x3c,0x00,0xc1,0xf0,0xe0,0xc1,
0x07,0x0f,0x1f,0x3f,0x7f,0x7f,0xc8,0xff,0x60,0xe7,0xe3,0xf3,0xf1,0xc2,0xf8,0xc3,
0xfc,0xc9,0xff,0x40,0x07,0x7f,0x7f,0x3f,0x1f,0x8f,0xc3,0xf0,0xf8,0xc2,0xff,0xc5,
0x7f,0x78,0x0f,0x03,0x30,0x78,0x1e,0x1f,0x4f,0xca,0xff,0x70,0xfb,0xf3,0xe2,0xc0,
0x0f,0x1f,0xdf,0xff,0x40,0x3c,0xfc,0xf8,0xf1,0x83,0x01,0x78,0xbc,0x9e,0xce,0xc7,
0xe7,0xf3,0x73,0x33,0x10,0x84,0x3f,0x3f,0xff,0x7c,0x30,0x0f,0x8f,0x9e,0x9c,0x1c,
0x3c,0x01,0x01,0x43,0xc3,0xc3,0x63,0x27,0x07,0x87,0xc7,0x47,0x27,0x27,0x93,0x13,
0x43,0xc3,0x83,0x07,0x27,0x67,0x73,0x73,0xf3,0x81,0x01,0x01,0xe0,0x40,0x08,0x1c,
0x3d,0xfd,0xfd,0xc3,0xf9,0x50,0xf8,0xfc,0xc3,0xfe,0x68,0xfc,0xbc,0x38,0x70,0x40,
0x08,0x68,0x3c,0xff,0xff,0x0f,0x1f,0xc6,0xff,0x70,0x3f,0x3f,0xff,0xff,0x7f,0x1f,
0x08,0x48,0xe0,0xe3,0xff,0x40,0x07,0xfc,0x38,0x03,0xc3,0xe7,0xe7,0xe4,0xe6,0xc2,
0xe7,0x58,0xc0,0xc0,0x80,0x08,0x50,0x3e,0x7f,0xc4,0xff,0x40,0x16,0xfe,0xfe,0xfc,
0xf8,0xf0,0xe0,0xc6,0x03,0x01,0x78,0xfc,0xfe,0xff,0xff,0xfe,0xfc,0xf8,0xf1,0xf3,
0xe3,0xe6,0xe6,0xce,0xc3,0xcc,0x40,0x07,0xce,0x0e,0x0f,0xe7,0xf4,0xf0,0x01,0x0f,
0xc2,0xff,0x40,0x0f,0x0f,0x1f,0x07,0x07,0x3f,0x1f,0x9f,0x9f,0xdf,0xff,0xfe,0xfc,
0xf8,0xf0,0xc0,0x80,0x08,0x50,0x41,0xcf,0xc2,0x9f,0x40,0x07,0x8f,0xcf,0xc7,0xe2,
0xf1,0xf1,0xf8,0xfe,0xe5,0xff,0x68,0xf4,0x80,0x01,0x7b,0xfb,0xc2,0xf3,0x40,0x0b,
0xe7,0xe7,0xcf,0x8f,0x1f,0x3f,0x7f,0xfe,0xfc,0xf0,0xe3,0xcf,0xc6,0xff,0x58,0x5f,
0x1f,0x3f,0x08,0x48,0xc0,0xd2,0xff,0x40,0x10,0xfc,0xf8,0xf1,0xe3,0xe7,0xe4,0xe7,
0xe3,0xf0,0xf8,0xfe,0xfe,0xf0,0xc0,0x07,0x3f,0x7f,0xc7,0xff,0x60,0xfe,0x60,0x01,
0x1f,0xf1,0xff,0x08,0x40,0x12,0xfc,0xf8,0xf1,0xe3,0xc7,0xcf,0x9f,0x9f,0x1f,0x1f,
0x1e,0x1e,0x18,0x31,0x33,0x47,0x8f,0x9f,0x3f,0xc4,0xff,0x60,0xfe,0xf8,0x00,0x07,
0xe2,0xff,0x68,0xfe,0xfc,0xf9,0xf1,0xf3,0xc4,0xe7,0x58,0xf3,0xf0,0xf8,0xca,0xff,
0x50,0x7f,0x3f,0xd7,0xff,0x08,0xc2,0xff,0x08,0xc2,0xff,0x10,0xc3,0xff,0x19,0xff,
0x08,0xc1,0xff,0x20,0x60,0xfe,0xfe,0xf8,0xf0,0xc2,0xe0,0x40,0x0a,0xc0,0xc8,0xca,
0xc8,0xc9,0xcb,0x93,0x83,0xc4,0xc0,0xf3,0xee,0xff,0x68,0xfb,0xfd,0x4c,0x24,0x00,
0xc2,0x01,0x60,0x47,0x73,0x1b,0x01,0x08,0x70,0x20,0x18,0xcf,0x07,0x87,0x5f,0xc9,
0xff,0x08,0xc7,0xff,0x08,0xc6,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,
0x07,0x4f,0xff,0xf4,0xff,0x60,0xfd,0xfc,0xf0,0xf9,0xc2,0xfc,0x40,0x0c,0xf8,0xf8,
0xfc,0xfa,0xf0,0xf8,0xfe,0xfd,0xfc,0xfe,0xf8,0xf8,0xfc,0xd1,0xff,0x08,0xc6,0xff,
0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,0xd3,0xff,0x08,0xd2,
0xff,0x09,0xff,0x09,0xff,0x09,0xff,0x00,0x09,0x4f,0xff,0xcf,0xff,0x00,0xbf,0xc1,
0xff,0x00,0x5f,0xd4,0xff,0x40,0x10,0x7f,0x3f,0x3f,0x9f,0x9f,0xcf,0xcf,0xe7,0xe7,
0xf7,0xe7,0xe7,0xcf,0x9f,0x1f,0x3f,0x7f,0xc3,0xff,0xc4,0x7f,0xc7,0x3f,0xc3,0x7f,
0x00,0x44,0x78,0xf3,0xe3,0xcb,0x9b,0x9b,0x33,0x73,0xc4,0x33,0xc5,0x73,0x60,0xf1,
0xf0,0xf0,0xf2,0xce,0xf3,0xc5,0xf0,0xc3,0xf2,0x40,0x0e,0xe3,0xc3,0x83,0x13,0x63,
0x13,0x23,0x93,0x96,0x8e,0xce,0xe6,0xe2,0xf0,0xf9,0x00,0x45,0x40,0x0b,0xff,0xff,
0x7e,0x3e,0x9c,0xc9,0xa1,0x23,0x33,0x79,0x79,0xfc,0xc3,0xfe,0xc2,0xfc,0x48,0xfd,
0xc2,0xf9,0x40,0x0e,0xfb,0xf3,0xf3,0xf7,0xe7,0xe7,0xef,0xcf,0xcf,0x9f,0x9f,0xbf,
0x3f,0x3f,0x7f,0xc3,0xff,0x23,0xfc,0xf0,0x01,0x00,0x49,0x40,0x07,0xff,0x7f,0x1f,
0x87,0xe3,0xf1,0xfc,0xfe,0x1c,0xff,0xdf,0x07,0x02,0x13,0x01,0xf3,0xfb,0x08,0x60,
0xe7,0xe7,0x27,0x07,0xc4,0x03,0x50,0x33,0xf3,0xc5,0xfb,0x48,0xf7,0x18,0x40,0x0c,
0xfe,0xfc,0xf0,0xe1,0x81,0x13,0x27,0x6f,0x1f,0x3f,0x7f,0x1f,0x80,0x00,0x47,0x40,
0x11,0x3f,0x01,0xc0,0x06,0x03,0x73,0xe7,0xe7,0xcf,0xcf,0x9f,0x1f,0x31,0x40,0x80,
0x80,0xc0,0xf0,0x28,0x48,0x8f,0xc5,0x00,0x50,0x80,0xf0,0x00,0x08,0x40,0x09,0xff,
0x7f,0x3f,0xbf,0x9f,0x3f,0x3f,0x7c,0x80,0x03,0xc3,0xff,0x00,0x43,0xc4,0xff,0x40,
0x09,0xe0,0x00,0x3f,0xff,0xfe,0xfc,0xf8,0xf9,0xf3,0xf3,0xc2,0xe7,0x60,0xce,0xcc,
0xed,0xf9,0x00,0x07,0x68,0xfe,0x7e,0x7e,0x7e,0x7f,0x00,0x0a,0x40,0x0f,0xe0,0xc0,
0x9f,0xb1,0xb0,0xb8,0x92,0xc2,0x04,0x04,0xc8,0x89,0x33,0xc7,0x8f,0x3f,0xd6,0xff,
0x00,0x0f,0xe0,0xff,0x78,0xfe,0xf0,0xc1,0x87,0x1f,0x3f,0x7f,0xcb,0xff,0x70,0xe7,
0xe3,0xf1,0xf9,0xfc,0xfc,0xc3,0xfe,0xcd,0xff,0x40,0x14,0x7f,0x3f,0x0f,0x83,0xe0,
0x08,0x03,0xf3,0xf9,0xf8,0xf8,0xf9,0xf8,0xf8,0xf3,0xf3,0xe7,0xc7,0x8f,0x1f,0x7f,
0xff,0xff,0xc2,0xff,0x40,0x0e,0x7f,0x3f,0x1e,0x9c,0xd8,0x09,0x03,0x73,0xe7,0xe7,
0xc7,0xcf,0x0f,0x0f,0x9f,0xc3,0x1f,0xc5,0x3f,0xc3,0x1f,0x40,0x09,0x9f,0x9f,0x8f,
0xcf,0x4f,0x07,0x87,0xe3,0xf3,0xf1,0xc2,0xf8,0xc2,0xf9,0xc2,0xf8,0x58,0xfc,0xfc,
0xfd,0xc3,0xff,0x48,0x7f,0xc2,0xff,0x50,0xfe,0x78,0x08,0x48,0x83,0xff,0xff,0x40,
0x0c,0xe0,0xc0,0x8e,0x9f,0x1f,0x07,0x63,0xf0,0xf8,0x08,0xc1,0xe1,0xf1,0x0a,0xe4,
0x67,0x10,0x40,0x0b,0x0f,0x38,0x70,0x03,0x81,0xf8,0x0e,0x02,0x80,0x8c,0x9f,0x9c,
0x08,0x40,0x0d,0x03,0xff,0xff,0xf0,0xe0,0xcf,0x8f,0x0f,0x67,0xe7,0xf7,0x7b,0x7c,
0xfc,0xc8,0xff,0x48,0x3f,0x08,0x78,0xe0,0xe7,0xf3,0xf3,0xf9,0xfc,0xfe,0xff,0xff,
0xc5,0xff,0x48,0xfe,0xc2,0xfc,0x68,0xe0,0xc0,0x8c,0x3c,0x70,0xc7,0xf0,0xc1,0xf3,
0xc2,0xf0,0xc2,0xf8,0x40,0x18,0x20,0x02,0xe7,0x83,0x01,0x70,0xf8,0xff,0xfe,0xfc,
0xfc,0xf8,0xf0,0xf3,0xf3,0xe3,0xe1,0x85,0x07,0xe7,0xf3,0xf3,0xf9,0xfc,0xfe,0xff,
0xff,0xce,0xff,0x50,0x0f,0x07,0xc4,0xf3,0x68,0xf0,0xf0,0xf1,0xf3,0xf3,0xc2,0xe7,
0x60,0xcf,0xcf,0x9f,0xbf,0xc2,0xff,0x40,0x0b,0xf3,0xf9,0xf8,0xf4,0xf4,0xf1,0xe6,
0xe0,0x81,0x13,0x67,0xe7,0xc5,0xcf,0x58,0xe7,0xe1,0xf0,0xdc,0xff,0x50,0x7f,0x3f,
0xd7,0xff,0x08,0xc2,0xff,0x08,0xc2,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,
0x00,0x07,0x40,0x0a,0xff,0xfe,0xf8,0xe1,0xc3,0xc7,0x87,0x8f,0x8f,0x9f,0x1f,0xc6,
0x3f,0xc3,0x9f,0x58,0xcf,0xcf,0x8f,0xc2,0x9f,0x70,0x9b,0xcb,0xc9,0xc1,0xe0,0xf0,
0xda,0xff,0x68,0xfb,0xfd,0x4c,0x24,0x00,0xc2,0x01,0x60,0x47,0x73,0x1b,0x01,0x08,
0x70,0x20,0x18,0xcf,0x07,0x87,0x5f,0xc9,0xff,0x08,0xc7,0xff,0x08,0xc6,0xff,0x10,
0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,0xf4,0xff,0x60,0xfd,0xfc,
0xf0,0xf9,0xc2,0xfc,0x40,0x0c,0xf8,0xf8,0xfc,0xfa,0xf0,0xf8,0xfe,0xfd,0xfc,0xfe,
0xf8,0xf8,0xfc,0xd1,0xff,0x08,0xc6,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,
0x00,0x07,0x4f,0xff,0xd3,0xff,0x08,0xd2,0xff,0x09,0xff,0x09,0xff,0x09,0xff,0x00,
0x09,0x4f,0xff,0xcf,0xff,0x00,0xff,0x00,0x34,0x40,0x09,0x7f,0x3f,0x9f,0x9f,0xcf,
0xc7,0xe7,0xf3,0xf3,0xfb,0xc2,0xf9,0x40,0x07,0xf3,0xf3,0xe7,0xcf,0x8f,0x1f,0x3f,
0x7f,0xc3,0x3f,0xcd,0x9f,0x60,0xbf,0x3f,0x7f,0x7f,0x00,0x40,0x40,0x0a,0xfe,0xfc,
0xf8,0xf2,0xe4,0xcc,0x9c,0x9c,0x0c,0x5c,0x5c,0xc2,0xdc,0x48,0x9c,0xc2,0x1c,0x48,
0xbc,0xc3,0x3c,0xc3,0x7d,0xc7,0xfd,0xcb,0xfc,0x40,0x0f,0xf9,0xf9,0xf1,0xc1,0x0d,
0x11,0xc5,0xc1,0xc5,0xe5,0xe7,0xf3,0xf1,0xf8,0xfc,0xfe,0x00,0x45,0x40,0x0c,0x7f,
0x3f,0x9f,0xcf,0xe7,0xe2,0xe2,0xc8,0x9c,0x9e,0x3e,0x3f,0x7f,0xc5,0xff,0xc2,0xfe,
0xc2,0xfc,0x40,0x0f,0xfd,0xf9,0xf9,0xfb,0xf3,0xf3,0xe7,0xe7,0xef,0xcf,0xcf,0x9f,
0x9f,0x3f,0x7f,0x7f,0x2c,0xff,0xf8,0xc0,0x07,0x00,0x49,0x7b,0x1f,0x07,0xe3,0xf8,
0xfc,0xfe,0xff,0x62,0x7f,0x7f,0x01,0x00,0x59,0xc0,0xfc,0xfd,0x58,0xfb,0xf9,0x19,
0xc2,0x01,0xc2,0x00,0x48,0x0c,0xc5,0xfc,0x93,0xfd,0x40,0x0c,0xff,0xff,0xfc,0xf0,
0xc0,0x04,0x19,0xd3,0xc7,0x8f,0x9f,0xc7,0xe0,0x00,0x47,0x40,0x11,0x0f,0x00,0xf0,
0xc1,0x89,0x39,0x79,0x71,0xf3,0xe3,0xe7,0xcf,0x88,0x00,0x20,0x60,0xf0,0xfc,0x2a,
0xe3,0x80,0x1c,0x80,0xc0,0xe0,0xf8,0x00,0x08,0x50,0x3f,0x1f,0xc3,0xcf,0x68,0x1f,
0x3e,0xe0,0x01,0x7f,0x00,0x4b,0x59,0xf0,0x80,0x0f,0x68,0xff,0xff,0xfe,0xfc,0xfc,
0xc2,0xf9,0xc2,0xf3,0x50,0xf2,0xfe,0x00,0x07,0x60,0xff,0x7f,0x7f,0x7f,0x00,0x0b,
0x40,0x0b,0xf0,0xe0,0xef,0xc8,0xc0,0xc4,0x0c,0x38,0xf0,0xc0,0x0e,0x3f,0xc3,0xff,
0x00,0x26,0xe1,0xff,0x40,0x07,0xfc,0xf0,0xe3,0xc7,0x9f,0x3f,0x7f,0x7f,0xc9,0xff,
0x40,0x0c,0xf7,0xf3,0xf9,0x78,0x3c,0x1c,0x8e,0xce,0xe6,0xe6,0xe4,0x67,0x67,0xc3,
0xe7,0x60,0xcf,0xcf,0xc7,0x87,0xc4,0xf3,0x40,0x07,0xe3,0xe1,0xe0,0xcf,0x87,0x80,
0x38,0x7f,0xff,0xff,0xcf,0xff,0x40,0x10,0x3f,0x0f,0xce,0x64,0x24,0x90,0xc1,0xc1,
0x43,0x63,0x27,0x27,0x07,0x07,0x87,0x8f,0x01,0x08,0x40,0x08,0x1e,0x0f,0xe7,0xf3,
0xf9,0x7c,0x3e,0x9e,0xdf,0xd2,0xff,0x50,0xfe,0xf8,0x08,0x48,0x03,0xff,0xff,0xcd,
0xff,0x40,0x24,0xf8,0x30,0x03,0x0c,0x10,0x23,0x09,0x8c,0xcc,0xc6,0xe2,0xf0,0xf8,
0xfe,0xff,0x7f,0x7f,0xfe,0xe0,0xc0,0xe3,0xe3,0xc0,0x1c,0x9f,0x07,0x23,0x39,0x7c,
0x3f,0x3f,0xbf,0x1f,0x0f,0x87,0x83,0x01,0x08,0x68,0xc1,0xcf,0x0f,0x0f,0xcf,0xc2,
0xe7,0x60,0xf3,0xf1,0xf8,0xfc,0xff,0xff,0xcf,0xff,0x40,0x0b,0xfc,0x7c,0x18,0x89,
0xc1,0xe1,0xf1,0xf9,0xf9,0xfd,0xfc,0xfc,0xc2,0xfe,0xc2,0xff,0x40,0x11,0x7f,0x03,
0x82,0x02,0x21,0x58,0xd8,0xcc,0xce,0xec,0xe0,0xe1,0xf3,0xf2,0xf8,0xf8,0xfc,0xfe,
0xc2,0xff,0x40,0x08,0xe0,0xe1,0xe3,0xf3,0xe3,0xe7,0xcf,0x1f,0x7f,0xff,0xff,0xd0,
0xff,0x68,0xfc,0xf0,0xe1,0xe7,0xc7,0xc2,0xcf,0xc2,0x9f,0x40,0x0e,0x8f,0x8f,0xc7,
0xc3,0xe3,0xf1,0xf8,0xfe,0x0f,0x07,0xe6,0xf0,0xf0,0xf1,0xf1,0xc8,0xf9,0xc1,0xfb,
0xc2,0xff,0x40,0x07,0x7f,0x3f,0x0f,0x37,0x11,0x84,0xc0,0xf8,0xd7,0xff,0x50,0x7f,
0x3f,0xd7,0xff,0x08,0xc2,0xff,0x08,0xc2,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,
0xff,0x00,0x07,0x4f,0xff,0xcb,0xff,0x68,0xfe,0xf8,0xf1,0xe3,0xc7,0xc3,0x8f,0x40,
0x0c,0x87,0x87,0x97,0x97,0xcb,0xcf,0xcf,0xc7,0xe7,0xe3,0xf1,0xf9,0xfc,0xc2,0xfe,
0xcf,0xff,0x68,0xfb,0xfd,0x4c,0x24,0x00,0xc2,0x01,0x61,0x47,0x73,0x1b,0x01,0x70,
0x20,0x18,0xcf,0x07,0x87,0x5f,0xc9,0xff,0x08,0xc7,0xff,0x08,0xc6,0xff,0x10,0xc3,
0xff,0x19,0xff,0x08,0xc1,0xff,0x00,0x07,0x4f,0xff,0xf4,0xff,0x60,0xfd,0xfc,0xf0,
0xf9,0xc2,0xfc,0x40,0x0c,0xf8,0xf8,0xfc,0xfa,0xf0,0xf8,0xfe,0xfd,0xfc,0xfe,0xf8,
0xf8,0xfc,0xd1,0xff,0x08,0xc6,0xff,0x10,0xc3,0xff,0x19,0xff,0x08,0xc1,0xff,0x00,
0x07,0x4f,0xff,0xd3,0xff,0x08,0xd2,0xff,0x09,0xff,0x09,0xff,0x09,0xff,0x00,0x09,
0x4f,0xff,0xcf,0xff
};
#endif

SSOLED ssoled; // single display structure

void setup() {
int rc;
rc = oledInit(&ssoled, OLED_TYPE, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, SDA_PIN, SCL_PIN, RESET_PIN, 400000L);
} /* setup() */

void loop() {
uint8_t *pAnim = (uint8_t *)bAnimation; // point to first frame

while (1)
{ // play all frames (automatically starts over when it reaches the end)
    pAnim = oledPlayAnimFrame(&ssoled, (uint8_t *)bAnimation, pAnim, sizeof(bAnimation));
    delay(20); // simplistic rate control; should manage the variable time per frame
}
} /* loop() */

驴友花雕 发表于 2021-9-27 11:55:39

实验场景图


驴友花雕 发表于 2021-9-27 11:57:11

实验场景图动态图


驴友花雕 发表于 2021-9-27 12:47:57

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之七:显示文字与图形
实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之七:显示文字与图形
实验接线:
oled模块    Ardunio Uno
GND---------GND接地线
VCC---------5V 接电源
SDA---------A4
SCL ------- A5
*/

#include <ss_oled.h>

// Use -1 for the Wire library default pins
// or specify the pin numbers to use with the Wire library or bit banging on any GPIO pins
// These are reversed because I did straight-through wiring for my SSD1306
// and it has the 4-pin header as GND,VCC,SCL,SDA, but the GROVE connector is
// GND,VCC,SDA,SCL
#define GROVE_SDA_PIN A4
#define GROVE_SCL_PIN A5
// Set this to -1 to disable or the GPIO pin number connected to the reset
// line of your display if it requires an external reset
#define RESET_PIN -1
// let ss_oled figure out the display address
#define OLED_ADDR -1
// don't rotate the display
#define FLIP180 0
// don't invert the display
#define INVERT 0
// Bit-Bang the I2C bus
#define USE_HW_I2C 1

// Change this if you're using different OLED displays
#define MY_OLED OLED_128x64
uint8_t ucBackBuffer;

// The SSOLED structure. Each structure is about 56 bytes
// There is no limit to the number of simultaneous displays which can be controlled by ss_oled
SSOLED ssoled;

void setup() {
char *msgs[] = {(char *)"SSD1306 @ 0x3C", (char *)"SSD1306 @ 0x3D",(char *)"SH1106 @ 0x3C",(char *)"SH1106 @ 0x3D"};
int rc;
// The I2C SDA/SCL pins set to -1 means to use the default Wire library
// If pins were specified, they would be bit-banged in software
// This isn't inferior to hw I2C and in fact allows you to go faster on certain CPUs
// The reset pin is optional and I've only seen it needed on larger OLEDs (2.4")
//    that can be configured as either SPI or I2C
//
// oledInit(SSOLED *, type, oled_addr, rotate180, invert, bWire, SDA_PIN, SCL_PIN, RESET_PIN, speed)

rc = oledInit(&ssoled, MY_OLED, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, GROVE_SDA_PIN, GROVE_SCL_PIN, RESET_PIN, 800000L); // use standard I2C bus at 400Khz
if (rc != OLED_NOT_FOUND)
{
    oledFill(&ssoled, 0, 1);
    oledWriteString(&ssoled, 0,0,0,msgs, FONT_NORMAL, 0, 1);
    delay(2000);
}
else
{
    while (1) {};
}
oledSetBackBuffer(&ssoled, ucBackBuffer);
} /* setup() */

#define DRAW_ELLIPSES
#define DRAW_RECTS

void loop() {
int i, x, y, x2, y2, r1, r2;
uint8_t ucColor;

#ifdef DRAW_ELLIPSES
oledFill(&ssoled, 0, 1);
oledWriteString(&ssoled, 0, 0, 0, (char *)"Ellipses", FONT_NORMAL, 0, 1);
delay(2000);
oledFill(&ssoled, 0, 1);
for (i=0; i<100; i++)
{
    x = random(128);
    y = random(64);
    r1 = random(64);
    r2 = random(32);
    oledEllipse(&ssoled, x, y, r1, r2, 1, 0);
    oledDumpBuffer(&ssoled, NULL);   
}
oledFill(&ssoled, 0, 1);
oledWriteString(&ssoled, 0, 0, 0, (char *)"Filled Ellipses", FONT_NORMAL, 0, 1);
delay(2000);
oledFill(&ssoled, 0, 1);
for (i=0; i<100; i++)
{
    x = random(128);
    y = random(64);
    r1 = random(64);
    r2 = random(32);
    ucColor = random(2);
    oledEllipse(&ssoled, x, y, r1, r2, ucColor, 1);
    oledDumpBuffer(&ssoled, NULL);
}
#endif // DRAW_ELLIPSES

#ifdef DRAW_RECTS
oledFill(&ssoled, 0, 1);
oledWriteString(&ssoled, 0, 0, 0, (char *)"Rectangles", FONT_NORMAL, 0, 1);
delay(2000);
oledFill(&ssoled, 0, 1);
for (i=0; i<100; i++)
{
    x = random(128);
    y = random(64);
    x2 = random(128);
    y2 = random(64);
    oledRectangle(&ssoled, x, y, x2, y2, 1, 0);
    oledDumpBuffer(&ssoled, NULL);
}
oledFill(&ssoled, 0, 1);
oledWriteString(&ssoled, 0, 0, 0, (char *)"Filled Rects", FONT_NORMAL, 0, 1);
delay(2000);
oledFill(&ssoled, 0, 1);
for (i=0; i<100; i++)
{
    x = random(128);
    y = random(64);
    x2 = random(128);
    y2 = random(64);
    ucColor = random(2);
    oledRectangle(&ssoled, x, y, x2, y2, ucColor, 1);
    oledDumpBuffer(&ssoled, NULL);
}
#endif // DRAW_RECTS

delay(4000);
} /* loop() */


驴友花雕 发表于 2021-9-27 12:49:30

实验场景图




驴友花雕 发表于 2021-9-27 13:21:08

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之八:用于 AVR 平台的小型简单 OLED 库演示,不带画线功能(节省1K RAM)

实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之八:用于 AVR 平台的小型简单 OLED 库演示,不带画线功能(节省1K RAM)
实验接线:
oled模块    Ardunio Uno
GND---------GND接地线
VCC---------5V 接电源
SDA---------A4
SCL ------- A5
*/

#include <ss_oled.h>

SSOLED ssoled;
#define SDA_PIN -1
#define SCL_PIN -1
// no reset pin needed
#define RESET_PIN -1
// let ss_oled find the address of our display
#define OLED_ADDR -1
#define FLIP180 0
#define INVERT 0
// Use the default Wire library
#define USE_HW_I2C 1

void setup(){
    int rc;
    rc = oledInit(&ssoled, OLED_128x64, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, SDA_PIN, SCL_PIN, RESET_PIN, 400000L);       // Standard HW I2C bus at 400Khz

    if (rc != OLED_NOT_FOUND)
    {
      char *msgs[] =
      {
          (char *)"SSD1306 @ 0x3C",
          (char *)"SSD1306 @ 0x3D",
          (char *)"SH1106 @ 0x3C",
          (char *)"SH1106 @ 0x3D"
      };

      oledFill(&ssoled, 0, 1);
      oledWriteString(&ssoled, 0, 0, 0, (char *)"OLED found:", FONT_NORMAL, 0, 1);
      oledWriteString(&ssoled, 0, 10, 2, msgs, FONT_NORMAL, 0, 1);
      delay(3000);
    }
}

void loop(){
    int i, x, y;

    oledFill(&ssoled, 0, 1);
    oledWriteString(&ssoled, 0, 16, 0,(char *)"ss_oled Demo", FONT_NORMAL, 0, 1);
    oledWriteString(&ssoled, 0, 0, 1,(char *)"Written by Larry Bank", FONT_SMALL, 1, 1);
    oledWriteString(&ssoled, 0, 0, 3,(char *)"**Demo**", FONT_STRETCHED, 0, 1);
    oledWriteString(&ssoled, 0, 9, 6,(char *)"for AVR", FONT_STRETCHED, 0, 1);

    delay(2000);
    oledFill(&ssoled, 0, 1);

    for (i = 0; i < 1000; i++)
    {
      x = random(128);
      y = random(64);
      oledSetPixel(&ssoled, x, y, 1, 1);
    }

    delay(2000);
}

驴友花雕 发表于 2021-9-27 13:23:58

实验场景图


驴友花雕 发表于 2021-9-27 13:30:00

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之九:五种字体换行测试

实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之九:五种字体换行测试
实验接线:
oled模块    Ardunio Uno
GND---------GND接地线
VCC---------5V 接电源
SDA---------D8
SCL ------- D9
*/

#include <ss_oled.h>

// Arduino Pro Mini
// Pin 8 (0xb0 = PORTB, bit 0)
// Pin 9 (0xb1 = PORTB, bit 1)
#define SDA_PIN 0xb0
#define SCL_PIN 0xb1
#define RESET_PIN -1
int rc;
SSOLED oled;
void setup() {
uint8_t uc;
   
rc = oledInit(&oled, OLED_128x64, 0x3c, 0, 0, 0, SDA_PIN, SCL_PIN, RESET_PIN, 1000000L);
if (rc != OLED_NOT_FOUND)
{
    oledFill(&oled, 0,1);
    oledSetContrast(&oled, 127);
    oledWriteString(&oled, 0,0,0,(char *)"**************** ", FONT_8x8, 0, 1);
    oledWriteString(&oled, 0,4,1,(char *)"BitBank SS_OLED", FONT_8x8, 0, 1);
    oledWriteString(&oled, 0,8,2,(char *)"running on the", FONT_8x8, 0, 1);
    oledWriteString(&oled, 0,8,3,(char *)"SSD1306 128x64", FONT_8x8, 0, 1);
    oledWriteString(&oled, 0,4,4,(char *)"monochrome OLED", FONT_8x8, 0, 1);
    oledWriteString(&oled, 0,24,5,(char *)"Written By", FONT_8x8, 0, 1);
    oledWriteString(&oled, 0,24,6,(char *)"Larry Bank", FONT_8x8, 0, 1);
    oledWriteString(&oled, 0,0,7,(char *)"**************** ", FONT_8x8, 0, 1);
    delay(4000);
}
}

void loop() {
int i, j;
char szTemp;

oledFill(&oled, 0,1);
oledWriteString(&oled, 0,0,0,(char *)"Now with 5 font sizes", FONT_6x8, 0, 1);
oledWriteString(&oled, 0,0,1,(char *)"6x8 8x8 16x16", FONT_8x8, 0, 1);
oledWriteString(&oled, 0,0,2,(char *)"16x32 and a new", FONT_8x8, 0, 1);
oledWriteString(&oled, 0,0,3,(char *)"Stretched", FONT_12x16, 0, 1);
oledWriteString(&oled, 0,0,5,(char *)"from 6x8", FONT_12x16, 0, 1);
delay(10000);

oledFill(&oled, 0, 1);
oledSetTextWrap(&oled, 1);
oledWriteString(&oled, 0,-1,-1,"This is a test of text wrap", FONT_6x8, 0, 1);
delay(3000);
oledFill(&oled, 0,1);
//oledSetTextWrap(0);
oledWriteString(&oled, 0,-1,-1,"This ", FONT_16x16, 0, 1);
oledWriteString(&oled, 0,-1,-1,"is a ", FONT_16x16, 0, 1);
oledWriteString(&oled, 0,-1,-1,"test of text wrap", FONT_16x16, 0, 1);
delay(3000);
oledFill(&oled, 0,1);
oledSetCursor(&oled, 40,4);
oledWriteString(&oled, 0,-1,-1,"Middle", FONT_6x8,0,1);
delay(3000);
if (rc >= OLED_SH1106_3C)          // We can set pixels on the SH1106 without a back buffer
{
    int x, y;
    for (i=0; i<2500; i++)
    {
      x = random(128);
      y = random(64);
       oledSetPixel(&oled, x, y, 1, 1);
    }
    delay(2000);
}
#ifndef __AVR__

for (i=0; i<8; i++)
{
    sprintf(szTemp, "Line %d", i);
    oledWriteString(&oled, 0,0,i,szTemp, FONT_8x8, 0, 0);
    oledWriteString(&oled, 0,64,i,szTemp, FONT_8x8, 0, 0);
} // for i
j = 0; // missing line
while (1)
{
    for (i=0; i<8; i++) // smooth scroll 8 lines
    {
//void oledScrollBuffer(int iStartCol, int iEndCol, int iStartRow, int iEndRow, int bUp);
      oledScrollBuffer(&oled, 0,63,0,7,1);
      oledScrollBuffer(&oled, 64,127,0,7,0);
      oledDumpBuffer(&oled, NULL);
//void oledDrawGFX(uint8_t *pSrc, int iSrcCol, int iSrcRow, int iDestCol, int iDestRow, int iWidth, int iHeight, int iSrcPitch);
//      oledDrawGFX(NULL, 0, 0, 0, 0, 64, 7, 0); // left half
//      oledDrawGFX(NULL, 64, 1, 64, 0, 64, 7, 0); // right half
      delay(40);
    }
    // fill in the missing line which scrolls off
    sprintf(szTemp, "Line %d", j & 7);
    oledWriteString(&oled, 0,0,7,szTemp, FONT_NORMAL, 0, 0);
    sprintf(szTemp, "Line %d", 7-(j & 7));
    oledWriteString(&oled, 0,64,0,szTemp, FONT_NORMAL, 0, 0);
    j++;
}
#else
for (i=0; i<256; i++)
{
    oledWriteString(&oled, i, 0,0,(char *)"This is a scrolling text demo showing how a long string can be displayed ", FONT_NORMAL, 0, 1);
}
#endif // __AVR__
} // loop

驴友花雕 发表于 2021-9-27 13:31:43

实验场景图


驴友花雕 发表于 2021-9-27 13:37:42

实验场景图动态图

驴友花雕 发表于 2021-9-27 13:41:54

ss_oled库的特点:
---------
支持任意数量的任意类型的同时显示(混合和匹配)
可选择检测显示地址和类型(仅限 I2C)
支持 72x40、96x16、64x32、128x32、128x64、128x128 (SH1107) 和 132x64 (SH1106) 显示尺寸
从 I2C、SPI 或任何 2 个 GPIO 引脚(虚拟 I2C)驱动显示
5 种大小的固定字体(6x8、8x8、12x16、16x16、16x32)
延迟渲染允许准备一个后台缓冲区,然后显示它(通常更快)
文本滚动功能(垂直和水平)
带有可选换行的文本光标位置
加载 Windows BMP 文件的函数
在 SH1106/7 上进行像素绘图,无需后备 RAM
优化的 Bresenham 线图
优化 Bresenham 轮廓和填充椭圆绘制
优化轮廓和填充矩形绘制
可选的后备 RAM,用于为具有足够 RAM 的系统绘制像素
以任何角度绘制 16x16 平铺/精灵图。
使用简单的 API 以高帧率运行全帧动画
轻到可以在 ATtiny85 上运行

此代码取决于 BitBang_I2C 库。你可以在这里下载:https :
//github.com/bitbank2/BitBang_I2C

使用说明:
--------------------
首先初始化库。使用硬件 I2C、位碰撞 I2C 或 SPI 与显示器对话。对于 I2C,将自动检测显示器的地址(0x3c 或 0x3d)。典型的 MCU 只允许将 I2C 速度设置为 400Khz,但 SSD1306 显示器可以处理更快的信号。使用 bit-bang 代码,您通常可以指定稳定的 800Khz 时钟,并且使用 Cortex-M0 目标,可以告诉硬件 I2C 几乎是任何速度,但我测试过的显示器往往会在超过 1.6Mhz 时停止工作。初始化显示器后,您可以开始在其上绘制文本或图形。所有绘图函数的最后一个参数是渲染标志。当为真时,图形将被发送到内部后备缓冲区(如果可用)并发送到显示器。您可以选择使用 oledSetBackBuffer() 函数向库传递一个后备缓冲区(如果您的 MCU 有足够的 RAM)。当渲染标志为假时,图形只会被绘制到内部缓冲区中。一旦您准备好将像素发送到显示器,请调用 oledDumpBuffer(NULL),它将整个内部缓冲区复制到显示器。文本绘制功能现在有一个滚动偏移参数。这告诉它在给定的目标坐标处绘制文本之前要跳过多少文本像素。例如,如果为滚动偏移传递值 20 并使用 8 像素宽字体 (FONT_NORMAL),则不会绘制前两个半字符;第三个和后续字符的后半部分将从您指定的 x/y 开始绘制。

驴友花雕 发表于 2021-9-27 16:54:01

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目之十:循环自动计数

实验开源仿真编程(Linkboy V4.62)



驴友花雕 发表于 2021-9-27 16:56:32

实验场景图


驴友花雕 发表于 2021-9-27 17:13:56

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目十一:屏幕显示自动计数的小数

实验开源仿真编程(Linkboy V4.62)



驴友花雕 发表于 2021-9-27 17:15:54

实验场景图


驴友花雕 发表于 2021-9-27 17:38:41

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十一:1.3寸OLED液晶屏 I2C IIC通信 4针模块 1106/1306驱动 132*64像素
项目十二:显示各种字体

实验开源仿真编程(Linkboy V4.62)



驴友花雕 发表于 2021-9-27 17:43:20

实验场景图


页: 1 [2] 3
查看完整版本: 【Arduino】168种传感器系列实验(181)---1.3寸OLED液晶屏模块