// SOLUCIONADO
// El problema es que solamente guardaba 16 chars para el texto, pero siempre hay que sumarle 1 por el null character, por lo que con 17 chars es lo correcto.
int tercios_de_vuelta = -2000;
int vueltas;
byte fraccion_de_vuelta;
//byte fraccion_de_vuelta_byte;
char char_texto_linea_display[17];
void setup() {
Serial.begin(9600); // open the serial port at 9600 bps:
}
void loop() {
vueltas = abs(tercios_de_vuelta / 3);
fraccion_de_vuelta = abs(tercios_de_vuelta % 3); // Toma valores 0, 1 o 2.
Serial.println(fraccion_de_vuelta);
//fraccion_de_vuelta_byte = (byte)fraccion_de_vuelta;
//Serial.println(fraccion_de_vuelta_byte);
sprintf(char_texto_linea_display, "N: %s%03d %d/3", tercios_de_vuelta < 0 ? "-" : "", vueltas, fraccion_de_vuelta); // Muchos dicen que usar sprintf es lento, pero acá no me importa.
Serial.println(char_texto_linea_display);
//Serial.println(fraccion_de_vuelta,10);
Serial.println("No entiendo por qué me da 51 si sebería dar 0, 1 o 2 (pasa si pongo la linea después del sprintf):");
Serial.println(fraccion_de_vuelta);
//Serial.println(fraccion_de_vuelta_byte);
delay(1000);
}