Hallo Leute,
ich bin neu im Forum und bei der Arduino Programmierung, auch in C oder C++ bin ich nicht Fit.
Ich habe einen Uno, und die Arduino IDE 2.2.1 Version.
Ich habe jetzt viel gelesen und ausprobiert aber manches ist mir nicht klar. Da würde ich gerne um Eure Unterstützung bitten.
Ich möchte Daten nach dem Ausschalten beibehalten dazu sollen diese auf einer SD-Karte in einer Textdatei gespeichert werden.
SD-Karte schreiben lesen erst einmal kein Problem. Aber die Weiterverarbeitung funktioniert nicht so wie ich es mir wünsche.
Eine Zahl die in eine txt-Datei geschrieben ist wird als String eingelesen, diesen String möchte ich wieder als Zahl einer Variablen zuweisen je nach größe Integer oder Long.
Ich lese den String ein, char für char wandle jedes char in einen int Wert und möchte diese dann mit der zugehörigen Potenz multiplizieren und die Summe bilden. Bin mir nicht sicher ob dies der richtige Weg ist aber ein anderer hat sich mir nicht erschlossen.
Gespeicherte Zahl in Text-Datei = 12345
char TEST[10];
while (myFile.available()) {
TEST[i] = myFile.read();
++i;
}
Serial.print("Jetzt Test : ");
Serial.println(TEST);
Serial.print("Jetzt -500 : ");
Serial.print(TEST - 500);
Das gibt auf dem Serial Monitor ausgegeben folgendes Ergebnis:
Serial.print("Jetzt Test : "); & Serial.println(TEST); -> Jetzt Test : 12345
Serial.print(TEST - 500); -> Jetzt -500 : u5���0
Somit ging die Suche los was man da machen kann um eine Zahl zu gewinnen
toint() und atoi() hat nicht funktioniert
Dann habe ich folgendes angefangen:
int b = 0;
int c = 0;
int d = 0;
int Lange = 0;
int expo = 0;
for (int zaehler=0; zaehler<Lange; zaehler = zaehler+1) {
Serial.print("TEST = ");
Serial.println(TEST[zaehler]);
b = atoi(TEST[zaehler]); //dies scheint nicht zu funktionieren??
Serial.print("b = ");
Serial.println(b);
Serial.print("Lange = ");
Serial.print(Lange);
Serial.print("; zaehler = ");
Serial.print(zaehler);
expo = Lange - 1 - zaehler;
Serial.print("; expo = ");
Serial.print(expo);
c = pow(10, expo);
Serial.print("; c = ");
Serial.println(c);
d = d + b * c;
Serial.print("d = ");
Serial.println(d);
Serial.println(pow(10, Lange - 1 - zaehler));
Serial.println(c); //Berechnet = Berechnet +
}
Ergebniss der Schleife:
alles Gedruckt
dat1.txt geschlossen
--> erster Schleifendurchgang
TEST = 1
b = 0
Lange = 5; zaehler = 0; expo = 4; c = 9999
10000.00
9999
--> zweiter Schleifendurchgang
TEST = 2
b = 0
Lange = 5; zaehler = 1; expo = 3; c = 999
d = 0
1000.00
Also Warum ergibt
-> Serial.println(c); = 999 -> mit c = pow(10, expo);
aber
-> Serial.println(pow(10, Lange - 1 - zaehler)); = 10000.00 -> warum?
und warum ergibt: b = atoi(TEST[zaehler]); immer = 0 (TEST kann immer nur 0,1, 2, 3.... oder 9 sein)
Wie kann ich in eine Textdatei eine Zahl speicher und wieder auslesen?? Ich komme da einfach
nicht weiter, da ich nicht weiß ist der Fehler im C-Programm, bei den Befehlen oder liegt es an etwas anderem?
Wäre SUPPER wenn Ihr mir helfen könnt oder einen Tipp geben könnt.
Vielen Dank und LG
Hampo