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"... 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.
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
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: