05-04-2020, 09:12
(02-04-2020, 19:28)kaczakat napisał(a): Liczba trzycyfrowa to wystarczy zmienna int. Tu masz przykład zapisu dowolnej* zmiennej lub całego ich zestawu:Dzięki
Kod:#include <EEPROM.h>
int minuta;
byte godzina;
byte flagazapisu;
float temperatura;
int address;
struct save {
byte godz;
int minuta;
float temp;
};
save zmiennakonfiguracyjnatypusave ={ 22,55,22.22};
void setup() {
save dane2={0,0,0}; //nowa zmienna typu save
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
godzina=zmiennakonfiguracyjnatypusave.godz;
minuta=zmiennakonfiguracyjnatypusave.minuta; //to sa rozne zmienne
temperatura=zmiennakonfiguracyjnatypusave.temp;
Serial.println("co my tu mamy po uruchomieniu, zmienne domyslne z flash");
Serial.print("Godzina: ");
Serial.println(godzina);
Serial.print("minuta: ");
Serial.println(minuta);
Serial.print("Temperatura: ");
Serial.println(temperatura);
Serial.println("Zmienne domyslne z EEPROM");
flagazapisu=EEPROM.read(address);
if (flagazapisu==55)
{
address++;
EEPROM.get(address, dane2);
godzina=dane2.godz;
minuta=dane2.minuta; //to sa rozne zmienne
temperatura=dane2.temp;
Serial.print("GodzinaE: ");
Serial.println(godzina);
Serial.print("MinutaE: ");
Serial.println(minuta);
Serial.print("TemperaturaE: ");
Serial.println(temperatura);
}
else
{
Serial.println ("Nie bylo nic w EEPROMmie");
}
//zapisujemy nowe dane do EEPROM:
godzina++;
if (godzina>=24) godzina=0;
minuta++;
if (minuta>=60) minuta=0;
temperatura+=1;
if (temperatura>=100000) Serial.println("Pewnie już nie ma Eeprom, sporo zapisow");
zmiennakonfiguracyjnatypusave={godzina,minuta,temperatura};
dane2=zmiennakonfiguracyjnatypusave;//tylko tak dla jaj
address=0;
EEPROM.update(address, 55);
address++;
EEPROM.put(address, dane2);
zmiennakonfiguracyjnatypusave ={ 22,55,22.22};
address += sizeof(dane2); //Move address to the next byte after float 'f'.
EEPROM.put(address,zmiennakonfiguracyjnatypusave);
EEPROM.get(address, dane2);
godzina=dane2.godz;
minuta=dane2.minuta; //to sa rozne zmienne
temperatura=dane2.temp;
Serial.println("Zmienne odczyte z drugiego kompletu EEPROM");
Serial.print("GodzinaE2: ");
Serial.println(godzina);
Serial.print("MinutaE2: ");
Serial.println(minuta);
Serial.print("TemperaturaE2: ");
Serial.println(temperatura);
}
void loop() {
/* Empty loop */
}