Sketch "Sortieren"

Moin Moin,

ich verwende folgenden Sketch um Analog die Temperatur + Digital die Temperatur und Luftdruck messen.

[code]
#include <Wire.h>
#include <Adafruit_BMP085.h>  // Adafruit Bibliothek einbinden

Adafruit_BMP085 bmp;

int tempPin = A4; // TMP-36-Temperature
int tempReading = 0;
float temperatureC = 0;
float temperatureF = 0;
const int interval = 10*100; // interval between sensor read, in ms
long lastReadTime = 0;        // the last time you read the sensor, in ms

void setup(){
pinMode(16, OUTPUT);
 // Seriellen Monitor aktivieren
 Serial.begin(19200);

 // Sensor initialisieren
 if (!bmp.begin()) {
  Serial.println("Keinen gültigen BMP085 Sensor gefunden!");
  while (true) {}
 }
}

void loop(){

 Serial.print("Temperatur:");
 // readTemperature() Temperatur °C auslesen und anzeigen
 Serial.print(bmp.readTemperature());
 Serial.print(" ");  // Hier müssen wir ein wenig tricksen
 Serial.write(176);  // um das °-Zeichen korrekt darzustellen
 Serial.println("C");

 Serial.print("Luftdruck: ");
 // readPressure() Luftdruck in Pa auslesen und anzeigen
 Serial.print(bmp.readPressure());
 Serial.println(" Pa");

 Serial.print("Hoehe: ");
 // readAltitude() Höhe in meter auslesen und anzeigen
 Serial.print(bmp.readAltitude());
 Serial.println(" meter");
 
   // get the current time in ms:
  long currentTime = millis();
  if (currentTime > lastReadTime + interval) 

    // READ TEMPERATURE
    tempReading = analogRead(tempPin);

    // convert readings to voltage, using 5V battery
    float tempVoltage = tempReading * 5.0;
    tempVoltage /= 1024.0;
    
    Serial.println ("(*C) \t(*F)");
    // now print out the temperature degrees C
    temperatureC = (tempVoltage - 0.5) * 100 ;
    Serial.println("\t"); 
    Serial.print(temperatureC);

    // now convert to Fahrenheight
    temperatureF = (temperatureC * 1.8) + 32.0;
    Serial.print("\t"); 
    Serial.println(temperatureF); 

    // update the time of the most current reading:
    lastReadTime = millis();

 Serial.println(""); // Leerzeile anzeigen
 delay(1000);      // 0.5 Sekunden warten
  }

[/code]

Wenn ich mir den Sketch auslesen lasse kommt mit jedem Tick folgendes:

Temperatur:24.27 °C
Luftdruck: 100638 Pa
Hoehe: 57.61 meter
(*C) 	(*F)
	
24.71	76.47

Das finde ich etwas unübersichtlich oder besser gesagt unsortiert.

Ich kenne mich leider nicht gut genug mit Arduino aus um dies jetzt besser zu visualisieren...
Ich würde gerne eine Art "Timeline" haben, so dass man sieht in welcher Sekunde welcher Wert gelesen wurde...

Ich freue mich über jede Antwort. Danke :slight_smile:

millis() gibt dir die Anzahl der Millisekunden seit dem Start zurück. Du kannst z.B. auch millis() / 1000 ausgeben

Wenn du eine richtige Uhrzeit willst, brauchst du eine Real Time Clock

Hallo,

die millis() Funktion haste schon drin. 3. Zeile von unten.
Was Du damit machst, ist Dein Problem. :wink:

Die Reihenfolge und Formatierung in Deinem seriellen Monitor hängt nur davon ab, in welcher Reihenfolge Du die Serial.print() Ausgaben angibts. Nach Serial.println() fängt eine neue Zeile an.

Du kannst in Deinem Bsp. auch sämtliche Ausgaben erst am Ende vom Sketch ausgeben lassen. Weil für jeden Wert eine Variable vorhanden ist. Genauso kannst Du noch eine Ausgabe hinzufügen mit lastReadTime.

Experimentiere damit bis es Dir gefällt. :wink: