SerialPortDudas

Alguinn me podria aclarar una duda con el siguiente codigo, no entiendo porque se imprime dos veces, a pesar de solo ingresar un solo valor:

int var1=0, var2=0, var3=0;
char c;

void setup() {
Serial.begin(9600);
}

void loop() {

while(Serial.available()>0){

c=Serial.read();

if(c=='A'){var1=Serial.parseInt();}

if(c=='B'){var2=Serial.parseInt();}

if(c=='C'){var3=Serial.parseInt();}

Serial.println(var1);
Serial.println(var2);
Serial.println(var3);
Serial.println();
}

}//Fin de loop

You print it in the if statement (if(c=='A'){var1=Serial.parseInt():wink: then again in the Serial.println(var?);

I don't see a print in this statement

1 Like

Moderador:
Por favor, lee las Normas del foro y edita tu código usando etiquetas.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>


Si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.

Cuando lo hagas yo responderé.

Tendría que ver qué se le está mandando exactamente, seguramente está mandando un "A123"+Intro.
Lees el primer caracter, una 'A', lees dentro del IF el parseint y te devuelve 123. Imprimes los 3 valores.
Pero aún queda en el buffer un "Intro" que lee y vuelve a imprimir sin entrar en ningun "IF" dado que es un caracter 13.
Inlcluye esta línea para averiguarlo:
if (c==0x0D) { Serial.println("CR !!!"); }

if (c==0x0A) { Serial.println("LF !!!"); }

Saludos.

Obviamente es eso, se ve en la captura de pantalla que la consola envía un CR al final, pero esperábamos que el PO cumpla con lo que le pidió el moderador para darle una respuesta.
Saludos

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.