Hallo,
ich bin gerade dabei mir eine Temperaturanzeige zu bauen benötige, benötige aber die Kommastellen nicht. Gibt es eine Möglichkeit diese nicht mit auszugeben, da ich nur einen 128x32 OLCD verwende ist der Platz wenig. Bin neu auf dem Gebiet und kenne mich wenig aus.
Danke für eure Hilfe
Weise es einer Ganzzahl zu.
Gruß Tommy
Hallo @k9ks
herzlich willkommen im Arduino-Forum.
Wenn du den Zahlenwert einer Integer-Variablen zuweist dann wird das Komma einfach abgeschnitten.
int myGanzzahlTemp;
myGanzzahlTemp = myFloatTemp + 0.5;
Das "+0.5" macht dann das auf/abrunden
vgs
Super Danke war doch einfacher als gedacht ![]()
... zumindest bei Zahlen >= 0 ![]()
Leider gibt es hier aktuell auch negative Temperaturen.
int i = -1.4 + 0.5; // ergibt 0
Etwas bechemet was schreibe aber funktioniert
int i = -1.4* -1 + 0.5;
man muss aber bei Anzeige " - " dazu Zeichen, oder neu auf Minus werte umrechnen
int a = 0;
if (x>0) a= x+0.5;
else a=x-0.5;
Gruß Tommy
Auch wenn das funktioniert, ist das if ein Kontrollfluss steuerndes Element.
Hier könnte auch ein Datenflusssteuerndes Element Verwendung finden.
int a = x + (x>0)?+0.5:-0.5;
PS:
Das ist keine Kritik, sondern nur eine Anmerkung/Erweiterung
Ist auch kürzer.
Gruß Tommy
ich würde verwenden was es schon gibt:
void setup() {
Serial.begin(115200);
float temp = -4.5;
Serial.println(round(temp));
}
void loop() {
}
Auch eine Variante!
Hallo zusammen,
Habe gerade das Gleiche Problem allerdings weiss ich nicht wie ich die Lösung Richtig einpflegen soll das es Funktioniert.
Vllt kann mir einer Helfen, Danke.
Zeige dein Code
weiß ich auch nicht weil ich dein Programm hier nirgends finden kann.
Hey Sorry habe vergessen das Programm hinzuzufügen, bin aber mittlerweile drauf gestoßen und habe es für mich gelößt herzlichen dank trotzdem.
Bis zum nächsten Problem ![]()
Du solltest deinen Code mit dem es jetzt läuft als kleines Dankeschön an die Community hier posten.
Sonst helfe ich dir nicht bei deinem nächsten Problem
Ahso ja klar kein Thema, gerne Teile ich den Code auch ohne Irgendwelche vorraussagen ob einem anhand dessen nochmal geholfen wird oder nicht, da ja man sehen kann das ich erst kürzlich Mitglied geworden bin könnte man mir das ja auch normal sagen, freue mich auf die weitere coderei mit euch.
#include <U8g2lib.h>
#include <max6675.h>
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
int BildschirmBreite = u8g2.getDisplayWidth();
int BildschirmHoehe = u8g2.getDisplayHeight();
int thermoDO = 8;
int thermoCS = 9;
int thermoCLK = 10;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
void setup(void) {
// Display starten
u8g2.begin();
// Kontrast maximal 255
u8g2.setContrast(200);
displayAnimation();
}
void loop(void) {
//do
//
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_profont22_tf); // choose a suitable font
double temp = thermocouple.readCelsius();
int temp2 = (int)(temp + 0.5);
u8g2.setCursor(55, 25);
u8g2.print( (String)(temp2)+(char)176 + "C" );
u8g2.sendBuffer();
while (u8g2.nextPage());
delay(2000);
}
void displayAnimation(void){
// Farbe weiß
u8g2.setDrawColor(1);
// Silouette
u8g2.firstPage();
//do
u8g2.sendBuffer();
while (u8g2.nextPage());
delay(1000);
u8g2.setFont(u8g2_font_seraphimb1_tr); // choose a suitable font
u8g2.drawStr(35, 28, "Astra G"); // write something to the internal memory
u8g2.sendBuffer(); // transfer internal memory to the display
delay(1000);
u8g2.clearBuffer();
u8g2.firstPage();
//do
delay(0);
u8g2.setFont(u8g2_font_seraphimb1_tr); // choose a suitable font
u8g2.drawStr(30, 28, "Oil-Temp"); // write something to the internal memory
u8g2.sendBuffer(); // transfer internal memory to the display
delay(1000);
u8g2.clearBuffer();
u8g2.firstPage();
}