expected primary-expression before 'Meldung'

vielen Dank!
zur Info: ich bin Maschinenschlosser in Pension und hatte vor Jahren etwas Kentnis über Basic, Arduino bringt mich ordentlich ins schwitzen :
Whandall - ich muss mich für meine vorige unpräzise Fragestellung entschuldigen, zuvor hast du mir empfohlen auf normalen Arduino zu verzichten - welches Gerät würdest du mir empfehlen

dein Programmvorschlag ist sehr kompakt (verstehen tue allerdings wenig davon) und funktioniert ausgezeichnet

sprintf(meldung, "%2d %2d %d", temperature, humidity, int(floatGewicht * 10));
  Serial.println(meldung);
  Serial.println(floatGewicht);

liefert bei 10 kg aufgelegtem Zucker

23 36 101
10.13

zur Zeit bin ich im Internet auf der Suche was hier "%2d %2d %d" bedeutet, bin aber noch nicht fündig geworden

http://www.cplusplus.com/reference/cstdio/printf/
https://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html#gaa3b98c0d17b35642c0f3e4649092b9f1

printf ist eine C Standard Funktion zur Ausgabe. Auf dem AVR steht eine leicht abgespeckte Version davon zur Verfügung

Whandall:
Auf "normalen"* Arduinos verzichtest du besser völlig auf die Benutzung der String Klasse,
der Speicher dieser Arduinos reicht einfach nicht aus.

  • mit normal meine ich Uno, Nano, Micro, Mini, Mega

Ich empfehle kein anderes Gerät, sondern den Verzicht auf die String Klasse.

Wenn man unbedingt Strings nutzen will sollte man einen ESP8266 oder besser einen ESP32 benutzen,
die sich mit der Arduino IDE programmieren lassen.

AVR Function vfprintf() beschreibt die Steuerzeichen für den AVR gcc.

Edit:

Warum willst du nicht wie von mir vorgeschlagen runden?

sprintf(meldung, "%2d %2d %d", temperature, humidity, int(floatGewicht * 10));
floatGewicht = (offsetk * floatGewicht + offsetd) * 10;
sprintf(meldung, "%2d %2d %d", temperature, humidity, (int)(floatGewicht + 0.5));

die Umstellung habe ich gemacht um die Auswertung floatGewicht mit Dezimalstellen anzeigen zu können um einen Vergleich zu haben
die + 0.5 habe ich nicht verstanden da sie für mich nur eine Addition eines imaginären Gewichtes bedeutet, liege ich da falsch? oder trägt es zur Rundung bei?
zur Zeit läuft das Programm wieder so wie du vorgeschlagen hast

(int) schneidet den Wert ab, es rundet nicht.

void setup() {
  Serial.begin(250000);
  for (float x = 1.0; x < 2.1; x += .1) {
    Serial.print(F("(int) "));
    Serial.print(x, 1);
    Serial.print(F(" = "));
    Serial.print((int)x);
    Serial.print(F(", (int)("));
    Serial.print(x, 1);
    Serial.print(F("+.5) = "));
    Serial.println((int)(x + .5));
  }
}
void loop() {}
(int) 1.0 = 1, (int)(1.0+.5) = 1
(int) 1.1 = 1, (int)(1.1+.5) = 1
(int) 1.2 = 1, (int)(1.2+.5) = 1
(int) 1.3 = 1, (int)(1.3+.5) = 1
(int) 1.4 = 1, (int)(1.4+.5) = 1
(int) 1.5 = 1, (int)(1.5+.5) = 2
(int) 1.6 = 1, (int)(1.6+.5) = 2
(int) 1.7 = 1, (int)(1.7+.5) = 2
(int) 1.8 = 1, (int)(1.8+.5) = 2
(int) 1.9 = 1, (int)(1.9+.5) = 2
(int) 2.0 = 2, (int)(2.0+.5) = 2

+0,5 und dann auf int zuweisen ist quasi Runden, weil die Zuweisung einfach den Nachkommateil abschneidet.
Also
4,1 + 0,5 = 4,6 --> 4
4,5 + 0,5 = 5,0 --> 5

Also ab x,5 wird aufgerundet.

Gruß Tommy

jetzt verstehe ich, vielen Dank