Make a button toggle a while loop

Background: I’m a newb with limited code experience. I’ve tried searching this but I’ve either done all the solutions wrong or it works differently then I believe it does.

Problem: I’m currently modifying a piece of code. I want to add a button that turns it on and off.

Code:
/* Arduino Project - Color Sorting Machine
*

const int button= 2;
int status = false;

Servo topServo;
Servo bottomServo;
int frequency = 0;
int color=0;
void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);
// Setting frequency-scaling to 20%
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
topServo.attach(9);
bottomServo.attach(8);

pinMode(button, INPUT_PULLUP);

Serial.begin(9600);
}
void loop() {

if(digitalRead(button)==true) {
status = !status;
while(digitalRead(button) == true){
switch(status){
case 1:
topServo.write(115);
delay(500);

for(int i = 115; i > 65; i–) {
topServo.write(i);
delay(2);
}
delay(500);

color = readColor();
delay(1000);
switch (color) {
case 1:
bottomServo.write(50);
break;
case 2:
bottomServo.write(75);
break;
case 3:
bottomServo.write(100);
break;
case 4:
bottomServo.write(125);
break;
case 5:
bottomServo.write(150);
break;
case 6:
bottomServo.write(175);
break;

case 0:
break;
}
delay(300);

for(int i = 65; i > 29; i–) {
topServo.write(i);
delay(2);
}
delay(200);

for(int i = 29; i < 115; i++) {
topServo.write(i);
delay(2);
}
color=0;
}
break;

}
}
}
// Custom Function - readColor()
int readColor() {
// Setting red filtered photodiodes to be read
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int R = frequency;
// Printing the value on the serial monitor
Serial.print("R= “);//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(” ");
delay(50);
// Setting Green filtered photodiodes to be read
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int G = frequency;
// Printing the value on the serial monitor
Serial.print("G= “);//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(” ");
delay(50);
// Setting Blue filtered photodiodes to be read
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int B = frequency;
// Printing the value on the serial monitor
Serial.print("B= “);//printing name
Serial.print(frequency);//printing RED color frequency
Serial.println(” ");
delay(50);
if(R<45 & R>32 & G<65 & G>55){
color = 1; // Red
}
if(G<55 & G>43 & B<47 &B>35){
color = 2; // Orange
}
if(R<50 & R>38
& G<50 & G>38){
color = 3; // Green
}
if(R<38 & R>24 & G<44 & G>30){
color = 4; // Yellow
}
if(R<56 & R>46 & G<65 & G>55){
color = 5; // Brown
}
if (G<58 & G>45 & B<40 &B>26){
color = 6; // Blue
}
return color;
}

I want the servos to stop at the end of the while loop if I press the button to stop, and start if I press it again. I want it to continue to loop though, I don’t want it to just do it once if I press the button, I want it to continuously do the code.

Your code is not properly posted. Read the stickies at the top of the forum, and try again, using code tags.

Before you post your code again, though, use Tools + Auto Format to properly indent it.

Also, tell us what the code actually does, and how that differs from what you want.

Learning to use functions would be a good thing.