Arduino Forum

International => Deutsch => Topic started by: edstaib on Apr 17, 2019, 11:01 am

Title: Mehrere double werte nebeneinander anzeigen
Post by: edstaib on Apr 17, 2019, 11:01 am
Hallo zusammen

Ich habe das Problem, dass ich mehrere Double Werte auf eine SDkarte speichern möchte. Jedoch kann ich diese nicht einzeln in ein FEld der csv datei schreiben sondern sie werden mir immer aufsummiert.
Kann mir da jemand helfen?

long tempinbitIR00 = 0;
double tempIR00 = 0;
long tempinbitIR01 = 0;
double tempIR01 = 0;
long tempinbitIR02 = 0;
double tempIR02 = 0;
long tempinbitIR3 = 0;
double tempIR3 = 0;

if (dataFile) {
      Serial.println("TEst01");
      dataFile.print(tempIR00 + tempIR01 + tempIR02 + tempIR3 + timenow);
      Serial.print(tempIR00 + tempIR01 + tempIR02 + tempIR3 + timenow); // print to the serial port too


Ergebniss:
tempIR00: -20.50
tempIR01: -20.12
tempIR02: -20.80
tempIR3: -21.20
TEst01
-82.62;2000/1/1 0:0:18


Wie müsste ich die einzelnen Werte angeben, damit sie nebeneinander angezeigt werden?
Title: Re: Mehrere double werte nebeneinander anzeigen
Post by: agmue on Apr 17, 2019, 12:03 pm
Versuche mal:

Code: [Select]
Serial.print(tempIR00);
Serial.print(';');
Serial.print(tempIR01);
Serial.print(';');
Serial.print(tempIR02);
Serial.print(';');
Serial.print(tempIR3);
Serial.print(';');
Serial.print(timenow);


Möglicherweise könnte Dir Streaming.h gefallen:

Code: [Select]
#include <Streaming.h>
...
Serial << tempIR00 << ";" << tempIR01 << ";" << tempIR02 << ";" << tempIR3 << ";" << endl;


Beispiele findest Du in der Bibliothek SdFat.
Title: Re: Mehrere double werte nebeneinander anzeigen
Post by: michael_x on Apr 20, 2019, 05:48 pm
+ wird nun mal zur Addition verwendet. 
Und das ist auch gut so. ;)
Title: Re: Mehrere double werte nebeneinander anzeigen
Post by: postmaster-ino on Apr 20, 2019, 07:59 pm
Hi

Gibt auch Sprachen, in Denen mit + Strings verknüpft werden - könnte bei PHP so gewesen sein (müsste nachschauen).

MfG
Title: Re: Mehrere double werte nebeneinander anzeigen
Post by: combie on Apr 20, 2019, 08:25 pm
Hi

Gibt auch Sprachen, in Denen mit + Strings verknüpft werden - könnte bei PHP so gewesen sein (müsste nachschauen).

MfG
Arduino kann das auch
Code: [Select]

     Serial.print(String() + tempIR00 + tempIR01 + tempIR02 + tempIR3 + timenow); // print to the serial port too





Code: [Select]
void setup()
{
 Serial.begin(9600);
 String a(2.55);
 float  pi = 3.14;
 Serial.println(a + " " + pi + " " + 42 + " " + 4711 + " " + 1.1 + F(" Rosinensalat"));

}

Aber was geht, muss nicht unbedingt gut sein
Title: Re: Mehrere double werte nebeneinander anzeigen
Post by: wapjoe on Apr 20, 2019, 08:47 pm
Hi

Gibt auch Sprachen, in Denen mit + Strings verknüpft werden - könnte bei PHP so gewesen sein (müsste nachschauen).

MfG
Von AutoIT und VBA, wahrscheinlich auch VB, kenne ich die Möglichkeit mit dem &-Zeichen, so was in der Art vermisse ich in C++/Arduino. Aber warum einfach wenn es auch umständlich geht, bzw. man gewöhnt sich irgendwann daran. ;)
Title: Re: Mehrere double werte nebeneinander anzeigen
Post by: postmaster-ino on Apr 20, 2019, 10:16 pm
Hi

Da auf dem AVR zumindest Strings (großes S) keine so gute Idee sind, stört das fehlende 'Zusammenkleben per +' nur bedingt.
Gerade bei dieser Kleberei wird einem sehr schnell der Speicher ausgehen, da ja beide vorhandenen Strings zusammengesetzt irgendwo Platz finden müssen - wobei der Kompiler schon gezeigt hat, daß Er weiß, was Er tut ... wenn man's aber nicht benutzt, fällt man damit aber auch nicht auf die Fresse.

MfG
Title: Re: Mehrere double werte nebeneinander anzeigen
Post by: Tommy56 on Apr 20, 2019, 11:34 pm
Von AutoIT und VBA, wahrscheinlich auch VB, kenne ich die Möglichkeit mit dem &-Zeichen, so was in der Art vermisse ich in C++/Arduino.
Das wäre doch mal die Idee: Du könntest VB auf den Arduino portieren ;)

Gruß Tommy
Title: Re: Mehrere double werte nebeneinander anzeigen
Post by: wapjoe on Apr 21, 2019, 12:37 am
Das wäre doch mal die Idee: Du könntest VB auf den Arduino portieren ;)

Gruß Tommy
lol
Das willst du und ich nicht wirklich... :D
Title: Re: Mehrere double werte nebeneinander anzeigen
Post by: dsyleixa on Apr 22, 2019, 09:28 am
Von AutoIT und VBA, wahrscheinlich auch VB, kenne ich die Möglichkeit mit dem &-Zeichen, so was in der Art vermisse ich in C++/Arduino. Aber warum einfach wenn es auch umständlich geht, bzw. man gewöhnt sich irgendwann daran. ;)
Basic/VB ist eine andere Sprache mit anderen Operatoren und anderer Syntax.
Arduino verwendet, wie richtig bemerkt, C++.
In C++ gibt es neben den ANSI-C-ctrings (nullterminierte char-arrays, die man mit strcat() aneinanderhängen kann) noch die std::string class (kleines s), in der man strings ebenfalls mit + verknüpfen kann.
Arduino hat diese std::strings nicht, weil sie extrem viel Speicher brauchen.
Stattdessen hat Arduino die String Class (großes S), die ziemlich ähnlich wie ein abgespecktes std::string funktioniert inkl. ebenfalls "+" fürs zusammenfügen, aber immer noch sehr viel Speicher braucht, oft zuviel für die kleinen AVRs.
Außerdem haben die AVRs (u.a. auch aus Speichergründen) gar kein echtes 64bit-"double" - "double" auf den AVRs ist schlicht dasselbe wie das ganz normale 32bit-float.
Weil man ständig mit diesen Mini-AVRs mit ihrem mickrigen 2-3kB Speicher solche RAM-Probleme hat, verwende ich (wie auch viele andere User) von vornherein den Mega2560 oder einen ARM (Zero/M0, Due/M3 oder M4 von Adafruit/Teensy) - dann kann man auch getrost String verwenden -  u.v.m.
Ein M0 oder M4 ist oft nicht größer als ein Nano (s. Adafruit Itsybitsy M0/M4 oder Feather M0/M4), es gibt die aber auch mit Uno/R3 oder Mega2560/R3-Platinenlayout (z.B. Adafruit Metro M4 oder Adafruit Great Central M4).

PS
eine weitere, wirklich mächtige und auch sehr praktische (wenn auch für Anfänger oft zu komplizierte) Funktion, um cstrings aneinanderzuhängen und perfekt (auch tabellarisch) zu formatieren, ist sprintf().
Bislang konnte man mit sprintf auf AVRs leider keine fp  (float oder double) formatieren (sondern nur auf ARMs, ebenfalls aus Speichergründen), inzwischen gibt es aber einen Patch, mt dem sich fp per sprintf auch auf AVRs zu einem cstring verarbeiten lassen (aber auch natürlich Zusatzspeicher braucht, wenn auch nicht so viel wie die String class).