Int in String umwandeln (vermutlich)

Hallo Liebe Profis,

ich habe jetz lange gelsenen probiert und externe gefagt aber leider bin ich zu keinem Ergebniss gekommen.
Ich hoffe Ihr könnt mir helfen und ich finde eine Lösung mit eurer Hilfe

ich Würde gerne uber das OLED einen wert ausgeben der Als int eklariert ist. bekomme ihn aber nur angezeigt wenn er als int variable = "wert" eintrage.
ich habe schon itoa versucht aber das scheint nicht mehr zu gehen?! :confused: ich hab jetz Aktuell keine idee mehr.

Grüße
kai

wie bekomme ich das hin das ich die variable ändern kann und die dann auch neu berechnet angezeigt wird?

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

// The TinyGPS++ object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
 int Minuten = "5";
int Sekunden = "00";



void setup() {
  u8g2.begin();
    ss.begin(GPSBaud);
 
}

void loop() {

  u8g2.clearBuffer();          // clear the internal memory
  u8g2.setFont(u8g2_font_ncenB12_tr); // choose a suitable font
  u8g2.drawStr(0,12,"Start in:");  // write something to the internal memory
  u8g2.setFont(u8g2_font_fub42_tf); // choose a suitable font
  u8g2.drawStr(0,60,Minuten); 
  u8g2.drawStr(28,52,":"); 
  u8g2.drawStr(45,60,(Sekunden)); 
  u8g2.sendBuffer();  				// transfer internal memory to the display
  delay(1000);  
  
  
}

int Minuten = "5";
int Sekunden = "00";

Das ist Unsinn!
Du willst doch nicht an die Adressen, sondern die Values, oder?

int Minuten = 5;
int Sekunden = 0;

oder auch so:

char Minuten[] = "5";
char Sekunden[] = "00";

Ganz nach Belieben.
Aber keine freie Auswahl, und kein "Ich wünsche mir was."

Hallo,

ich kenne die lib nicht aber warum einmal one () und einmal mit ?

u8g2.drawStr(0,60,Minuten);
u8g2.drawStr(28,52,":");
u8g2.drawStr(45,60,(Sekunden));

Heinz

das das Unsinn ist weiß ich.

leider zeigt er dort

int Minuten = 5;
int Sekunden = 0;

keine daten an was ja mein problem ist

bei dem 2. zeigt er mir die daten an aber kann ich damit dann ein Zähler fünktion ausführen?

die () machen keinen unterschied hatte das nur stehen lassen als ich gestestet habe.

harlekai:
das das Unsinn ist weiß ich.

Und warum machst du es dann ?

Lerne mal was zu Datentypen. Die sind nicht beliebig austauschbar. Wenn eine Funktionen einen String erwartet kannst du nicht einfach einen Integer übergeben.

Entweder du findest eine Funktion die direkt einen Integer drucken kann (statt eine Funktion zu verwenden die einen String druckt) oder die verwendest eine Konvertierungsfunktion um einen C String draus zu machen

Hallo,

probieren !!

Du hast doch so ein schönes delay zum testen drin

eine Zeile davor

sekunden++;
Serial.print(sekunden);// wenn man bei dem den den Monitor nutzen kann.

Heinz

Danke Heinz für deine antwort

das hatte ich schon versucht und er zählt dann auch wie er soll

nur gibt er dann nur wilde zeichen raus ( dsa muss ja so weit ich dsa verstanden habe in ein anderes vormat umgewandelt werden) das ich das richtig ausgegeben bekomme. und da komme ich leider nicht weiter.

Hallo,

kann sein das die lib nur Cstrings haben will dann must du die umwandeln

C-Referenz

danke hab es :grinning:

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

// The TinyGPS++ object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
int Minuten = 5;
int Sekunden = 9;



void setup() {
  u8g2.begin();
    ss.begin(GPSBaud);
    Serial.begin(9600);
 
}

void loop() {

  u8g2.clearBuffer(); // clear the internal memory
 
  u8g2.setFont(u8g2_font_ncenB12_tr); // choose a suitable font
  u8g2.drawStr(0,12,"Start in:");  // write something to the internal memory
  u8g2.setFont(u8g2_font_fub42_tf); // choose a suitable font
  char bufm[8];
sprintf (bufm, "%d", Minuten);
  u8g2.drawStr(0,60,bufm); 
  u8g2.drawStr(28,52,":"); 
  char bufs[8];
sprintf (bufs, "%d", Sekunden);
  u8g2.drawStr(45,60,bufs); 
  
  u8g2.sendBuffer();  	// transfer internal memory to the display
  
   
    delay(1000);  
  
  
}

Hi

Danke für die Rückantwort :slight_smile:
Und viel Spaß mit dem funktionierendem Display

MfG