Hallo Leute,
ich habe diese Werte als .txt Datei auf der SD-Karte:
0.000000 ; 0.587759 ; -0.256313 ; -0.260647 ; -0.093224 ; -0.195787 ; -9.930157
0.010000 ; -0.071264 ; -0.018506 ; 0.774013 ; 0.080251 ; -0.486344 ; -9.915776
0.020000 ; 0.082807 ; -0.166837 ; -0.124259 ; -0.305346 ; -0.468850 ; -9.858902
0.030000 ; -0.268074 ; 0.500416 ; -0.710785 ; 0.131093 ; -0.463167 ; -9.819186
0.040000 ; 0.834082 ; 0.269191 ; 0.032760 ; -0.223208 ; -0.659480 ; -10.068884
Diese möchte ich einlesen und Zeile für Zeile jeweils sieben Variablen zuordnen.
Sprich:
- Alle sieben Werte der ersten Zeile den jeweils sieben Variablen zuordnen.
- Diese sieben Werte in void loop einmal verarbeiten
- Alle sieben Werte der zweiten Zeile neu den sieben Variablen zuordnen und die alten überschreiben.
- Diese wieder verarbeiten usw....
Wäre sehr dankbar für Hilfe! 
Danke!
Warum beginnst Du dafür ein neues Thema? Du hast doch in Deinem anderen Thread bereits Hinweise dazu bekommen, wie Du das machen kannst.
Ich würde an Deiner Stelle nicht 7 einzelvariablen, sondern ein Array nutzen.
Gruß Tommy
Sorry, dachte das ist ein allgemeines Problem...
Ja bekomme es aber leider nicht richtig hin, wäre dankbar für ein Beispiel
Gruß Chris
Du hast bereits im anderen Thread Hinweise auf strtok bekommen und die Lib SdFat. Warum liest Du Dich nicht in die Grundlagen ein und baust Deine Lösung schrittweise auf, sondern wartest, dass jemand Deinen Sketch schreibt?
Gruß Tommy
Ja das weiß ich.
ich finde leider nur nirgends passende Infos bzw. Beispiele
In der Lib sind Beispiele dabei. Fange damit an. Lesen musst Du aber schon selbst. Du lernst nichts, wenn wir Dir alles vorkauen.
Gruß Tommy
Danke für die Hilfe...
Verbringe bereits zwei Tage damit...
Erwarte nicht immer ein Beispiel genau zu deiner Anwendung! Programme ergeben sich daraus dass man Teile zusammensetzt. Dann reicht ein Beispiel wie man eine Zeile einliest. Und eins wie man einen String splittet und konvertiert. Zerlege dein Problem in Teil-Aufgaben und löse das Schritt für Schritt
#include <SD.h>
const byte NUM_VALUES = 7;
float values[NUM_VALUES];
File file;
void setup()
{
Serial.begin(9600);
SD.begin();
file = SD.open("Test.txt", FILE_READ);
getData();
Serial.println("Ende");
file.close();
}
void loop()
{
}
void getData()
{
while (char* buffer = getLine()) //solange machen wie Zeilen da sind
{
byte index = 0;
char* ptr = strtok(buffer, ";");
while (ptr != NULL && index < NUM_VALUES)
{
values[index++] = atof(ptr);
ptr = strtok(NULL, ";");
}
for (byte i = 0; i < index; i++)
{
Serial.print(values[i], 6);
Serial.print(" ; ");
}
Serial.println();
}
}
char* getLine()
{
static char buffer[90];
static byte index;
while (file.available())
{
char c = file.read();
if (c == '\n') //Zeilenende erreicht
{
buffer[index] = '\0';
index = 0;
return buffer;
}
else if (c >= 32 && index < sizeof(buffer) - 1)
{
buffer[index++] = c;
}
}
return NULL;
}
Kann man auch speicher-schonender machen wenn man nur immer einen Wert statt die ganze Zeile einliest. Aber das ist etwas komplizierter