INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
sd.h mit tinyFat.h kombinieren?
20.06.2014, 19:44 (Dieser Beitrag wurde zuletzt bearbeitet: 20.06.2014 19:50 von ArduTux.)
Beitrag #9
RE: sd.h mit tinyFat.h kombinieren?
Supi, Danke für die Infos. Das wird natürlich umgebaut Smile
Zitat:Wo war die erste Frage
Das war die Thread-Frage Tongue =>
Zitat:Ich möchte jetzt mal Wissen ob ich die beiden Librays zusammen in einem Sketch Laden kan?

KLAR MIT JA ZU BEANTWORTEN!

Nach dem ich für die Integer, welche man ja durchaus auch als float deffinieren könnte, das UP/DOWN fertig gecodet hatte. Hab ich mir aber dann das float geschenkt, da ich von dem DHT11 zwar ein float Wert bekomme dieser aber stets ".00" ist. Müsste ich mal schaun wie die Abfrage sein muss damit er auch den Wert zeigt der nach dem Komma steht. Oder die Lib rundet das stehts auf .00 .... noch keine idee hab weil bisher nicht wichtig. Tongue

Dazu kommt ja das ich am Touch-Screen die Hysterese Soll-Werte Setzen oder Speichern kann, je nach Button-Press. Da macht es wenig Sinn Temperatur oder Luftfeuchte bis auf Kommastelle vorgeben zu müssen. Für meine Übungen völlig ausreichend das UP/DOWN Szenario als Integer zu bauen.

Für PH/EC ist eine Kommastelle schon zwingend die 2. ist nicht mehr so zwingend da das Einsatzgebiet eher nur ungefähr Werte verlangt. Eine Regulierung der Werte wäre abhängig von der Dosieranlage die dahinter hängt. Und mit den Toleranzen die meine Bastelbaugruppen so haben sinnlos.

Aus dem Grund werden die PH/EC Werte nur vorgegeben um ALARM zu Schalten. Damit sieht man ja genug und die Übung ist geschafft Cool

gruß

In unserer Gesellschaft ist das Gehirn am gerechtestesten Verteilt! Jeder glaubt, er habe genug davon.
Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.06.2014, 18:23 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2014 13:25 von ArduTux.)
Beitrag #10
RE: sd.h mit tinyFat.h kombinieren?
Hallo Arduino´´s
Damit das Ganze nen rundes Ende hat, hier noch schnell das Resultat meines Schaffens Big Grin
So sieht es jetzt bei mir aus wenn ich floats mit 1-digit auf SD-Card Speichern möchte. Ich habe mal MIN & MAX genommen.
Code:
void SAVE_TEST_HYST(float val_min, unsigned int prec_min, float val_max, unsigned int prec_max){
//---------------------------------------------- -delete old file
SD.remove("/HYST/TEST.TXT");
delay(100);
//---------------------------------------------- -open new file
sdFile = SD.open("/HYST/TEST.TXT", FILE_WRITE);
if (sdFile){
//---------------------------------------------- -write min value
sdFile.print (int(val_min));
sdFile.print(".");
unsigned int frac_min;
if (val_min >= 0)
frac_min = (val_min - int(val_min)) * prec_min;
else
frac_min = (int(val_min) - val_min ) * prec_min;
int frac_min1 = frac_min;
while ( frac_min1 /= 10 )
prec_min /= 10;
prec_min /= 10;
while (prec_min /= 10)
sdFile.print("0");
sdFile.print(frac_min, DEC) ;
sdFile.print(";");
//---------------------------------------------- -write max value
sdFile.print (int(val_max));
sdFile.print(".");
unsigned int frac_max;
if (val_max >= 0)
frac_max = (val_max - int(val_max)) * prec_max;
else
frac_max = (int(val_max) - val_max ) * prec_max;
int frac_max1 = frac_max;
while ( frac_max1 /= 10 )
prec_max /= 10;
prec_max /= 10;
while (prec_max /= 10)
sdFile.print("0");
sdFile.print(frac_max, DEC) ;
sdFile.print(";");
sdFile.close();
}
//---------------------------------------------- -error massage
else {
myGLCD.print("ERROR opening TEST.TXT", CENTER, 190);
delay(1000);
}
//---------------------------------------------- -done
}

Ich habe nocheinmal die aktuelle setPH_EC_HYST.ino als Anhang mit Eingestellt.
Wer das ganze vereinfachen, verbessern kann/möchte, sollte keine Hemmungen haben. Code "klein" machen ist ja immer schöner so lange es funktioniert Cool

Jetzt noch, wie bei den Integern, das wieder Einlesen zusammen Basteln... Coden kann ich ja nicht Shy

EDIT:
Hier noch das Wiedereinlesen Smile
Code:
sdFile = SD.open("/HYST/PH1.TXT");
while (sdFile.available()) {
bool MAPH1_present;
MIPH1 = sdFile.parseFloat();
MAPH1_present = false;
if (sdFile.read() == ';') {
MAPH1_present = true;
MAPH1 = sdFile.parseFloat();
}
sdFile.close();
}
Beim Speichern habe ich noch einen kleinen Bug Sad aber den erwische ich auch noch.
gruß


Angehängte Datei(en)
.ino  setPH_EC_Hyst.ino (Größe: 13,56 KB / Downloads: 33)

In unserer Gesellschaft ist das Gehirn am gerechtestesten Verteilt! Jeder glaubt, er habe genug davon.
Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2014, 16:30 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2014 17:32 von ArduTux.)
Beitrag #11
RE: sd.h mit tinyFat.h kombinieren?
Eine abschließende Frage hab ich dann doch noch Big Grin

Gibt es für das Schreiben der float´s etc. nicht auch so eine "einfach" zu händelnde Stream Möglichkeit?
Ich finde das für Ardino C++ viel schöner Cool
Dazu muss ich sagen, das ich früher Siemens S5 und später ne Zeitlang S7/WinCC gecodet hab. Daher bin ich natürlich von solchen GUI-CODEING Oberflächen verwöhnt.

gruß

Hallo Arduino´s
Es läuft gerade so gut das ich mir selbst die Fragen beantworten kann Tongue

ALSO Cool
Read/Write Files auf SD-Card in Verzeichnisse funktioniert prima. Ich habe gerade die 2 folgenden Sachen ausprobiert.

1. Integer & Float´s read/write in Verzeichnisse.

write:
Code:
void SAVE_PH1_HYST(float val_min, float val_max){
//-------------------------------------------------- -delete old file
SD.remove("/HYST/PH1.TXT");
delay(100);
//---------------------------------------------------- -open new file
sdFile = SD.open("/HYST/PH1.TXT", FILE_WRITE);
if (sdFile){
sdFile.print(float(val_min), 1);
sdFile.print(";");
sdFile.print(float(val_max), 1);
sdFile.print(";");
sdFile.close();
}
//---------------------------------------------------- -error massage
else {
myGLCD.print("ERROR opening PH1.TXT", CENTER, 190);
delay(1000);
}
//---------------------------------------------------- -done
}
Anmerkung: Wenn mann die digits Angabe bei "val_max), 1" weg lässt benutzt er automatisch 2 Stellen nach dem Komma, zumindest bei mir hier.

read:
Code:
sdFile = SD.open("/HYST/PH1.TXT");
while (sdFile.available()) {
bool MAPH1_present;
MIPH1 = sdFile.parseFloat();
MAPH1_present = false;
if (sdFile.read() == ';') {
MAPH1_present = true;
MAPH1 = sdFile.parseFloat();
}
sdFile.close();
}
Für Inteeger ist es jetzt ja für Anfänger nicht schwer auf der Seite das passende zu meinem Code zu finden.

Das ganze läuft paralell zu der tinyFat und der UTFT_tinyFat die ich ja für das Laden von Images im RAW-Format benutze.

So gefällt mir der Code viel besser, dazu habe ich noch ungefähr kapiert wie man so einen float-Wert auseinander nehmen kann Tongue

Ich hoffe die Lösung funktioniert auch dauerhaft,nicht das es jetzt gerade alles nur Zufall ist.

gruß

In unserer Gesellschaft ist das Gehirn am gerechtestesten Verteilt! Jeder glaubt, er habe genug davon.
Hardware: SainSmart Mega 2560 R3 + 3,2" LCD-Touch-Screen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2014, 17:51
Beitrag #12
RE: sd.h mit tinyFat.h kombinieren?
Hallo ArduTux,

na da hab ich wieder was gelernt.
Den Cast kannte ich ja schon, parseFloat() jedoch noch nicht.
Forenarbeit wie sie sein sollExclamation


Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  handle read-write dir-files with tinyFat ArduTux 4 1.350 29.05.2014 22:03
Letzter Beitrag: ArduTux

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste