Hello, I am completely new to the world of arduino.
I uploaded a pre-programmed sketch to my arduino.
The problem is that my display only turns on after I press the reset button.
I would like the display to turn on when I supply power to my arduino.
I have read that I can add a delay for the display but I don't know where to put it, could someone help me with this?
Thank you very much in advance!
there are three sketches..
Main sketch: a_BBCounter_2024_03_23
second sketch: b_Displays
third sketch: c_RotaryEncoder
Main:
// Program made/put together by
// Marcus Svensson aka Fishy
// https://www.printables.com/@Fishy_377550
// https://cults3d.com/en/users/FishyAirsoftCreations
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Versatile_RotaryEncoder.h>
//Screen Stuff
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
// The pins for I2C are defined by the Wire-library.
// On an arduino UNO: A4(SDA), A5(SCL)
// On an arduino MEGA 2560: 20(SDA), 21(SCL)
// On an arduino LEONARDO: 2(SDA), 3(SCL), ...
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//Rotary encoder -------------------------------------------------------------------
// Set here your encoder reading pins (Ex.: EC11 with breakout board)
#define clk 4 // (d4)
#define dt 3 // (d3)
#define sw 5 // (d5)
// Functions prototyping to be handled on each Encoder Event
void handleRotate(int8_t rotation);
void handlePressRotate(int8_t rotation);
void handleHeldRotate(int8_t rotation);
void handlePress();
void handlePressRelease();
void handleLongPress();
void handleLongPressRelease();
void handlePressRotateRelease();
void handleHeldRotateRelease();
// Create a global pointer for the encoder object
Versatile_RotaryEncoder *versatile_encoder;
//----------------------------------------------------------------------------------
//data för programmet
char *myPresets[] = {"Free Mode",
"Custom:",
"Preset:120",
"Preset:60",
"Preset:250",
"Preset:29",
"Preset:420",
"Preset:30",
"Preset:100",
"Preset:200",
"----------"
};
int MaxPresetRows=9;
int CurrentTextScroll = 0;
int CustomBBQuantity = 1;
int CurrentCount = -2;
int BBTarget = 0;
int myPresetsValue[] = {-1,
CustomBBQuantity,
120,
60,
250,
29,
420,
30,
100,
200
};
bool currentlyLoading = false;
unsigned long passedTimeSinceLastCountedBB = 0; //Will check the time of millis when a BB is counted
unsigned long passedTimeForReset = 2000; //Max allowed time before reset of screen, in millis. (1000 = 1s)
int pushButton = 6; // (d6) pushbutton
int motorOn = 7; // (d7) relay to motor
//--------------------------------------------------------------------------------
//Photomicrosensor -------------------------------------
const int PhotoIn = 2; //input pin for Photomicrosensor
int sensorState = 0; // current state of the button //a variable to read the sensor state
int lastSensorState = 0; // previous state of the button
//------------------------------------------------------
//OLED stuff -----------------------------------------
#define LOGO_HEIGHT 16
#define LOGO_WIDTH 16
static const unsigned char PROGMEM logo_bmp[] =
{ 0b00000000, 0b11000000,
0b00000001, 0b11000000,
0b00000001, 0b11000000,
0b00000011, 0b11100000,
0b11110011, 0b11100000,
0b11111110, 0b11111000,
0b01111110, 0b11111111,
0b00110011, 0b10011111,
0b00011111, 0b11111100,
0b00001101, 0b01110000,
0b00011011, 0b10100000,
0b00111111, 0b11100000,
0b00111111, 0b11110000,
0b01111100, 0b11110000,
0b01110000, 0b01110000,
0b00000000, 0b00110000 };
#define Bullet_hole_HEIGHT 4
#define Bullet_hole_WIDTH 4
// 'Bullet_hole', 4x4px
const unsigned char Bullet_hole [] PROGMEM = {
0x60, 0xf0, 0xf0, 0x60
};
//------------------------------------------------
void setup() {
Serial.begin(9600);
Serial.println("Starting up");
pinMode(PhotoIn, INPUT); //set pin 2 as input
pinMode(pushButton,INPUT_PULLUP); // sets the digital pin 6 to input button
pinMode(motorOn, OUTPUT);
//Rotary encoder -------------------------------------------------------------------
versatile_encoder = new Versatile_RotaryEncoder(clk, dt, sw);
// Load to the encoder all nedded handle functions here (up to 9 functions)
versatile_encoder->setHandleRotate(handleRotate);
versatile_encoder->setHandlePressRotate(handlePressRotate);
versatile_encoder->setHandleHeldRotate(handleHeldRotate);
versatile_encoder->setHandlePress(handlePress);
versatile_encoder->setHandlePressRelease(handlePressRelease);
versatile_encoder->setHandleLongPress(handleLongPress);
versatile_encoder->setHandleLongPressRelease(handleLongPressRelease);
versatile_encoder->setHandlePressRotateRelease(handlePressRotateRelease);
versatile_encoder->setHandleHeldRotateRelease(handleHeldRotateRelease);
// set your own defualt values (optional)
// versatile_encoder->setInvertedSwitch(true); // inverts the switch behaviour from HIGH to LOW to LOW to HIGH
// versatile_encoder->setReadIntervalDuration(1); // set 2ms as long press duration (default is 1ms)
// versatile_encoder->setShortPressDuration(35); // set 35ms as short press duration (default is 50ms)
// versatile_encoder->setLongPressDuration(550); // set 550ms as long press duration (default is 1000ms)
//----------------------------------------------------------------------------------
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
drawNameTag();
//drawFishyTear();
// Clear the buffer
display.clearDisplay();
//AnimationTest(Bullet_hole, Bullet_hole_WIDTH, Bullet_hole_HEIGHT);
Serial.println("Starting up done");
UpdateDisplay();
}
void loop() {
// Do the encoder reading and processing
if(currentlyLoading==false){
if (versatile_encoder->ReadEncoder()) {
// Do something here whenever an encoder action is read
}
}
//2023-10-25 behövde något extra på vanlig uno. vetefan varför
//Hitta även små buggar jag kunde fixa.
if (digitalRead(pushButton)==LOW){
Serial.println("Yep, den trycks ner");
Serial.println(currentlyLoading);
Serial.println(CurrentCount);
Serial.println(BBTarget);
if (currentlyLoading==true){
currentlyLoading=false;
}
// if (CurrentCount == BBTarget){
// CurrentCount=-2;
// }
}
//----------------------------------------------------------
//Load
if (digitalRead(pushButton)==LOW && (CurrentCount != BBTarget) && currentlyLoading==false){
//check selection and set target
if (CustomBBQuantity == 0){
CustomBBQuantity=1;
}
myPresetsValue[1]=CustomBBQuantity;
BBTarget=myPresetsValue[CurrentTextScroll];
Serial.print("Target is set to: ");
Serial.println(BBTarget);
//
//start loading
if (CurrentCount<0){
CurrentCount=0;
}
currentlyLoading=true;
while (digitalRead(pushButton)==LOW && (CurrentCount != BBTarget) && (BBTarget != 0)){
//Serial.println("being pressed: ");
digitalWrite(motorOn, HIGH);
// read the photo sensor input pin: ---------------------------------------------------
sensorState = digitalRead(PhotoIn);
// compare the sensorState to its previous state
if (sensorState != lastSensorState) {
// if the state has changed, increment the counter
if (sensorState == HIGH) {
CurrentCount++;
Serial.println("High");
Serial.print("BB counted: ");
Serial.println(CurrentCount);
passedTimeSinceLastCountedBB = millis();
//Update Screen
NumberScreen();
} else {
Serial.println("LOW");
}
}
// save the current state as the last state, for next time through the loop
lastSensorState = sensorState;
//--------------------------------------------------------------------------------------
}
digitalWrite(motorOn, LOW);
Serial.println("Turned off motor");
}else if (digitalRead(pushButton)==HIGH && currentlyLoading==true){
currentlyLoading=false;
}
if (digitalRead(pushButton)==HIGH && currentlyLoading==false && CurrentCount>0 && ((millis() - passedTimeSinceLastCountedBB) >= passedTimeForReset)){
//Reset
Serial.println("Reseting");
CurrentCount=-2;
UpdateDisplay();
}
}
void UpdateDisplay(){
ChoiceScreen();
}
second sketch: b_Displays
#define FULL_HEIGHT 32
#define FULL_WIDTH 128
// 'ft6_display', 128x32px
const unsigned char ft6_display [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xde, 0xdd, 0x86, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xde, 0xdd, 0x8e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, 0x1c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, 0x1c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdc, 0x1c, 0x1e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdc, 0x1c, 0x1c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, 0x1c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, 0x1c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, 0x1c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, 0x1c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, 0x0e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x1c, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x79, 0x00, 0x80, 0x01, 0xc0, 0xf3, 0xe7, 0x00,
0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x40, 0x00, 0x80, 0x02, 0x40, 0x80, 0x88, 0x80,
0x00, 0x44, 0xc9, 0x23, 0x19, 0x87, 0x07, 0x44, 0x41, 0x1c, 0xe4, 0x41, 0x80, 0x80, 0x8f, 0x00,
0x00, 0x79, 0x2a, 0xa4, 0x92, 0x49, 0x04, 0xa8, 0x71, 0x20, 0x92, 0x83, 0x00, 0xe0, 0x88, 0x80,
0x00, 0x41, 0x2a, 0xa7, 0x93, 0xc9, 0x04, 0xa8, 0x41, 0x18, 0x92, 0x84, 0xb0, 0x80, 0x88, 0x80,
0x00, 0x41, 0x2a, 0xa4, 0x12, 0x09, 0x04, 0xa8, 0x41, 0x04, 0x92, 0x84, 0x60, 0x80, 0x88, 0x80,
0x00, 0x40, 0xc4, 0x43, 0x91, 0xc7, 0x07, 0x10, 0x41, 0x38, 0x91, 0x03, 0xb0, 0x80, 0x87, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'S_Target', 128x32px
const unsigned char S_Target [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x60, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x8f, 0xc6, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x70, 0x39, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x8f, 0xc4, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x30, 0x32, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xcf, 0xcd, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0xb0, 0x36, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa9, 0x67, 0x9a, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xdf, 0xed, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4a, 0xbf, 0xf5, 0x4b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x38, 0x72, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x73, 0x3a, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x77, 0xba, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x77, 0xba, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x73, 0x3a, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x38, 0x72, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4a, 0xbf, 0xf5, 0x4b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xdf, 0xed, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa9, 0x67, 0x9a, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0xb0, 0x36, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xcf, 0xcd, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x30, 0x32, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x8f, 0xc4, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x70, 0x39, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x8f, 0xc6, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x60, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'Fishy tear Normal', 128x32px
const unsigned char epd_bitmap_Fishy_tear_Normal [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x38, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x38, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x38, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0x03, 0xf8, 0xc1, 0xf8, 0xff, 0x8f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xfc, 0x00, 0xf8, 0x80, 0xfc, 0x7f, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xfc, 0x00, 0xf8, 0x00, 0xfc, 0x7f, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x78, 0xf8, 0x7e, 0xf8, 0x38, 0x7c, 0x3f, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x78, 0xf8, 0xff, 0xf8, 0xfc, 0x7e, 0x3e, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x78, 0xf8, 0xff, 0xf8, 0xfc, 0x7e, 0x3e, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xf8, 0x3f, 0xf8, 0xfc, 0x7f, 0x1c, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xfc, 0x03, 0xf8, 0xfc, 0x7f, 0x1c, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0x00, 0xf8, 0xfc, 0x7f, 0x1c, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xf0, 0x78, 0xfc, 0x7f, 0x88, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xfc, 0x78, 0xfc, 0x7f, 0x88, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xfc, 0x78, 0xfc, 0x7f, 0xc9, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xf9, 0xf8, 0x78, 0xfc, 0x7f, 0xc1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xf8, 0x00, 0xf8, 0xfc, 0x7f, 0xc3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xf8, 0x01, 0xf8, 0xfc, 0x7f, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0xfe, 0x03, 0xf8, 0xfc, 0x7f, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'Fishy tear Big small', 128x32px
const unsigned char epd_bitmap_Fishy_tear_Big_small [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0x71, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0x71, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0x71, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7f, 0x81, 0xfc, 0x60, 0xfc, 0x7f, 0xc7, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xf8, 0x01, 0xf1, 0x01, 0xf8, 0xfe, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xf8, 0x01, 0xf0, 0x01, 0xf8, 0xfe, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0xf1, 0xf0, 0xfd, 0xf0, 0x70, 0xf8, 0x7e, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0xf1, 0xf1, 0xff, 0xf1, 0xf8, 0xfc, 0x7c, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0x00, 0x3c, 0x7c, 0x7f, 0xfc, 0x7e, 0x3f, 0x1f, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7c, 0x1f, 0xfc, 0x7e, 0x3f, 0x8e, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7e, 0x01, 0xfc, 0x7e, 0x3f, 0x8e, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7f, 0x80, 0x7c, 0x7e, 0x3f, 0x8e, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xff, 0xe0, 0xf1, 0xf8, 0xff, 0x11, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xff, 0xf8, 0xf1, 0xf8, 0xff, 0x11, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xff, 0xf8, 0xf1, 0xf8, 0xff, 0x93, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xf3, 0xf0, 0xf1, 0xf8, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7c, 0x00, 0x7c, 0x7e, 0x3f, 0xe1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7c, 0x00, 0xfc, 0x7e, 0x3f, 0xf1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7f, 0x01, 0xfc, 0x7e, 0x3f, 0xf1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'Fishy tear small', 128x32px
const unsigned char epd_bitmap_Fishy_tear_small [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0x71, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0x00, 0x1c, 0x7f, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0x71, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xfe, 0x07, 0xf1, 0x83, 0xf1, 0xff, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7e, 0x00, 0x7c, 0x40, 0x7e, 0x3f, 0x8f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xf8, 0x01, 0xf0, 0x01, 0xf8, 0xfe, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0x00, 0x3c, 0x7c, 0x3f, 0x7c, 0x1c, 0x3e, 0x1f, 0x8f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe0, 0x00, 0xf1, 0xf1, 0xff, 0xf1, 0xf8, 0xfc, 0x7c, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0x00, 0x3c, 0x7c, 0x7f, 0xfc, 0x7e, 0x3f, 0x1f, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xf0, 0x7f, 0xf1, 0xf8, 0xfe, 0x38, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7e, 0x01, 0xfc, 0x7e, 0x3f, 0x8e, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xfe, 0x01, 0xf1, 0xf8, 0xfe, 0x38, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7f, 0xf8, 0x3c, 0x7e, 0x3f, 0xc4, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xff, 0xf8, 0xf1, 0xf8, 0xff, 0x11, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7f, 0xfe, 0x3c, 0x7e, 0x3f, 0xe4, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xf3, 0xf0, 0xf1, 0xf8, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7c, 0x00, 0x7c, 0x7e, 0x3f, 0xe1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xf0, 0x03, 0xf1, 0xf8, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf8, 0xff, 0xfc, 0x7f, 0x01, 0xfc, 0x7e, 0x3f, 0xf1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'Fishy tear Big', 128x32px
const unsigned char epd_bitmap_Fishy_tear_Big [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3f, 0xc0, 0xfe, 0x30, 0x7e, 0x3f, 0xe3, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0xf0, 0x03, 0xe2, 0x03, 0xf1, 0xfc, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0xf0, 0x03, 0xe0, 0x03, 0xf1, 0xfc, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x01, 0xe3, 0xe1, 0xfb, 0xe0, 0xe1, 0xf0, 0xfc, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x01, 0xe3, 0xe3, 0xff, 0xe3, 0xf1, 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x00, 0x1e, 0x3e, 0x3f, 0xfe, 0x3f, 0x1f, 0x8f, 0x8f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3e, 0x0f, 0xfe, 0x3f, 0x1f, 0xc7, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3f, 0x00, 0xfe, 0x3f, 0x1f, 0xc7, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3f, 0xc0, 0x3e, 0x3f, 0x1f, 0xc7, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0xff, 0xc1, 0xe3, 0xf1, 0xfe, 0x23, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0xff, 0xf1, 0xe3, 0xf1, 0xfe, 0x23, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0xff, 0xf1, 0xe3, 0xf1, 0xff, 0x27, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0xe7, 0xe1, 0xe3, 0xf1, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3e, 0x00, 0x3e, 0x3f, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3e, 0x00, 0x7e, 0x3f, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3f, 0x80, 0xfe, 0x3f, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'Fishy tear Big Bigger', 128x32px
const unsigned char epd_bitmap_Fishy_tear_Big_Bigger [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x03, 0x8f, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x00, 0xe3, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3f, 0xc0, 0xfe, 0x30, 0x7e, 0x3f, 0xe3, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0x80, 0x1f, 0xe2, 0x03, 0xf1, 0xfc, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfe, 0x3f, 0xff, 0xe3, 0xf0, 0x03, 0xe0, 0x03, 0xf1, 0xfc, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfe, 0x00, 0x0f, 0xe3, 0xe1, 0xfb, 0xe0, 0xe1, 0xf0, 0xfc, 0x7f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x01, 0xe3, 0xe3, 0xff, 0xe3, 0xf1, 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x00, 0x1e, 0x3e, 0x3f, 0xfe, 0x3f, 0x1f, 0x8f, 0x8f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3e, 0x0f, 0xfe, 0x3f, 0x1f, 0xc7, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe3, 0xff, 0xf1, 0xff, 0x00, 0xff, 0xc7, 0xe3, 0xf8, 0xe3, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3f, 0xc0, 0x3e, 0x3f, 0x1f, 0xc7, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0xff, 0xc1, 0xe3, 0xf1, 0xfe, 0x23, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfe, 0x3f, 0xff, 0x1f, 0xff, 0x8f, 0x8f, 0xc7, 0xf8, 0x8f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfe, 0x3f, 0xff, 0x1f, 0xff, 0x8f, 0x8f, 0xc7, 0xfc, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0xe7, 0xe1, 0xe3, 0xf1, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x3e, 0x00, 0x3e, 0x3f, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0x8f, 0xc0, 0x1f, 0x8f, 0xc7, 0xfe, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0x8f, 0xf8, 0x0f, 0xe3, 0xf1, 0xff, 0x8f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 2112)
const int epd_bitmap_allArray_LEN = 5;
const unsigned char* epd_bitmap_allArray[5] = {
epd_bitmap_Fishy_tear_Big,
epd_bitmap_Fishy_tear_Big_small,
epd_bitmap_Fishy_tear_Normal,
epd_bitmap_Fishy_tear_small,
epd_bitmap_Fishy_tear_Big_Bigger
};
void drawFishyTear(void) {
//Fishy intro test
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Normal, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(1000);
for (int i = 0; i <= 1; i++) {
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_small, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Normal, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
}
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(100);
for (int i = 0; i <= 2; i++) {
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big_small, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big_Bigger, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
}
for (int i = 0; i <= 1; i++) {
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big_Bigger, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
}
for (int i = 0; i <= 1; i++) {
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big_small, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
}
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Normal, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(1000);
for (int i = 0; i <= 1; i++) {
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_small, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Normal, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Big_Bigger, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Normal, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(10);
}
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
epd_bitmap_Fishy_tear_Normal, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(500);
}
void testNormaltext(void) {
String myStr;
myStr= String(CustomBBQuantity);
display.clearDisplay();
//Visa första raden
display.setTextSize(2); // Draw 2X-scale text
display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); // Draw 'inverse' text);
display.setCursor(0, 0);
display.println(F(" "));
display.setCursor(4, 0);
//Ifall det är custom raden ska den visa custom valet
if (CurrentTextScroll==1){
display.print((myPresets[1]));
display.println(myStr);
}
else{
display.println((myPresets[CurrentTextScroll]));
}
//Visa andra raden
display.setTextColor(SSD1306_WHITE);
display.setCursor(4, 16);
//Ifall det är custom raden ska den visa custom valet
if (CurrentTextScroll==0){
display.print((myPresets[1]));
display.println(myStr);
}
else{
display.println((myPresets[CurrentTextScroll+1]));
}
display.display(); // Show initial text
// !%! Ta bort sen
delay(2000);
//För Test, scrolla igenom listan
if (CurrentTextScroll<MaxPresetRows) {
CurrentTextScroll++;
}
}
void ChoiceScreen(void) {
String myStr;
myStr= String(CustomBBQuantity);
display.clearDisplay();
//Visa första raden
display.setTextSize(2); // Draw 2X-scale text
display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); // Draw 'inverse' text);
display.setCursor(0, 0);
display.println(F(" "));
display.setCursor(4, 0);
//Ifall det är custom raden ska den visa custom valet
if (CurrentTextScroll==1){
display.print((myPresets[1]));
display.println(myStr);
}
else{
display.println((myPresets[CurrentTextScroll]));
}
//Visa andra raden
display.setTextColor(SSD1306_WHITE);
display.setCursor(4, 16);
//Ifall det är custom raden ska den visa custom valet
if (CurrentTextScroll==0){
display.print((myPresets[1]));
display.println(myStr);
}
else{
display.println((myPresets[CurrentTextScroll+1]));
}
display.display(); // Show initial text
Serial.print("Display updated, currently on row: ");
Serial.println(CurrentTextScroll);
}
void NumberScreenTEST(void) {
String myStr;
myStr= String(CurrentCount);
display.clearDisplay();
//Visa första raden
display.setTextSize(4); // Draw 4X-scale text
display.setTextColor(SSD1306_WHITE); // Draw WHITE text);
display.setCursor(0, 0);
display.println(myStr);
display.display(); // Show initial text
CurrentCount--;
}
void NumberScreen(void) {
//Update screen with current value
String myStr;
if (BBTarget==-1){
myStr= String(CurrentCount);
}else{
myStr= String(BBTarget-CurrentCount);
}
display.clearDisplay();
//Visa första raden
display.setTextSize(4); // Draw 4X-scale text
display.setTextColor(SSD1306_WHITE); // Draw WHITE text);
display.setCursor(0, 0);
display.println(myStr);
display.display(); // Show initial text
}
void DotTestScreen(const uint8_t *bitmap, uint8_t w, uint8_t h) {
display.clearDisplay();
//display.invertDisplay(true);
// Width coordinate, Height coordinate, bitmap, width of bitmap, height of bitmap, color
display.drawBitmap(10, 10, bitmap, w, h, SSD1306_WHITE);
display.drawBitmap(0, 0, bitmap, w, h, SSD1306_WHITE);
display.drawBitmap(50, 10, bitmap, w, h, SSD1306_WHITE);
display.drawBitmap(100, 10, bitmap, w, h, SSD1306_WHITE);
display.display(); // Show initial text
}
void AnimationTest(const uint8_t *bitmap, uint8_t w, uint8_t h) {
display.clearDisplay();
display.drawBitmap(
(display.width() - FULL_WIDTH ) / 2,
(display.height() - FULL_HEIGHT) / 2,
S_Target, FULL_WIDTH, FULL_HEIGHT, 1);
display.display();
delay(500);
//Bullet holes on target
// Width coordinate, Height coordinate, bitmap, width of bitmap, height of bitmap, color
display.drawBitmap(48, 27, bitmap, w, h, SSD1306_BLACK);
display.display();
delay(500);
display.drawBitmap(55, 5, bitmap, w, h, SSD1306_BLACK);
display.display();
delay(200);
display.drawBitmap(60, 23, bitmap, w, h, SSD1306_BLACK);
display.display();
delay(200);
display.drawBitmap(67, 12, bitmap, w, h, SSD1306_BLACK);
display.display();
delay(300);
display.drawBitmap(57, 17, bitmap, w, h, SSD1306_BLACK);
display.display();
delay(500);
display.drawBitmap(61, 14, bitmap, w, h, SSD1306_BLACK);
display.display();
delay(500);
display.invertDisplay(true);
delay(500);
display.clearDisplay();
//Fishy
int WantedHoles=49;
int myYCor[49] = {25, 29, 33, 37, 25, 25, 25, 25, 25, 29, 33, 43, 43, 43, 50, 53, 57, 60, 60, 57, 53, 50, 52, 56, 59, 67, 67, 67, 67, 67, 67, 79, 79, 79, 79, 79, 79, 71, 75, 87, 90, 93, 93, 93, 93, 93, 96, 99, 43};
int myXCor[49] = { 4, 4, 4, 4, 8, 12, 16, 20, 24, 12, 12, 24, 20, 16, 21, 24, 24, 21, 17, 14, 13, 10, 6, 5, 8, 4, 8, 12, 16, 20, 24, 4, 8, 12, 16, 20, 24, 14, 14, 4, 7, 10, 14, 18, 22, 23, 7, 4, 8};
for (int i = 0; i <= WantedHoles; i++) {
// Width coordinate, Height coordinate, bitmap, width of bitmap, height of bitmap, color
if (i==48){
delay(500);
}
display.drawBitmap(myYCor[i], myXCor[i], bitmap, w, h, SSD1306_WHITE);
display.display();
delay(100);
}
delay(5000);
display.invertDisplay(false);
display.display(); // Show initial text
}
void drawNameTag(void) {
display.clearDisplay();
display.setTextSize(4); // size of text
display.setTextColor(SSD1306_WHITE);
display.println(F("Name")); //Nametag
display.display();
delay(4000);
c_RotaryEncoder
// Implement your functions here accordingly to your needs
void handleRotate(int8_t rotation) {
Serial.print("#1 Rotated: ");
if (rotation > 0){
Serial.println("Right");
if (CurrentTextScroll<MaxPresetRows) {
CurrentTextScroll++;
ChoiceScreen();
}
}else{
Serial.println("Left");
if (CurrentTextScroll>0) {
CurrentTextScroll--;
ChoiceScreen();
}
}
}
void handlePressRotate(int8_t rotation) {
Serial.print("#2 Pressed and rotated: ");
if (rotation > 0){
Serial.println("Right");
if (CurrentTextScroll==1 && CustomBBQuantity<999){
CustomBBQuantity=CustomBBQuantity+10;
if (CustomBBQuantity>999){
CustomBBQuantity=999;
}
ChoiceScreen();
}
}else{
Serial.println("Left");
if (CurrentTextScroll==1 && CustomBBQuantity>0){
CustomBBQuantity=CustomBBQuantity-10;
if (CustomBBQuantity<0){
CustomBBQuantity=0;
}
ChoiceScreen();
}
}
}
void handleHeldRotate(int8_t rotation) {
Serial.print("#3 Held and rotated: ");
if (rotation > 0){
Serial.println("Right");
if (CurrentTextScroll==1 && CustomBBQuantity<999){
CustomBBQuantity++;
ChoiceScreen();
}
}else{
Serial.println("Left");
if (CurrentTextScroll==1 && CustomBBQuantity>0){
CustomBBQuantity--;
ChoiceScreen();
}
}
}
void handlePress() {
Serial.println("#4 Pressed");
}
void handlePressRelease() {
Serial.println("#5 Press released");
}
void handleLongPress() {
Serial.println("#6 Long pressed");
}
void handleLongPressRelease() {
Serial.println("#7 Long press released");
if (CurrentTextScroll==1 && CustomBBQuantity>0){
CustomBBQuantity=0;
ChoiceScreen();
}
}
void handlePressRotateRelease() {
Serial.println("#8 Press rotate released");
}
void handleHeldRotateRelease() {
Serial.println("#9 Held rotate released");
}