Ich würde jetzt etwas anderes testen wollen.
Und zwar würde ich gerne für 3 Stunden 6 Werte messen wollen. Also alle 30 Minuten einen Druckwert.
Von diesen 6 ausgegebenen Werten möchte ich den Mittelwert bilden, um zu gucken ob mein Druckwert in dem Toleranzbereich liegt. Die könnte man später natürlich auf 24h usw. hinauszögern aber ich würde erstmal für 3h testen wollen.
Um meine ausgegebenen Werte zu merken, dachte ich mir, dass ich auf dem EEPROM Speicher zugreife.
Also alle 30 Minuten soll ein Wert in den EEPROM Speicher eingeschrieben werden.
Wenn ich falsch liege korrigiert mich bitte, aber ich habe das so verstanden, dass ich nur byteweise speichern kann. Also müsste ich meine Werte in binär umwandeln und dann anschließend von bin in byte ?
Bevor ich einen Fehler mache und irgendwelche Daten speichere und lösche (man kann soweit ich weiß nur ca. 100.000 mal löschen und speichern), wollte ich mich mal hier informieren.
Ich habe folgenden Code aus dem internationalen Forum von "A||SySt3msG0" gefunden, mit dem man beliebige Werte umformatieren und einspeichern kann:
//This function will write a 2 byte integer to the eeprom at the specified address and address + 1
void EEPROMWriteInt(int p_address, int p_value)
{
byte lowByte = ((p_value >> 0) & 0xFF);
byte highByte = ((p_value >> 8) & 0xFF);
EEPROM.write(p_address, lowByte);
EEPROM.write(p_address + 1, highByte);
}
//This function will read a 2 byte integer from the eeprom at the specified address and address + 1
unsigned int EEPROMReadInt(int p_address)
{
byte lowByte = EEPROM.read(p_address);
byte highByte = EEPROM.read(p_address + 1);
return ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00);
}
void setup()
{
Serial.begin(9600);
EEPROMWriteInt(0, 0xABCD);
Serial.print("Read the following int at the eeprom address 0: ");
Serial.println(EEPROMReadInt(0), HEX);
}
void loop()
{
}
Wie kann ich das so realisieren, dass jede 30. Minute mein Wert in den EEPROM speicher geschrieben wird ?
Kann ich wieder eine "Zeitscheibe" definieren und und sagen, wenn die Zeit exakt 1800s beträgt, dass dann mein Wert dann im EEPROM eingeschrieben wird ?
Also:
static unsigned long Zeitscheibe = 0;
if (millis() - Zeitscheibe == 1800000) { // Zeitscheibe wird alle 1800000ms aufgerufen
Zeitscheibe_1 = millis();
....
}
Ich arbeite ehrlich gesagt zum ersten mal mit den EEPROMs und dem Abspeichern, und habe echt Probleme, meinen ausgegebenen Wert im EEPROM abzuspiechern.
Bin noch ein richtiger Anfänger in dem Thema.
Wäre für jede Hilfe dankbar.