Using Serial imput to run a code

You have two delay(500) statements in your code.

checkButton should not need that at all; this should only have a negative effect if you work with the buttons, not when you send a pause command from the serial monitor.

If toggle[1] equals 0, you constantly call mandmStart which contains a delay of 500ms. For testing, I suggest that you take the call to mandmStart out of that if block and see if that improves the situation.

I like to suggest that you replace the numbers for toggle[1] by #defines or an enum; it makes your code easier to understand. The number 1 does not mean anything but something like MM_PAUSED does.

I might have the numbers wrong but something like

#define MM_STARTED 0
#define MM_PAUSED 1
#define MM_INITIALISING 2
#define MM_TERMINATED 3

and next you can replace e.g.

     toggle[1] = 1;

by

     toggle[1] = MM_PAUSED;

and modify the if conditions as shown in the example below

      if ((toggle [1] == MM_PAUSED) || (toggle [1] == MM_INITIALISING)) {
        toggle [1] = MM_STARTED;

As said, easier to follow and if you, in a years time or so, have to make a change, you don't have to dig through the code to find out what the numbers mean.