"Round" float to one decimal place for printing to OLED

Thanks for the responses.

The code @noiasca's recommended works fine on my 16 x 32 generic OLED. And I am embarrassed I didn't read further on the print function reference page. I only remembered the 2nd parameter as specifying the base :frowning:

For future reference:
The OLED driver is from Bill Greiman.

// ARDUINO - AHT20 - OLED
// Target processor: Pro Mini 3v3
//
#include <Wire.h>

//OLED driver from Bill Greiman.
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"

#define OLED_ADDRESS 0x3C
// Define proper RST_PIN if required.
#define RST_PIN -1

#include "AHT20.h"

AHT20 AHT;
SSD1306AsciiWire oled;

void setup()
{
    Serial.begin(9600);
    delay(500);
    Serial.println("AHT20 Sensor");

    AHT.begin();

    oled.begin(&Adafruit128x32, OLED_ADDRESS);
    oled.setFont(CalLite24);
    oled.displayRemap(true);          // rotate text 180°
    oled.clear();
}

void loop() (
    float humi, temp;
    int ret = AHT.getSensor(&humi, &temp);
    
    if(ret) {    // GET DATA OK
//    temp = temp *9/5+32;
       temp = 74.12345;
       oled.SSD1306Ascii::setCursor(1*8,0);
       oled.print(temp,1);
    }
    else {       // GET DATA FAIL
        Serial.println("GET DATA FROM AHT20 FAIL");
    }
    
    delay(10000);
}

// --- eof ---
2 Likes