Recibir cadena por comunicación serial

Hola, estoy tratando de enviarle una cadena de números al arduino la cual divido con en código que esta en este link https://www.arduino.cc/en/Tutorial/StringToIntExample

Los datos al arduino no los envió con el monitor serie, los envió a través de una comunicación serie por php pero el problema esta en esta parte del código o eso creo

if (inChar == '\n')

No se que es lo que el monitor serie le envía al arduino cuando esta en "nueva linea" y quiero saber eso, que es lo que hace para enviar esa nueva linea, porque por ejemplo si pongo "sin ajuste de linea" y escribo por ejemplo " 12345\n " no funciona el código correctamente, eso no es lo mismo que cuando esta el monitor serie en "nueva linea"... :confused: No se si se entiende que es lo que quiero hacer, no se mucho de arduino,pero de apoco voy aprendiendo, logre separar la cadena en partes y todo anda de 10 con el monitor serie configurado en "nueva linea" pero al sacar esto deja de funcionar...
Gracias desde ya.

Suponiendo que vas a enviar “12345” por el monitor serie, esto es lo que realmente se envía según el ajuste de línea:

Sin ajuste de línea: “12345”
Nueva línea: “12345\n”
Retorno del carro: “12345\r”
Ambos NL & CR: “12345\r\n”

Yo prefiero más hacerlo así cuando se trata de convertir texto a binario:

char dato[65];
if (Serial.avalable()) {
  dato[Serial.readBytesUntil('\n', dato, 64)] = 0;
  int loQueSea = atoi(dato);
}

Este es mi codigo

String cadena = "";    // string to hold input
String R = "";
int ledR= 11;

String A = "";
int ledA= 10;

String V = "";
int ledV= 9;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  pinMode (ledR, OUTPUT);
   pinMode (ledA, OUTPUT);
    pinMode (ledV, OUTPUT);
}

void loop() {
  // Read serial input:
  while (Serial.available() > 0) {
    int inChar = Serial.read();
    if (isDigit(inChar)) {
      // convert the incoming byte to a char
      // and add it to the string:
      cadena += (char)inChar;
    }
    // if you get a newline, print the string,
    // then the string's value:
    if (inChar == '\n') {
     
      //Serial.print("Value:");
      Serial.println(cadena.toInt());

      R= cadena.substring(0,3);

      analogWrite(ledR,R.toInt() );

        A= cadena.substring(6,9);

      analogWrite(ledA,A.toInt() );

        V= cadena.substring(3,6);

      analogWrite(ledV,V.toInt() );

      Serial.println(R);
      Serial.println(V);
      Serial.println(A);

     // Serial.print("String: ");
      Serial.println(cadena);
      // clear the string for new input:
      cadena = "";
    }
  }
}

Pero creo que el salto de linea no funciona exactamente así como dices, o a mi no me funciona por algún motivo, porque si pongo “Sin ajuste de linea” y envió 12345\n no funciona el código, el monitor serie envía los números en decimal al arduino o los convierte a binario o algo así? si digo alguna burrada perdon :confused:

Ya capto lo que quieres hacer: controlar un LED (o tira de LEDs) RGB, vía serial. No es difícil en realidad.

Si literalmente vas a enviar "12345\n" al monitor serial (y sin cambio de línea), entonces el String que obtienes, equivaldría a: "12345\n"
Escribir "\n" no hace el cambio de línea, '\n' es un único char cuyo valor es 10. Si quieres un cambio de línea, hazlo en el ajuste de línea del monitor serie (Nueva línea). O para tu implementación, no hace falta cambio de línea; a menos que sea un flujo constante, o en la lectura de una animación en un archivo en una SD.

Yo que tu enviaría los valores separados por coma o espacio. Algo así como:

"255,255,255"
// Rojo, verde, azul

Es más cómodo de trabajar.