Hola tengo el siguiente problema, mi codigo se utiliza en un arduino nano que esta conectado a un LCD tft 2.4" IL9341 usando 8 bits, luego mediante UART se conecta a otro dispositivo (Tiva C de TX), pero para probar que recepcione bien todo lo hago mediante la consola.
El problema resulta cuando mando datos (de la siguiente forma se mandan "id|dato") si no coloco un println o print con cualquier cosa dentro del codigo while (serial.available()>0) no lee correctamente los caracteres, por lo tanto es como si no recibiese nada.
Probe cambiar la velocidad (baud rate)
Probe usar while o if
Probe colocar un delay o delaymicro
La verdad no entiendo porque ocurre este problema
Codigo del void loop, es lo mas relevante
void loop(void) {
while(Serial.available() > 0) {
Serial.println("por alguna razon si no pongo esto no anda");
int inChar = Serial.read();
//Serial.println(Serial.read());
//Verifico si ya lei hasta la ID (hasta que se recibe '|')
if (!flagID) {
if (isDigit(inChar)) {
inString += (char)inChar;
} else if (inChar == '|') { //Finalizacion de la ID
inID = inString.toInt();
//Serial.print("ID: "); Serial.println(inID);
inString = "";
flagID = true;
}
} else { //Leo datos
if (inChar != '\n') { //Guardo datos hasta que recibo un \n
inString += (char)inChar;
} else {
inDato = inString.toFloat();
//Serial.print("Dato: "); Serial.println(inDato);
inString = "";
flagID = false;
for (int i = 0; i < cantidadVariables; i++) {
if (identificador[i] == inID) {
//Serial.print("ID igual al i: ");Serial.println(i);
*(variables[i]) = inDato;
flagRx = true;
break;
}
}
}
}
} // if (Serial.available() > 0) {
if (flagRx == true) {
//Serial.println("writting");
write_menu_principal();
flagRx = false;
}
}//LOOP