Using Serial imput to run a code

The question is why you have those 'long' delays? What are you trying to achieve with each of them? Do they have a function to prevent the screen from flickering? Do you want the servo to be in a position for a certain time?

I have not had any problems with my screen flickering, i am not sure how that would happen anyways.
I have a delay after the color determining and sorting of the M&Ms to allow the old and new M&M's to fall into place before it re-runs. The only other delay that is not in Initialization is the one for if an incorrect command is given in the Serial Monitor so that should not interfere in any way.

Look at the debounce example.

I did and adjusted my code accordingly, or at least i tried to, not sure if i did it correct.

You have two ways to start the sorting (serial and button) but only one way to pause it (button); is this intentionally?

I did notice this and finally just got around to adding it. Thanks for the tip!