user70135: 
I am recieving the following in my serial monitor. There is a mix of wierd characters then the spelling changes for words once it gets repeated. I don't know why its doing this. my esp01 chip uses 115200 baud rate and the program is 115200 baud rate as well. What is going on.
#include <SoftwareSerial.h>

#define TIMEOUT 5000 // mS
#define LED 5

SoftwareSerial mySerial(7, 6); // RX, TX

const int button = 11;
int button_state = 0;


void setup()
{
  pinMode(LED, OUTPUT);
  pinMode(button, INPUT);

  Serial.begin(115200);
  mySerial.begin(115200);

  SendCommand("AT+RST", "Ready");

  delay(5000);

  SendCommand("AT+CWMODE=3", "OK");
  SendCommand("AT+CIFSR", "OK");
  SendCommand("AT+CIPMUX=1", "OK");
  SendCommand("AT+CIPSERVER=1,80", "OK");
}


void loop() {
  button_state = digitalRead(button);
  mySerial.println(button_state);

  if (button_state == HIGH) {
    SendCommand("AT+CIPSEND=0,23", "OK");

    delay(250);

    mySerial.println("<h1>Button was pressed!</h1>");

    delay(250);

    SendCommand("AT+CIPCLOSE=0", "OK");
  }

  String IncomingString = "";
  boolean StringReady = false;

  while (mySerial.available()) {
    IncomingString = mySerial.readString();
    StringReady = true;
  }


  if (StringReady) {
    Serial.println("Received String: " + IncomingString);

    if (IncomingString.indexOf("LED=ON") != -1) {
      digitalWrite(LED, HIGH);
    }

    if (IncomingString.indexOf("LED=OFF") != -1) {
      digitalWrite(LED, LOW);
    }
  }
}


boolean SendCommand(String cmd, String ack) {
  mySerial.println(cmd); // Send "AT+" command to module

  if (!echoFind(ack)) // timed out waiting for ack string
    return true; // ack blank or ack found
}


boolean echoFind(String keyword) {
  byte current_char = 0;
  byte keyword_length = keyword.length();
  long deadline = millis() + TIMEOUT;

  while (millis() < deadline) {
    if (mySerial.available()) {
      char ch = mySerial.read();
      Serial.write(ch);

      if (ch == keyword[current_char])
        if (++current_char == keyword_length) {
          Serial.println();
          return true;
        }
    }
  }

  return false; // Timed out
}


user58653: Try adding:
void setup()
{
  pinMode(LED, OUTPUT);
  pinMode(button, INPUT);

  Serial.begin(115200);
  while(!Serial){}       // Loop until USB is ready

  mySerial.begin(115200);

It will unblock once the USB port is ready.

70135: <p><a href="https://i.stack.imgur.com/p9sab.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/p9sab.png" alt="enter image description here" /></a></p>
<p>I am recieving the following in my serial monitor. There is a mix of wierd characters then the spelling changes for words once it gets repeated. I don't know why its doing this. my esp01 chip uses 115200 baud rate and the program is 115200 baud rate as well. What is going on.</p>
<pre class="lang-cpp prettyprint-override"><code>#include &lt;SoftwareSerial.h&gt;

#define TIMEOUT 5000 // mS
#define LED 5

SoftwareSerial mySerial(7, 6); // RX, TX

const int button = 11;
int button_state = 0;


void setup()
{
  pinMode(LED, OUTPUT);
  pinMode(button, INPUT);

  Serial.begin(115200);
  mySerial.begin(115200);

  SendCommand(&quot;AT+RST&quot;, &quot;Ready&quot;);

  delay(5000);

  SendCommand(&quot;AT+CWMODE=3&quot;, &quot;OK&quot;);
  SendCommand(&quot;AT+CIFSR&quot;, &quot;OK&quot;);
  SendCommand(&quot;AT+CIPMUX=1&quot;, &quot;OK&quot;);
  SendCommand(&quot;AT+CIPSERVER=1,80&quot;, &quot;OK&quot;);
}


void loop() {
  button_state = digitalRead(button);
  mySerial.println(button_state);

  if (button_state == HIGH) {
    SendCommand(&quot;AT+CIPSEND=0,23&quot;, &quot;OK&quot;);

    delay(250);

    mySerial.println(&quot;&lt;h1&gt;Button was pressed!&lt;/h1&gt;&quot;);

    delay(250);

    SendCommand(&quot;AT+CIPCLOSE=0&quot;, &quot;OK&quot;);
  }

  String IncomingString = &quot;&quot;;
  boolean StringReady = false;

  while (mySerial.available()) {
    IncomingString = mySerial.readString();
    StringReady = true;
  }


  if (StringReady) {
    Serial.println(&quot;Received String: &quot; + IncomingString);

    if (IncomingString.indexOf(&quot;LED=ON&quot;) != -1) {
      digitalWrite(LED, HIGH);
    }

    if (IncomingString.indexOf(&quot;LED=OFF&quot;) != -1) {
      digitalWrite(LED, LOW);
    }
  }
}


boolean SendCommand(String cmd, String ack) {
  mySerial.println(cmd); // Send &quot;AT+&quot; command to module

  if (!echoFind(ack)) // timed out waiting for ack string
    return true; // ack blank or ack found
}


boolean echoFind(String keyword) {
  byte current_char = 0;
  byte keyword_length = keyword.length();
  long deadline = millis() + TIMEOUT;

  while (millis() &lt; deadline) {
    if (mySerial.available()) {
      char ch = mySerial.read();
      Serial.write(ch);

      if (ch == keyword[current_char])
        if (++current_char == keyword_length) {
          Serial.println();
          return true;
        }
    }
  }

  return false; // Timed out
}
</code></pre>
 58653: <p>Try adding:</p>
<pre><code>void setup()
{
  pinMode(LED, OUTPUT);
  pinMode(button, INPUT);

  Serial.begin(115200);
  while(!Serial){}       // Loop until USB is ready

  mySerial.begin(115200);
</code></pre>
<p>It will unblock once the USB port is ready.</p>
