Problema con el valor del potenciometro

Tengo un problema con el código, ya que debería pulsar el botón y si el led esta rojo no funcionar y si el led esta verde funcionar. El problema viene que al mostrar el valor del potenciometro por pantalla se bugea y no me deja cambiar al led rojo ( que seria apagar el potenciometro ), si quito esta linea

Serial.println("Valor del potenciometro: " + String(valorPotenciometre));

si que me funciona, pero quiero mostrar el valor. Muchas gracias de antemano.

const int pulsador = 9;     // the number of the pushbutton pin
const int led =  12;      // the number of the LED pin RED
const int led1 =  11;      // the number of the LED pin GREEN
const int led2 = 10;
const int pot =0; // el pot esta conectado al pin A0
int valorPotenciometre;

// variables will change:
boolean valorPulsador=0;

void setup() {
  pinMode(led, OUTPUT);  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);     
  pinMode(pulsador, INPUT);  
Serial.begin(9600);

}

void loop(){
    
if (digitalRead(pulsador)){          // Cuando el pulsador está activo...
   valorPulsador = !valorPulsador;  // Asigna el valor contrario (ON --> OFF --> ON --> OFF...)
 }

 if(valorPulsador){        // si Valor_pulsador es Verdadero --> 1 --> ON
 digitalWrite(led1,LOW);    // Apaga el Led
 digitalWrite(led,HIGH);    // Enciende el Led
  valorPotenciometre = analogRead (pot) / 4;
  analogWrite(led2, valorPotenciometre);
  Serial.println("Valor del potenciometro: " + String(valorPotenciometre));
 }
 else {                    // De lo contrario
  digitalWrite(led1,HIGH);   // Enciende el Led
  digitalWrite(led,LOW);   // Apaga el Led
 }
 
}

Prueba de este modo

leo el estado de tu pulsador usando una variable bool estado
Siempre miro el flanco cuando pasa de 0 a 1 (si tu pulsador esta al revés invierte)

Esto cambia toda la forma en que cambias la variable valorPulsador

  estado = digitalRead(pulsador);
  if (estado && !esatdoAnt){          // Cuando el pulsador está activo...
      valorPulsador = !valorPulsador;  // Asigna el valor contrario (ON --> OFF --> ON --> OFF...)
  }
  estadoAnt = estado;

Acá todo el código:

const int pulsador = 9;     // the number of the pushbutton pin
const int led =  12;      // the number of the LED pin RED
const int led1 =  11;      // the number of the LED pin GREEN
const int led2 = 10;
const int pot =0; // el pot esta conectado al pin A0
int valorPotenciometre;
bool estadoAnt = false, estado;
// variables will change:
boolean valorPulsador=0;

void setup() {
  pinMode(led, OUTPUT);  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);     
  pinMode(pulsador, INPUT);  
  Serial.begin(9600);
}

void loop(){
   
  estado = digitalRead(pulsador);
  if (estado && !esatdoAnt){          // Cuando el pulsador está activo...
      valorPulsador = !valorPulsador;  // Asigna el valor contrario (ON --> OFF --> ON --> OFF...)
  }
  estadoAnt = estado;

  if (valorPulsador){        // si Valor_pulsador es Verdadero --> 1 --> ON
      digitalWrite(led1,LOW);    // Apaga el Led
      digitalWrite(led,HIGH);    // Enciende el Led
      valorPotenciometre = analogRead (pot) / 4;
      analogWrite(led2, valorPotenciometre);
      Serial.println("Valor del potenciometro: " + String(valorPotenciometre));
  }
  else {                    // De lo contrario
      digitalWrite(led1,HIGH);   // Enciende el Led
      digitalWrite(led,LOW);   // Apaga el Led
  }
}