Se te ocurrió la simpleza de ver que esta leyendo tu comando?
void loop() {
if(Serial.available()){
String a = Serial.readString();
Serial.print("He leido: ");
Serial.println(a);
if(a.equals("cambiar")){
Serial.print("funciona");
}
}
}
De este modo puedes VER que esta llegando. Ojo.. si hay caracteres raros no los vas a ver. ni comparar
Raros serían el CR (carriage return) y el LF (Line feed) o sea un 0x0a y 0x0d
Yo he modificado levemente tu código y obtuve un buen resultado asi
String a = "";
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
a = Serial.readStringUntil('\r');
Serial.print("Lei:");
Serial.print(a);
if (a.equals("cambiar")){
Serial.print("funciona");
a = "";
}
}
}
Luego te haré algunos comentarios de los errores cometidos