Forum: PC-Programmierung uint16_t zu char konvertieren


von Christian H. (wegweiser2000)


Lesenswert?

Hallo,

ich habe ein ähnliches Problem und hoffe auf einen Rat wie ich ein 
uint16_t "Format" in ein am TFT augabefähiges char konvertieren kann.

Die RGB Farbwerte sollen als Zahl auf dem TFT Dispaly ausgegeben werden. 
Die Werte kommen aus einem TCS 34725 und werden parallel am seriellen 
Motior angezeigt.

Fehlermeldung:

invalid conversion from 'uint16_t {aka unsigned int}' to 'const char*' 
[-fpermissive]


Code:

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

// Pindefinition Uno TFT
#define cs   10
#define dc   9
#define rst  8



TFT TFTscreen = TFT(cs, dc, rst);

// char array to print to the screen
char WertRot ;


Adafruit_TCS34725 tcs = 
Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);

void setup() {


  TFTscreen.begin();


  TFTscreen.background(0, 0, 0);                 // Hintergrund schwaz
  TFTscreen.stroke(255, 255, 255);               // Vordergrund weiß
  TFTscreen.setTextSize(2);                      // Textgröße
  TFTscreen.text("Sensor Value :\n ", 0, 0);     //Test oben links



  TFTscreen.setTextSize(2);                      //Textgröße für 
Schleife

  // Serielle Kommunikation zur Ausgabe der Wert im seriellen Monitor
 Serial.begin(9600);
 Serial.println("ROT GRÜN BLAU Adafruit Sensor");

 // Überprüfen, ob Color Sensor sich auch zurückmeldet
 if (tcs.begin()) {
 // Alles OK
 Serial.println("Sensor gefunden");
 } else {
 // Kein Sensor gefunden. Programm an dieser Stelle einfrieren
 Serial.println("TCS34725 nicht gefunden ... Ablauf gestoppt!");
 while (1); // Fehler
 }

}

void loop() {


  // Der Sensor liefert Werte für R, G, B und einen Clear-Wert zurück
 uint16_t clearcol, red, green, blue;

 delay(100);
 tcs.getRawData(&red, &green, &blue, &clearcol);



 Serial.print("\Clear:  "); Serial.print(clearcol);
 Serial.print("\Red:    "); Serial.print(red);
 Serial.print("\Green:  "); Serial.print(green);
 Serial.print("\Blue:   "); Serial.print(blue);



 // Zeilenwechsel ausgeben
 Serial.println("");

 // Wartezeit anpassen für serielles Debugging
 delay(100);





  // set the font color
  TFTscreen.stroke(255, 255, 255);      //Frontcolor

  TFTscreen.text(blue, 0, 20);

  delay(250);
          //Anzeige updaten
  TFTscreen.stroke(0, 0, 0);



}

von Chris F. (chfreund) Benutzerseite


Lesenswert?

Du musst es in eine Zeichenkette schreiben/konvertieren.
Das geht z.B. mit itoa(), oder sprintf()

von Christian H. (wegweiser2000)


Lesenswert?

Deine Antwort war vollkommen richtig !


sprintf(bufferR "%d" ,red);


......


TFTscreen.text( bufferR  , 40, 80);


Funktioniert !


:-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.