Vision master E213 can not work e ink display with wi-fi togther

I have a Vision Master E213 that keeps restarting when I run code that includes both Wi-Fi and the “HT_lCMEN2R13EFC1.h” (e ink display) library. Sometimes it restarts after 5 seconds, other times after 10 seconds, so the timing is not fixed.

I tested running the e-ink display code without Wi-Fi, and it worked fine. I also tested Wi-Fi alone, and it worked without any issues.

Something weird is happening when these two are combined, causing the issue.

this the code i used
wi fi + e ink display

#include "HT_lCMEN2R13EFC1.h"

#include "images.h"

// Initialize the display

HT_ICMEN2R13EFC1 display(3, 2, 5, 1, 4, 6, -1, 6000000); // rst,dc,cs,busy,sck,mosi,miso,frequency

typedef void (*Demo)(void);

/* screen rotation

 * ANGLE_0_DEGREE

 * ANGLE_90_DEGREE

 * ANGLE_180_DEGREE

 * ANGLE_270_DEGREE

 */

#define DIRECTION ANGLE_0_DEGREE

int width, height;

int demoMode = 0;

void setup()

{

  Serial.begin(115200);

  if (DIRECTION == ANGLE_0_DEGREE || DIRECTION == ANGLE_180_DEGREE)

  {

    width = display._width;

    height = display._height;

  }

  else

  {

    width = display._height;

    height = display._width;

  }

  VextON();

  delay(100);

  // Initialising the UI will init the display too.

  display.init();

  display.screenRotate(DIRECTION);

  display.setFont(ArialMT_Plain_10);

}

void drawFontFaceDemo()

{

  // Font Demo1

  // create more fonts at http://oleddisplay.squix.ch/

  display.clear();

  display.setTextAlignment(TEXT_ALIGN_LEFT);

  display.setFont(ArialMT_Plain_10);

  display.drawString(0, 0, "Hello world");

  display.setFont(ArialMT_Plain_24);

  display.drawString(0, 26, "Hello world");

  //    display.update(BLACK_BUFFER);

  display.setFont(ArialMT_Plain_16);

  display.drawString(0, 10, "Hello world");

  display.update(BLACK_BUFFER);

  display.display();

}

void drawTextFlowDemo()

{

  display.clear();

  display.setFont(ArialMT_Plain_10);

  display.setTextAlignment(TEXT_ALIGN_LEFT);

  display.drawStringMaxWidth(0, 0, 128,

                             "Lorem ipsum\n dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore.");

  display.update(BLACK_BUFFER);

  display.update(COLOR_BUFFER);

  display.display();

}

void drawTextAlignmentDemo()

{

  // Text alignment demo

  display.clear();

  char str[30];

  int x = 0;

  int y = 0;

  display.setFont(ArialMT_Plain_10);

  // The coordinates define the left starting point of the text

  display.setTextAlignment(TEXT_ALIGN_LEFT);

  display.drawString(x, y, "Left aligned (0,0)");

  // The coordinates define the right end of the text

  display.setTextAlignment(TEXT_ALIGN_RIGHT);

  x = width;

  y = height - 12;

  sprintf(str, "Right aligned (%d,%d)", x, y);

  display.drawString(x, y, str);

  display.update(BLACK_BUFFER);

  // The coordinates define the center of the text

  display.setTextAlignment(TEXT_ALIGN_CENTER);

  x = width / 2;

  y = height / 2 - 5;

  sprintf(str, "Center aligned (%d,%d)", x, y);

  display.drawString(x, y, str);

  display.update(COLOR_BUFFER);

  display.display();

}

void drawRectDemo()

{

  display.clear();

  // Draw a pixel at given position

  for (int i = 0; i < 10; i++)

  {

    display.setPixel(i, i);

    display.setPixel(10 - i, i);

  }

  display.drawRect(12, 12, 20, 20);

  // Fill the rectangle

  display.fillRect(14, 14, 17, 17);

  // Draw a line horizontally

  display.drawHorizontalLine(0, 40, 20);

  // Draw a line horizontally

  display.drawVerticalLine(40, 0, 20);

  display.update(BLACK_BUFFER);

  display.update(COLOR_BUFFER);

  display.display();

}

void drawCircleDemo()

{

  int x = width / 4;

  int y = height / 2;

  display.clear();

  for (int i = 1; i < 8; i++)

  {

    display.setColor(WHITE);

    display.drawCircle(x, y, i * 3);

    if (i % 2 == 0)

    {

      display.setColor(BLACK);

    }

  }

  display.update(BLACK_BUFFER);

  x = width / 4 * 3;

  for (int i = 1; i < 8; i++)

  {

    display.setColor(WHITE);

    if (i % 2 == 0)

    {

      display.setColor(BLACK);

    }

    display.fillCircle(x, y, 32 - i * 3);

  }

  display.update(COLOR_BUFFER);

  display.display();

}

void drawImageDemo()

{

  // see http://blog.squix.org/2015/05/esp8266-nodemcu-how-to-create-xbm.html

  // on how to create xbm files

  display.clear();

  display.update(BLACK_BUFFER);

  display.clear();

  int x = width / 2 - WiFi_Logo_width / 2;

  int y = height / 2 - WiFi_Logo_height / 2;

  display.drawXbm(x, y, WiFi_Logo_width, WiFi_Logo_height, WiFi_Logo_bits);

  display.update(COLOR_BUFFER);

  display.display();

}

void VextON(void)

{

  pinMode(18, OUTPUT);

  digitalWrite(18, HIGH);

}

void VextOFF(void) // Vext default OFF

{

  pinMode(18, OUTPUT);

  digitalWrite(18, LOW);

}

Demo demos[] = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawImageDemo};

int demoLength = (sizeof(demos) / sizeof(Demo));

long timeSinceLastModeSwitch = 0;

void loop()

{

  // draw the current demo method

  demos[demoMode]();

  demoMode = (demoMode + 1) % demoLength;

  delay(15000);

}