wird ja.
Möchtest jetzt noch erklären warum du float und int mischt und was es wirklich sein soll?
wird ja.
Möchtest jetzt noch erklären warum du float und int mischt und was es wirklich sein soll?
Ich habe mir da aus dem Internet so zusammen gebastelt wie gesagt ich hab da nichts passendes gefunden und mein Verständnis reicht da nicht so weit
Warum wird hier ein int zu einem float und wieder zurück?
Tipp:
Durch stetes konvertieren werden Werte weder schöner, noch besser.
das int brauche ich später für weitere Anwendungen das ist nur ein kurzer Ausschnitt damit ich es besser verstehe was da gemacht werden muss
eigentlich will ich nur den neuen wert ins EEPROM schreiben und später weiter mit arbeiten
Leider musste ich mich von dem vorigen EEPROM verabschieden da der Arduino DUE kein EEPROM hat deshalb jetzt mit einem I2C FERM Breakout. ich habe diverse Tests mit verschiedenen Libraries durchgeführt doch ohne Erfolg.
#include "Adafruit_EEPROM_I2C.h"
Adafruit_EEPROM_I2C i2ceeprom;
#define EEPROM_ADDR 0x50
void setup() {
pinMode(3, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
Serial.begin(115200);
i2ceeprom.begin(0x50);
float wert = neuer_wert;
int neuer_wert = 0;
}
void loop() {
if (!( digitalRead(5) )) {
neuer_wert = ( neuer_wert + 50 );
delay( 500 );
}
if (!( digitalRead(6) )) {
neuer_wert = ( neuer_wert - 50 );
delay( 500 );
}
if (!( digitalRead(7) )) {
//speicher werte in EEprom
float wert = neuer_wert;
uint8_t buffer[2];
//schreibe
memcpy(buffer, (void *)&wert, 2);
i2ceeprom.write(0x00, buffer, 2);
//lese
delay( 500 );
}
if (!( digitalRead(3) )) {
//lese werte aus EEprom
float wert = neuer_wert;
uint8_t buffer[2];
//lese
i2ceeprom.read(0x00, buffer, 2);
memcpy((void *)&wert, buffer, 2);
Serial.print("lese wert: ");
Serial.println(wert, 0);
delay( 500 );
}
}
vielleicht kann mir da jemand helfen.
Warum als float?
habe mir das so zusammen gestückelt aus Beispielen doch da ist alles im Setup drin dort geht es auch
und wenn ich das float weg nehme meldet da System buffer ist nicht deklariert
Du sollst es ja auch nicht wegmachen. Du sollst überlegen welcher Datentype richtig ist.
float = kommazahl
Schau mal unter Arduino-Referenz - Arduino-Referenz nach Datentypen. Du brauchst wahrscheinlich einen Integertype
Und noch was: Du solltest die auch noch mal ansehen wo man Variablen deklariert und wo sie dann zugreifbar sind. Englisch: scope. Was du im Setup deklarierst, ist im loop nicht da!
ja ich bin Anfänger deshalb komme ich nicht weiter
wenn ich int wert = neuer_wert nehme bekomme ich die Meldung i2ceeprom.read(0x00, buffer, 2); was not declared in the scope
#include "Adafruit_EEPROM_I2C.h"
Adafruit_EEPROM_I2C i2ceeprom;
#define EEPROM_ADDR 0x50
int neuer_wert = 0;
void setup() {
pinMode(3, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
Serial.begin(115200);
i2ceeprom.begin(0x50);
}
void loop() {
if (!( digitalRead(5) )) {
neuer_wert = ( neuer_wert + 50 );
delay( 500 );
}
if (!( digitalRead(6) )) {
neuer_wert = ( neuer_wert - 50 );
delay( 500 );
}
if (!( digitalRead(7) )) {
//speicher werte in EEprom
uint8_t buffer[2];
//schreibe
memcpy(buffer, (void *)&neuer_wert, 2);
i2ceeprom.write(0x00, buffer, 2);
delay( 500 );
}
if (!( digitalRead(3) )) {
//lese werte aus EEprom
uint8_t buffer[2];
i2ceeprom.read(0x00, buffer, 2);
memcpy((void *)&neuer_wert, buffer, 2);
Serial.print("lese wert: ");
Serial.println(neuer_wert);
delay( 500 );
}
}
ja danke jetzt geht es ich komme weiter vielen Dank
Hallo,
das was du neu hast, ist das EEprom oder ein FRAM?
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.