Ajuda com leitura de string

Preciso fazer um projeto que acenda até 3 leds e apague esses leds inserindo "apagar led" no monitor serial, eu consegui fazer os leds acenderem mas não consigo usar o comando de apagar. Vi exemplos que usam o "serial.readString" mais ou menos desse jeito mas não consegui fazer dar certo

int n;
String p;

void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  Serial.println("Quantos leds vc quer acender?");

}

void loop() {
  if(Serial.available()){
    n = Serial.parseInt();
    
     switch(n){
      case 1:
        digitalWrite(2,HIGH);
        digitalWrite(3,LOW);
        digitalWrite(4,LOW);
        digitalWrite(5,LOW);
      break;
      
      case 2:
        digitalWrite(2,HIGH);
        digitalWrite(3,HIGH);
        digitalWrite(4,LOW);
        digitalWrite(5,LOW);
       break;
      
      case 3:
        digitalWrite(2,HIGH);
        digitalWrite(3,HIGH);
        digitalWrite(4,HIGH);
        digitalWrite(5,LOW);
      break;
        }

        p=Serial.readString();

        if(p=="apagar led"){
        digitalWrite(2,LOW);
        digitalWrite(3,LOW);
        digitalWrite(4,LOW);
        digitalWrite(5,LOW);
      }
       
      }
        }

Veja se a opção de final de linha no Monitor Serial está como “Nenhum final-de-linha”:

Primeiro, você checa se a entrada do Serial é a palavra “apagar led”, se não, converte para um número
e testa.

Veja se isso faz o que você quer:

void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  Serial.println("Quantos leds vc quer acender?");
}

void loop() {
  if (Serial.available()) {
    String p = Serial.readString();

    if (p == "apagar led") {
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
    }
    else {
      int n = p.toInt();

      switch (n) {
      case 1:
        digitalWrite(2, HIGH);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        break;

      case 2:
        digitalWrite(2, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        break;

      case 3:
        digitalWrite(2, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(4, HIGH);
        digitalWrite(5, LOW);
        break;
      }
    }
  }
}

Ainda não deu, amigo... Ele acende os leds mas na hora que eu envio "apagar led" eles continuam acesos

Aparentemente você não pode usar o operador == para comprar String e cstring, tem que usar o método String.compareTo().

Teste isto aqui, coloquei uns print() para debug:

void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  Serial.println("Quantos leds vc quer acender?");
}

void loop() {
  if (Serial.available()) {
    String p = Serial.readString();
    
    Serial.print("Recebido = [");
    Serial.print(p);
    Serial.println("]");
    
    if (p.compareTo("apagar led") == 0) {
      Serial.println("Apaga leds");
      
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
    }
    else {
      int n = p.toInt();

      Serial.print("Acende leds = ");
      Serial.println(n);

      switch (n) {
      case 1:
        digitalWrite(2, HIGH);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        break;

      case 2:
        digitalWrite(2, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        break;

      case 3:
        digitalWrite(2, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(4, HIGH);
        digitalWrite(5, LOW);
        break;
      }
    }
  }
}

Veja se a opção de final de linha no Monitor Serial está marcada como “Nenhum final-de-linha”, no canto inferior direito:
serial.png
Teste com o primeiro código que lhe passei, se não funcionar, teste com o segundo e coloque aqui o que aparece no Monitor Serial.

O segundo código e o "nenhum final de linha" deram certo aqui, muito obrigado!!