kleines problem mit snprintf

hallo zusammen,

ich würde gerne auf einem OLED display, das nur strings akzeptiert, ein float (temperatur) darstellen...

versucht hab ichs mit:

char temp[6];

snprintf(temp, 6, ("%.1f"), Temperatur);

u8g.drawStr( 0, 15, temp);

Serial.println(Temperatur);

Serial.println(temp);

Temperatur ist der temperaturwert (zb 23.15) der vom sensor kommt...

diese u8.... ist die funktion für die libary für das display.

angezeigt wird (display und serialer monitor) nur "?"

Temperatur wird im serialen monitor normal angezeigt

vielen dank, im vorraus !

Ich habe das vor einiger Zeit so gelöst:

  // Temperaturwert in Grad Celsius vom Sensor lesen
  TempWert = TemperatureSensor.readTemperature();

  int MessWert = (TempWert / 1000); 
  char Ausgabe[1024];
  
  // Ausgabewert formatieren
  int vorKomma = MessWert / 10; // zwei Nachkommastellen "abschneiden"
  int nachKomma = MessWert % 10; // zwei Nachkommastellen "isolieren"
  sprintf (Ausgabe, "%d,%d", vorKomma, nachKomma);

Ausgabe geht auf das Display. In meinem Fall war es allerdings ein 20x4-LCD. Aber auch hier ging es nur mit Strings, muss evtl. für deinen Gebrauch angepasst werden.

%f geht auf dem AVR nicht. Das ist deaktiviert, da dass das Programm um 1-2kB aufblähen würde auch wenn man es nicht verwendet.

Um Floats zu formatieren gibt es dtostrf(): http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html#ga060c998e77fb5fc0d3168b3ce8771d42 https://www.mikrocontroller.net/topic/86391

Die u8glib kann mehr als nur Strings darstellen! Dann müsstest du vorher die Zahl einfach splitten. -> Basics

dank ! mit dtostrf hats geklappt (;