TFT +UNO+BMP180 (Anfänger braucht Hilfe)

Hallo Leute,

ich habe mich mal daran versucht die Temperatur des BMP180 mit dem Arduino TFT Display auszuwerfen.
ich komme einfach nicht mehr weiter :frowning:

#include <Wire.h>
#include <Adafruit_BMP085.h>

#include <TFT.h>  // Arduino LCD library
#include <SPI.h>

// pin definition for the Uno
#define cs   10
#define dc   9
#define rst  8  

Adafruit_BMP085 bmp;


// create an instance of the library
TFT TFTscreen = TFT(cs, dc, rst);



void setup() {
  
  bmp.begin();
  TFTscreen.begin();

  // clear the screen with a black background
  TFTscreen.background(0, 0, 0);
  
  // write the static text to the screen
  // set the font color to white
  TFTscreen.stroke(0,255,0);
  // set the font size
  TFTscreen.setTextSize(1);
  // write the text to the top left corner of the screen
  TFTscreen.text("Temperatur=",10,0);
  // ste the font size very large for the loop
  TFTscreen.setTextSize(2);
}

void loop() {
    
  float temperature;
  
  temperature = (bmp.readTemperature());
  
  // set the font color
  TFTscreen.stroke(0,0,255);
  // print the sensor value
  TFTscreen.text(temperature, 0, 20);
  // wait for a moment
  delay(250);
  
  
  
}

Er wirft mir ständig diese Fehlermeldung raus

TFTDisplayTextbmp.ino: In function 'void loop()':
TFTDisplayTextbmp:63: error: no matching function for call to 'TFT::text(float&, int, int)'
C:\Users\User\Documents\Arduino\libraries\TFT/utility/Adafruit_GFX.h:166: note: candidates are: void Adafruit_GFX::text(const char*, int16_t, int16_t)

Hoffe auf schnelle Antworten und danke schonmal im voraus

Die Library kann wohl nur mir C Strings umgehen. Etwas limitiert.

In der Anleitung wird da ein sehr, sehr unschöner Umweg empfohlen:

Ein Arduino String Objekt erstellen und dann toCharArray(). Umständlicher geht es nicht mehr. Die String Klasse ist generell Murks, aber sie hat inzwischen die C++ Methode c_str() implementiert. Man braucht also nicht mehr ein extra Array anlegen, sondern kommt direkt an einen Zeiger auf das interne Array:

String valueString = String(valueFloat);
TFTscreen.text(valueString.c_str(), 0, 0);

Zwar immer noch mit String Klasse, aber wenigstens wird nicht noch zusätzlich ein Array gebraucht

Schöner ist meiner Meinung nach hier dtostrf():
http://www.mikrocontroller.net/topic/86391
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html#ga060c998e77fb5fc0d3168b3ce8771d42
Damit wandelt man einen Float Wert in einen C String um

Für Integer gibt itoa():
http://www.cplusplus.com/reference/cstdlib/itoa/

Danke für die schnelle Antwort :slight_smile:
Ich werde mich dann heute Abend mal wieder rann setzen :smiley: