delays in PWM

This has been going on in the development thread. So I decided this is a better place for the coding part.
Cr0sh has been a huge help as with the others.
I understand what the code is supposed to be doing but its not doing what I need it do.
Here's cr0sh's code:

const int switchPin = 2; // switch connected to digital pin 2

int pot1 = 0; // pot1 connected to analog 0
int pot2 = 1; // pot2 connected to analog 1
int pot3 = 2; // pot3 connected to analog 2

int val1 = 0;
int val2 = 0;
int val3 = 0;

int switchpinState = 0;

int motor1Pin = 5;   // h bridge pin connected digital 5
int motor2Pin = 6;   // h bridge pin connected to digital 6
int motor3Pin = 10;  // h bridge pin connected to digital 10

int enablePin = 9;   // h bridge enable pin connected to digital 9
int enablePin1 = 12; // h bridge enable pin connected to digital 12

void setup() {
  Serial.begin(9600);

  pinMode(switchPin, INPUT);
  pinMode(motor1Pin, OUTPUT);
  pinMode(motor2Pin, OUTPUT);
  pinMode(enablePin, OUTPUT);

  digitalWrite(enablePin, HIGH);
  digitalWrite(enablePin1, HIGH);
}

void loop() {
  switchpinState = digitalRead(switchPin);

  if (switchpinState == HIGH) {
    val1 = analogRead(pot1);
    val1 = map(val1, 0, 1023, 0, 255);
  
    analogWrite(motor1Pin, val1);

    Serial.print(val1);
    Serial.print(" Motor 1: ");

    val2 = analogRead(pot2);
    val2 = map(val2, 0, 1023, 0, 255);

    analogWrite(motor2Pin, val2);

    Serial.print(val2);
    Serial.print(" Motor 2: ");

    val3 = analogRead(pot3);
    val3 = map(val3, 0, 1023, 0, 255);

    analogWrite(motor3Pin, val3);

    Serial.println(val3);
    Serial.print(" Motor 3: ");
  }
  else {
    staticDisplay();
  }
}

void staticDisplay() {
  int frame = 1;
  boolean exitStaticDisplay = false;

  while (true) {
    switch (frame) {
      case 1:
        analogWrite(motor1Pin, 100);
        exitStaticDisplay = myDelay(2000);
        break;
      case 2:
        analogWrite(motor1Pin, 124);
        exitStaticDisplay = myDelay(2000);
        break;
      case 3:
        analogWrite(motor2Pin, 100);
        analogWrite(motor2Pin, 200);
        analogWrite(motor3Pin, 155);
        exitStaticDisplay = myDelay(2000);
        break;
      case 4:
        analogWrite(motor1Pin, 200);
        analogWrite(motor3Pin, 0);
        analogWrite(motor2Pin, 167);
        exitStaticDisplay = myDelay(2000);
        break;
      case 5:
        analogWrite(motor3Pin, 0);
        analogWrite(motor2Pin, 130);
        analogWrite(motor1Pin, 180);
        exitStaticDisplay = myDelay(2000);
        break;
      case 6:
        analogWrite(motor3Pin, 109);
        analogWrite(motor1Pin, 190);
        analogWrite(motor2Pin, 205);
        exitStaticDisplay = myDelay(2000);
        break;
      case 7:
        analogWrite(motor1Pin, 115);
        exitStaticDisplay = myDelay(100);
        break;
      case 8:
        analogWrite(motor3Pin, 160);
        analogWrite(motor1Pin, 0);
        analogWrite(motor3Pin, 135);
        exitStaticDisplay = myDelay(2000);
        break;
      case 9:
        analogWrite(motor3Pin, 140);
        analogWrite(motor2Pin, 200);
        analogWrite(motor1Pin, 190);
        exitStaticDisplay = myDelay(2000);
        break;
      case 10:
        analogWrite(motor1Pin, 100);
        analogWrite(motor2Pin, 0);
        analogWrite(motor3Pin, 0);
        exitStaticDisplay = myDelay(100);
        break;
      case 11:
        analogWrite(motor2Pin, 152);
        analogWrite(motor1Pin, 0);
        analogWrite(motor3Pin, 115);
        exitStaticDisplay = myDelay(100);
        break;
      case 12:
        analogWrite(motor1Pin, 199);
        analogWrite(motor2Pin, 140);
        analogWrite(motor3Pin, 178);
        exitStaticDisplay = myDelay(2000);
        break;
      case 13:
        analogWrite(motor3Pin, 100);
        analogWrite(motor1Pin, 0);
        analogWrite(motor2Pin, 0);
        exitStaticDisplay = myDelay(100);
        break;
      case 14:
        analogWrite(motor1Pin, 240);
        analogWrite(motor2Pin, 200);
        analogWrite(motor3Pin, 120);
        exitStaticDisplay = myDelay(2000);
        break;
      case 15:
        analogWrite(motor1Pin, 170);
        exitStaticDisplay = myDelay(100);
        break;
      case 16:
        analogWrite(motor2Pin, 200);
        analogWrite(motor3Pin, 130);
        exitStaticDisplay = myDelay(2000);
        break;
      case 17:
        analogWrite(motor1Pin, 0);
        analogWrite(motor2Pin, 0);
        analogWrite(motor3Pin, 0);
        exitStaticDisplay = myDelay(100);
        break;
      case 18:
        analogWrite(motor3Pin, 105);
        analogWrite(motor2Pin, 105);
        analogWrite(motor1Pin, 235);
        exitStaticDisplay = myDelay(2000);
      default:
        frame = 0;
        break;
    }

    if (exitStaticDisplay == true) break; // exit from loop

    frame++;
  }
}

boolean myDelay(int delay) {
  int count = 0;
  boolean retval = false;

  while (!(retval = digitalRead(switchPin)) && !(count == delay)) {
    count++;
    delayMicroseconds(1);
  }

  return retval;
}

It will stop from the "automatic" mode and go into manual like I need it but whenever the switch is press into automatic the motors arent delaying like supposed to.
Here's my code:

const int switchPin = 2; // switch connected to digital pin 2 
int pot1 = 0; // pot1 connected to analog 0
int pot2 = 1; // pot2 connected to analog 1
int pot3 = 2; // pot3 connected to analog 2
int val1 = 0;
int val2 = 0;
int val3 = 0;
int switchpinState = 0;
int motor1Pin = 5; // h bridge pin connected digital 5
int motor2Pin = 6; // h bridge pin connected to digital 6
int motor3Pin = 10; // hbridge pin connected to digital 10
int enablePin = 9; //h bridge enable pin connected to digital 9
int enablePin1 = 12; // hbridge enable pin connected to digital 12


void setup()
{
 Serial.begin(9600);
  pinMode(switchPin, INPUT);
  pinMode(motor1Pin, OUTPUT);
  pinMode(motor2Pin, OUTPUT);
  pinMode(enablePin, OUTPUT);
  digitalWrite(enablePin, HIGH);
  digitalWrite(enablePin1, HIGH);



  


}
void loop()
{
switchpinState = digitalRead(switchPin);
if (switchpinState == HIGH)
{
  val1 = analogRead(pot1);
  val1 = map(val1, 0, 1023, 0, 255);
  analogWrite(motor1Pin, val1);
  Serial.print(val1);
  Serial.print(" Motor 1: ");

  val2 = analogRead(pot2);
  val2 = map(val2, 0, 1023, 0, 255);
  analogWrite(motor2Pin, val2);
  Serial.print(val2);
  Serial.print(" Motor 2: ");
  
  val3 = analogRead(pot3);
  val3 = map(val3, 0, 1023, 0, 255);
  analogWrite(motor3Pin, val3);
  Serial.println(val3);
  Serial.print(" Motor 3: ");
}
else {
  digitalRead(switchpinState == LOW);
  analogWrite(motor1Pin, 100);
  delay(2000);
  analogWrite(motor1Pin, 124);
  delay(2000);
  analogWrite(motor2Pin, 100);
  analogWrite(motor2Pin, 200);
  analogWrite(motor3Pin, 155);
  delay(2000);
  analogWrite(motor1Pin, 200);
  analogWrite(motor3Pin, 0);
  analogWrite(motor2Pin, 167);
  delay(2000);
analogWrite(motor3Pin, 0);
analogWrite(motor2Pin, 130);
analogWrite(motor1Pin, 180);
delay (2000);
analogWrite(motor3Pin, 109);
analogWrite(motor1Pin, 190);
analogWrite(motor2Pin, 205);
delay (2000);
analogWrite(motor1Pin, 115);
delay (100);
analogWrite(motor3Pin, 160);
analogWrite(motor1Pin, 0);
analogWrite(motor3Pin, 135);
delay (2000);
analogWrite(motor3Pin, 140);
analogWrite(motor2Pin, 200);
analogWrite(motor1Pin, 190);
delay (2000);
analogWrite(motor1Pin, 100);
analogWrite(motor2Pin, 0);
analogWrite(motor3Pin, 0);
delay(100);
analogWrite(motor2Pin, 152);
analogWrite(motor1Pin, 0);
analogWrite(motor3Pin, 115);
delay(100);
analogWrite(motor1Pin, 199);
analogWrite(motor2Pin, 140);
analogWrite(motor3Pin, 178);
delay(2000);
analogWrite(motor3Pin, 100);
analogWrite(motor1Pin, 0);
analogWrite(motor2Pin, 0);
delay(100);
analogWrite(motor1Pin, 240);
analogWrite(motor2Pin, 200);
analogWrite(motor3Pin, 120);
delay(2000);
analogWrite(motor1Pin, 170);
delay(100);
analogWrite(motor2Pin, 200);
analogWrite(motor3Pin, 130);
delay(2000);
analogWrite(motor1Pin, 0);
analogWrite(motor2Pin, 0);
analogWrite(motor3Pin, 0);
delay(100);
analogWrite(motor3Pin, 105);
analogWrite(motor2Pin, 105);
analogWrite(motor1Pin, 235);
delay(2000);

}
}

It does how I want it to do but I have to wait for the delays to end to manual control the motors.
I have tried delaymicroseconds, tried implementing the blink without delay code, and many other true or false changes to code.
So far no luck.
Any help is appreciated and thanks again cr0sh for enlightening me :wink:

It does how I want it to do but I have to wait for the delays to end to manual control the motors

There's too much code there to work out exactly what it is you want to do, but if you have to have delays that you need to break out of, write your own delay function, with the break-condition tested as well as the timeout, so that you can prematurely exit the function.