TPIC6B595 Shift Registers Controlling Multiple Steppers

The button code is transparent, so no harm done if you include the code and don't install or press the button. I thought it would be handy to ignore any stored values if you need to re-align.

I have used my 48-stepper setup for hours at the time, and did not notice any missed steps. Even if I did slam the motors in reverse without stopping them first (goPos() should also take care of that).

PIR pause code could be inserted at the start of a case.
Leave both pots on the PIR sensor in the middle, so 'on' time is about 2-3minutes.

    case 1: // move all motors the same random direction/steps
      if (digitalRead(pirPin) && millis() - prevMillis > 8000) { // after 8 seconds
        randNumber = random(-1024, 1024); // max half a turn
        for (byte i = 0; i < motors; i++) {
          newPos[i] = randNumber; // all motors the same (random) new position
        }
        // eepromSave(); // could call eeprom write function here
        sequence = 2; // next case
        prevMillis = millis();
      }

I have the feeling you want the motors to behave as the mechanically linked "patturn".
Individually programmed motors can do so much more than that.
Have fun, and not too many headaches.
Leo..