ssd1306ascii library , display gets data out of position!

I am using the ssd1306ascii library but it has data out of place.
Temp, Humid,Kmph are strings Volta1 and volti are float.

  Wire.begin();
  Wire.setClock(400000L);
#if RST_PIN >= 0
  oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN);
#else // RST_PIN >= 0
  oled.begin(&Adafruit128x64, I2C_ADDRESS);
#endif // RST_PIN >= 0
  oled.setFont(TimesNewRoman16_bold);
  oled.setLetterSpacing(2);
  rows = oled.fontRows();

    oled.setCursor(0, 0);
    oled.print("    M-board   ");

    oled.setCursor(0, 2);
    oled.print("T" + Temp + "c");
    oled.setCursor(56, 2);
    oled.print("KM-" + Kmph);
    oled.setCursor(0, 4);
    oled.print("H" + Humid + "%");
    oled.setCursor(56, 4);
    oled.print("P=" + String(tval, DEC));
    oled.setCursor(0, 6);
    oled.print("M" + String(volti, 1));
    oled.setCursor(56, 6);
    oled.print("R" + String(volta1, 1));

should read
T23c KM-
H56% P=104
M54.4 R5.8

But I get random data popping up where it shouldn’t.

Any suggestions!

I looked at the proportional example and would like to know how the data is updated at the correct locations.

void loop() {
  // Fake system model.
  double volts = 0.1*random(110, 130);
  double watts = 0.1*random(200, 500);
  // 100 Wh battery.
  int run = 100*60/(int)watts;
  clearValue(0);
  oled.print(volts, 1);
  clearValue(rows);
  oled.print(watts, 1);
  clearValue(2*rows);
  oled.print(run);  
  delay(1000);
}

I’m trying to make sense of how the rows and cols.

I’m new to the wonderful world of micro controllers! Luv it!

Pete

Check the image attached to the main post!

Pete

This can be closed as It was simply the stupid way I extracted the data from the bluetooth in the update section!

Pete