graph LR; Start --> Setup; Setup --> SerialBegin; Setup --> Serial1Begin; Setup --> SetMaxSpeed1; Setup --> SetMaxSpeed2; Setup --> InitializeDataIn; Setup --> EndSetup; Loop --> CheckSerial1; CheckSerial1 --> Serial1Available; Serial1Available -->|Yes| ReadCharacterFromSerial1; ReadCharacterFromSerial1 --> AppendCharacterToDataIn; AppendCharacterToDataIn --> CheckNewlineOrHashCharacter; CheckNewlineOrHashCharacter --> ParsingTrue1; ParsingTrue1 -->|Yes| ParsingData1; ParsingData1 --> ParseReceivedData1; ParseReceivedData1 --> ExtractMotorControl1; ExtractMotorControl1 --> SetStepperMotor1; SetStepperMotor1 --> ResetParsingAndClearDataIn1; ResetParsingAndClearDataIn1 --> EndCheckSerial1; CheckSerial --> SerialAvailable; SerialAvailable -->|Yes| ReadCharacterFromSerial; ReadCharacterFromSerial --> AppendCharacterToDataIn; AppendCharacterToDataIn --> CheckNewlineOrHashCharacter; CheckNewlineOrHashCharacter --> ParsingTrue2; ParsingTrue2 -->|Yes| ParsingData2; ParsingData2 --> ParseReceivedData2; ParseReceivedData2 --> ExtractMotorControl2; ExtractMotorControl2 --> SetStepperMotor2; SetStepperMotor2 --> ResetParsingAndClearDataIn2; ResetParsingAndClearDataIn2 --> EndCheckSerial; PerformStepperMotorMovement --> CheckDelayTime; CheckDelayTime -->|delayTime > 0| CheckInterval1AndInterval2; CheckInterval1AndInterval2 -->|intervals are reached| MoveStepper1AndStepper2; MoveStepper1AndStepper2 --> SetSpeedAndPositionForBothSteppers; SetSpeedAndPositionForBothSteppers --> MoveBothSteppers; MoveBothSteppers --> Delay; CheckDelayTime -->|delayTime = 0| CheckInterval1AndInterval2_2; CheckInterval1AndInterval2_2 -->|intervals are reached| MoveStepper1OrStepper2; MoveStepper1OrStepper2 --> SetSpeedAndPositionForStepper; SetSpeedAndPositionForStepper --> MoveStepper; MoveStepper --> End;