Daten auf SD karte mit excel speichern unter verwendung von cvs

Hallo ich versuche meine daten, die ich durch eine rtc und einen dht22 im seriellen monitor ausgeben kann nun über cvs auf eine sd karte und auf excel zu übertragen... habe wirklich keine ahnung wie ich das anstellen soll deswegen benötige ich dringend hilfe
danke schon im vorraus

Hier noch mein Arduino sketch

#include <RTClib.h>
#include <DHT.h> // Bibliothek
#include <Wire.h>
//#include <Wire.h>
//#include <LiquidCrystal_I2C.h> // Using version 1.2.1
//#define FLOATTOSTR(s,f,d) sprintf((s),"%0d,%d",(int)(f),abs((int)(((f)-(int)(f))*pow(10,(d)))))

// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
//LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define DHTPIN 9 // Pin 9 als Datenpin
#define DHTTYPE DHT22 //Sensor Typ wird festgelegt
DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 RTC;
void setup()
{
Serial.begin(9600);
Serial.println("DHT22 - Test!");
//lcd.begin(16,2); // sixteen characters across - 2 lines
// lcd.backlight();
dht.begin();
Wire.begin();
RTC.begin();
RTC.adjust(DateTime(F(DATE), F(TIME)));
if (! RTC.isrunning())
{
Serial.println("RTC is NOT running!");
//sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(DATE, TIME));
}
}
void loop()
{

float h = dht.readHumidity(); //Luftfeuchte auslesen | FLOAT sehr genauer Datentyp (7 Nachkommastellen)
float t = dht.readTemperature(); //Temperatur auslesen
/* float zahl = h;
float zahl1 = t;
char str[20];
char str1[21];
FLOATTOSTR(str1, zahl1, 2);
FLOATTOSTR(str, zahl, 2); */
delay(1000);

// Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben.
if (isnan(t) || isnan(h))
{
Serial.println("DHT22 konnte nicht ausgelesen werden");
}
else
{
Serial.print("Luftfeuchtigkeit: "); //Im seriellen Monitor den Text und
Serial.print(h); //die Dazugehörigen Werte anzeigen
Serial.println(" %");
Serial.print("Temperatur: ");
Serial.print(t);
Serial.println(" °C");
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');

if (now.hour() < 10) {
Serial.print('0');
}
Serial.print(now.hour(), DEC);
Serial.print(':');
if (now.minute() < 10) {
Serial.print('0');
} Serial.print(now.minute(), DEC);
Serial.print(':');
if (now.second() < 10) {
Serial.print('0');
}
Serial.print(now.second(), DEC);
Serial.println();
}
}

Die Programmbibliothek SdFat hat verschiedene Beispiele, so dataLogger.ino.

Tut mir leid aber ich kann damit leider nichts anfangen

Hallo,

naja, ein paar Gedanken wirst Du Dir schon machen müssen...
Hast Du schon eine SD-karte an Deinem Arduino dran?
Hast Du die Beispiele dazu wie man eine Datei anlegt usw. schon durchprobiert?
Wenn das klappt lege eine Datei deinname.csv auf der SD-Karte aus Deinem Sketch an und schreibe Deine Daten im csv-Format drauf.
Also ein Datensatz mit Zeilenendezeichen und Semikolon als Datentrenner.
Das geht dann auch mit print/println in eine Datei.

Das kannst Du vorher auch schon über die Serielle testen. Gib die Daten so aus, das sie jeweils in einer Zeile durch Semikolon getrennt im seriellen Monitor stehen.
Das kannst Du dann zum Test im Monitor mit Ctrl-A alles auswählen, mit Ctrl-C kopieren und in eine TExtdatei einfügen. Die muß Excel dann richitg laden und anzeigen können.

Gruß aus Berlin
Michael

@Williamduiono: Du solltest Deinen Sketch in Codetags setzen (</>-Button oben links im Forumseditor). Dann ist er für alle (besonders die Mobiluser) besser lesbar.

Wenn Du mit den Beispielen aus SdFat nichts anfangen kannst, dann fehlt es Dir an elementaren Grundlagen, die Du erst mal erlernen solltest.

Gruß Tommy

Hallo,

ich hab ja gestern schon mal eine Funktion zum Thema RTC hier eingestellt.

Wenn Du die Funktion aufrufst bekommst Du einen String zurück der Datum Uhrzeit in einem Excell lesbaren Format erstellt.

auf ähnliche Weise kann man in einer zweiten Funktion die Ergebniise des DHT an diesen String mit Semikolon getrennt dranhängen. Dabei gibts dann noch eine kleine Hürde :

float Zahlen werden mit dec punkt dargesellt also z.B 22.34. Excell kommt da nicht so gut mit klar weil es die Zahl dann als Text interpretiert. Ich habe dazu den Punkt in der zweiten Funktion gegen ein Komma ausgetauscht.

Als Ergebniss hast Du dann einen String den Du auf dem Monitor ausgeben kannst, und dann ebenso auf die SD Karte bekommst. Wie Du einen String auf die SD-Karte bekommst musst Du dir in dem Beispiel dazu ansehen.

Der String sollte dann in Etwa so aussehen.

2018-04-26 02:00:17; 23,28; 35,43

In Deiner CVS Datei stehen dann solche Zeilen untereinander. Die kann man dann so importieren.