#include <Arduino.h>
#include <U8g2lib.h> //graphics library
#include <Wire.h> 



/*
 
  Set your screen info below depending on your screen type https://github.com/olikraus/u8g2/wiki/u8g2setupcpp

*/
   
//U8G2_SSD1327_WS_128X128_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SSD1327_WS_128X128_F_SW_I2C u8g2(U8G2_R0,SCL,SDA, /* reset=*/ U8X8_PIN_NONE);

U8G2_SH1107_128X128_1_HW_I2C u8g2(U8G2_R0); 

#define U8LOG_WIDTH 32
#define U8LOG_HEIGHT 4
uint8_t u8log_buffer[U8LOG_WIDTH*U8LOG_HEIGHT*2];
U8G2LOG u8g2log;

//int center_x = 64; // display x center, 64px for the 128x128px display
//int center_y = 64; // display y center, 64px for the 128x128px display

int xlon;
int ylat;

int xlonb;
int ylatb;

int gpschar;

// XBM file for World Map Image. Map must be equirectalinear projection.

#define world_width 128
#define world_height 62
static unsigned char world_bits[] = {
  0x00, 0x00, 0x00, 0x00, 0xF0, 0x81, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x07, 
  0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 
  0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x01, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0xF0, 0xFB, 0x0F, 0xF9, 0xFF, 0x01, 0x00, 0x00, 0x78, 0x80, 
  0xFF, 0x01, 0x07, 0x00, 0x00, 0x00, 0xF8, 0xF7, 0x3F, 0xF0, 0xFF, 0x00, 
  0x00, 0x00, 0x0C, 0xFB, 0xFF, 0x3F, 0x1E, 0x00, 0xC0, 0x7F, 0xDF, 0xEF, 
  0xFF, 0xE0, 0xFF, 0x00, 0xC0, 0x0F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xE7, 0xFF, 0xFF, 0xFF, 0xE7, 0xF3, 0x0F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xE7, 0xC3, 0x03, 0x06, 
  0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0x7F, 
  0xF0, 0x81, 0x01, 0x00, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 
  0xC0, 0x83, 0xFF, 0x7F, 0xF0, 0x03, 0x00, 0x40, 0x7C, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0x7F, 0x03, 0x80, 0x00, 0xFF, 0xFF, 0xE7, 0x07, 0x00, 0x40, 
  0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x03, 0x00, 0x00, 0xFE, 0xFF, 
  0xF7, 0x1F, 0x00, 0xE0, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x01, 
  0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x17, 0x00, 0xC0, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 
  0xFF, 0x02, 0x00, 0xA0, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 
  0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0xE0, 0xF9, 0xF7, 0xFD, 0xFF, 
  0xFF, 0x7F, 0x04, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x3F, 0x00, 0x00, 0xE0, 
  0x6D, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 
  0x1F, 0x00, 0x00, 0xE0, 0x0F, 0xF8, 0xFF, 0xFF, 0xFF, 0xE7, 0x03, 0x00, 
  0x00, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0x9F, 0xEA, 0xFF, 0xFF, 
  0xFF, 0x67, 0x01, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x0D, 0x00, 0x00, 0xF0, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBF, 
  0x0C, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x3D, 0x08, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x3F, 0xFF, 
  0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x11, 0x00, 0x00, 0xFC, 
  0xFF, 0xFF, 0x3F, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 
  0x61, 0x00, 0x00, 0xFC, 0xFF, 0xDF, 0x0F, 0x3E, 0x3E, 0x08, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x03, 0x1C, 
  0x7C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xFC, 
  0xFF, 0xFF, 0x01, 0x1C, 0x78, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0xE6, 0x03, 0x00, 0xFC, 0xFF, 0xFF, 0x07, 0x08, 0x68, 0x18, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0xF8, 0xFF, 0xFF, 0x03, 0x10, 
  0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0xE0, 
  0xFC, 0xFF, 0x01, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0xF0, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0x98, 0x03, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 
  0x98, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, 
  0xF0, 0x7F, 0x00, 0x00, 0xB0, 0xCF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0xF8, 0xFF, 0x0F, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x07, 0x00, 0xE0, 0x3F, 0x00, 0x00, 
  0x00, 0x14, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x07, 0x00, 
  0xE0, 0x3F, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0xE0, 0xFF, 0x07, 0x00, 0xF0, 0x7F, 0x03, 0x00, 0x00, 0xE0, 0x0C, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0xF0, 0xBF, 0x03, 0x00, 
  0x00, 0xF8, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, 0x00, 
  0xF0, 0x1F, 0x01, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x80, 0xFF, 0x01, 0x00, 0xE0, 0x9F, 0x01, 0x00, 0x00, 0xFF, 0x3F, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0xE0, 0x0F, 0x00, 0x00, 
  0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0x00, 
  0xE0, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0xC0, 0x7F, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x00, 0xFE, 0x3F, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 
  0x00, 0x0E, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 
  0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 
  0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 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, 0x08, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xFF, 0xD1, 0x03, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xF9, 
  0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0xC0, 0x07, 0x00, 0xF0, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xFF, 0xF9, 
  0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 
  0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0x03, 0x40, 0xFE, 0xFF, 0xFF, 0xBF, 0xC4, 0xF8, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 
  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, };



void setup(void) {

  //Serial1.begin(115200);
  //Serial.begin(9600); //uncomment to debug the GPS
  u8g2.begin();  
  u8g2log.begin(U8LOG_WIDTH, U8LOG_HEIGHT, u8log_buffer);
  u8g2log.setLineHeightOffset(1); // set extra space between lines in pixels, this can be negative
  u8g2log.setRedrawMode(1);   // 0: Update screen with newline, 1: Update screen for every char 

 
}

void loop(void) {
  
  
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_u8glib_4_tr);
    
    u8g2.drawXBMP(0,0, world_width, world_height, world_bits); //draw World Map
    u8g2.drawFrame(0,0,128,63);   //setup fixed screen info and borders

    u8g2.drawFrame(0, 64, 128,64);  
    u8g2.drawLine(0, 73, 128,73);
    u8g2.drawLine(0, 91, 128,91);
    u8g2.drawStr(2, 71, "MINI MISSION CONTROL ");
    
    u8g2.drawLine(0, 118, 128,118);
    u8g2.drawStr(2, 125, "OKUBO HEAVY INDUSTRIES");

    

          u8g2.drawLog(3, 98, u8g2log);     // draw the log content on the display
          
          
    
    
    
  } while ( u8g2.nextPage() );
  
}

Loading
grove-oled-sh1107