Hallo an alle,
ich möchte die variable Kaffee_Zeit mit einen Taster um 10 hoch zählen was bei der Seriellen Ausgabe auch angezeigt wird, doch der neue Wert wird nicht im EEPROM gespeichert wo liegt da der Fehler ?
#include <EEPROM.h>
int Kaffee_Zeit = 500;
void setup() {
pinMode(3, INPUT_PULLUP);
Kaffee_Zeit = 500;
Serial.begin(9600);
float val1 = Kaffee_Zeit;
EEPROM.put(Kaffee_Zeit, val1);
Serial.println(val1, 0);
EEPROM.get(Kaffee_Zeit, val1);
}
void loop() {
if (digitalRead(3)) {
delay( 300 );
Kaffee_Zeit = ( Kaffee_Zeit + 10 );
delay( 50 );
float val1 = Kaffee_Zeit;
EEPROM.put(Kaffee_Zeit, val1);
Serial.println(val1, 0);
EEPROM.get(Kaffee_Zeit, val1);
}
}
schau mal:
scroll runter zu EEPROM put und EEPROM get
Lies was die beiden Parameter bedeuten.
Guck mal in deinen Sketch was du mit der Adresse machst.
combie
October 24, 2023, 2:15pm
3
Ist Kaffee_Zeit jetzt eine Adresse, oder ein Wert?
Umgang mit dem AVR EEPROM in der Arduino Umgebung.
(meine Art damit umzugehen)
Gerne wird das EEPROM für irgendwelche Konfigurationswerte verwendet, welche man nicht im Flash unterbringen möchte. Und genau darum soll es hier gehen.
Doku zur Library: EEPROM
Bitte jedes einzelne Kapitel sorgfältig lesen, sowohl die Beispiele, als auch die Funktionsbeschreibungen.
Ich werde es nicht hier ins deutsche übersetzen.
Auch nicht weiter erläutern.
Aber darauf aufbauen.
Den Fokus möchte ich hier au…
combie
October 24, 2023, 2:34pm
5
Dann solltest du ihn nicht als Adresse nutzen.
z.B. hier...
ich hab mal EEPROM.put(0, val1); gesetzt das geht aber auch nicht
und wie sieht nun EEPROM.get aus?
Immer den ganzen Sketch posten und auch schreiben was genau nicht geht.
"geht nicht" ist keine Fehlerbeschreibung!
ich habe es hin bekommen
#include <EEPROM.h>
int Kaffee_Zeit = 0;
void setup() {
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
float val1 = EEPROM.get(0, val1);
EEPROM.put(0, val1);
Serial.println(val1, 0);
EEPROM.get(0, val1);
Kaffee_Zeit = val1;
}
void loop() {
if (digitalRead(3)) {
delay( 300 );
Kaffee_Zeit = ( Kaffee_Zeit + 10 );
delay( 50 );
float val1 = Kaffee_Zeit;
EEPROM.put(0, val1);
Serial.println(val1, 0);
EEPROM.get(0, val1);
}
}
naja.
Stell dir mal die Frage, was das EEPROM.get in der letzten Zeile ganz genau machen soll.
ja das kann weg es wird nicht gebraucht
noiasca
October 24, 2023, 3:02pm
11
... und jetzt geh mal im Setup deine EEPROM Aufruf durch.
Was macht wirklich Sinn, was kann weg?
also da komme ich nicht weiter wenn ich was weg nehme dann geht es nicht mehr
wähe toll wen du mir da hilfst habe nicht viel Ahnung von der Materie
noiasca
October 24, 2023, 3:13pm
13
geh einfach alle 3 Aufrufe durch und hinterfrage was jeder Schritt macht.
EEPROM lesen
EEPROM schreiben
EEPROM lesen
und jetzt überleg mal was du bei einem Programmstart wirklic machen willst.
hab ich schon geschrieben. "Geht nicht" ist keine Fehlerbeschreibung. Was geht nicht? Was macht der Code dann? Was soll er statt dessen machen?
kolaha
October 24, 2023, 3:16pm
14
und was soll Adressen-/Wert als Type float darstellen?
hast du schon erwähnnt wieviel dein Board überhaupt EEPROM Platz hat?
nur lesen habe es jetzt so gemacht
#include <EEPROM.h>
int Kaffee_Zeit = 0;
void setup() {
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
float val1 = EEPROM.get(0, val1);
Serial.println(val1, 0);
EEPROM.get(0, val1);
Kaffee_Zeit = val1;
}
void loop() {
if (digitalRead(3)) {
delay( 300 );
Kaffee_Zeit = ( Kaffee_Zeit + 10 );
delay( 50 );
float val1 = Kaffee_Zeit;
EEPROM.put(0, val1);
Serial.println(val1, 0);
}
}
na ich lese den wert ein und kann ihn hoch setzen und er bleibt erhalten wenn ich den Stecker ziehe
vielen Dank für deine Hielfe
noiasca
October 24, 2023, 3:20pm
19
funktioniert also - gut.
Was macht der zweite EEPROM.get theoretisch im Setup?
ja der kann auch weg
#include <EEPROM.h>
int Kaffee_Zeit = 0;
int Wert_hoch = 0;
int Wert_runter = 0;
void setup() {
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
float val1 = EEPROM.get(0, val1);
Serial.println(val1, 0);
Kaffee_Zeit = val1;
}
void loop() {
if (digitalRead(3)) {
delay( 300 );
Kaffee_Zeit = ( Kaffee_Zeit + 10 );
delay( 50 );
float val1 = Kaffee_Zeit;
EEPROM.put(0, val1);
Serial.println(val1, 0);
}
}
1 Like