Delta Robot: Problems with Serial Monitor interfering with the rest of the code.

Hi everyone,
I'm working on a delta robot and made a program to manually control 3 servo motors in order to find the right coördinates for drawing a few simple shapes. In itself the code works fine but when trying to add some code to have the servo positions display on the Serial Monitor it seems to interfere with the rest of my code rendering it useless and I could not find the right information on the serial monitor to fix it as of yet. While continuing my search for an answer I'm making this post as there is a deadline for this project.

The code I will present here makes use of 3 buttons:

  1. The first to cycle through the servo motor that needs to be used.
  2. The second to choose in which direction it will move.
  3. The third to make it move.

I've tried to put the print commands at the start of my "void loop" which made the robot behave unpredictable, I figured it might be better if it were in the button code itself only displaying coördinates when they are changed. This resulted in every servo motor moving in turns when pressing the movement button in stead of just the one that should move based on the switch case structure.

if (SelectBtnState == HIGH)
    {
      if (servoNumber < 4)
      {
        servoNumber = servoNumber + 1;
      }
      else
      {
        servoNumber = 1;
      }
    }
    
    if (DirectBtnState == HIGH)
    {
      forward = !forward;
    }
    
    if (MoveBtnState == HIGH)
    {
      switch (servoNumber)
      {
      case 1:
        if (forward == true)
        {
          pos1 = pos1 + 1;
        }
        else
        {
          pos1 = pos1 -1;
        }
        
        servo1.write(pos1);
        Serial.print("Servo1 = ");        // monitor code
        Serial.println(pos1);
        delay(50);
        break;
        
      case 2:
        if (forward == true)
        {
          pos2 = pos2 + 1;
        }
        else
        {
          pos2 = pos2 -1;
        }
        
        servo2.write(pos2);
        Serial.print("Servo2 = ");         // monitor code
        Serial.println(pos2);
        delay(50);
        break;
        
      case 3:
        if (forward == true)
        {
          pos3 = pos3 + 1;
        }
        else
        {
          pos3 = pos3 -1;
        }
        
        servo3.write(pos3);
        Serial.print("Servo3 = ");          // monitor code
        Serial.println(pos3);
        delay(50);
        break;

with

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

The full code can be found below or in the attachment.

Any advice would be greatly appreciated, I realize the chance of this issue lying with my inexperience with arduino and serial monitor in specific is rather high so I ask you all to be understanding.

Thanks in advance!

#EDIT: I noticed the moment I add Serial.begin(9600); the robot works wrong which I find very disturbing.

Button_Movement_Alldirections_DisplayFail.ino (2 KB)

You don't say which Arduino that you are using, but on a Uno, pin 1 is TX. This statement "const int SelectBtnPin = 1;" sets a button to pin 1 and then you set pin 1 (TX) to INPUT which will interfere with serial comms.

Ah I forgot to mention that and I am indeed using Arduino Uno, you are right!
Thanks a lot, I really needed this help fast!