Potřeboval bych uložit datum na ESP32 do paměti pomocí Preferences. Jelikož s ním dál nebudu pracovat jako s datumem, postačí mi ho uložit jako řetězec.
Co se týče číselných hodnot, není problém, ale s řetězcem mi to nějak nejde. Co dělám špatně?
Kód: Vybrat vše
#include <RTClib.h> // pro časový modul
#include <Preferences.h> // pro zápis hodnot (i vícebitových, desetinných, znaků apod. do trvalé paměti
Preferences preferences; // pro ukládání do trvalé paměti
RTC_DS3231 rtc; // časový modul DS3231
// časové řízení - začátek
uint8_t den, mesic;
uint8_t sekundy = 0;
uint8_t hodiny = 0;
uint8_t minuty = 0;
int rok;
// časové řízení - konec
void setup() {
Serial.begin(115200);
preferences.begin("EEpamet", false); // jméno prostoru max. 15 znaků, mód čtení/zápis (false)
delay(500);
// ------- Hledání a nastavení čas. modulu - začátek ----------
if (! rtc.begin()) {
Serial.println("Nemohu najít modul RTC");
}
// nastaví do RTC datum a čas z počítače během nahrávání programu
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
DateTime now = rtc.now();
byte hodiny = now.hour();
byte minuty = now.minute();
byte sekundy = now.second();
byte den = now.day();
byte mesic = now.month();
int rok = now.year();
String datumSynchro;
datumSynchro = (String)hodiny;
datumSynchro += ":";
datumSynchro += (String)minuty;
datumSynchro += ":";
datumSynchro += (String)sekundy;
datumSynchro += "*";
datumSynchro += (String)den;
datumSynchro += "/";
datumSynchro += (String)mesic;
datumSynchro += "/";
datumSynchro += (String)rok;
const char* test = "Nactena vychozi hodnota";
Serial.println(datumSynchro);
preferences.putString("datumPoslSynchEZ", datumSynchro);
String nactenaHodnota = preferences.getString("datumPoslSynchEZ", test);
Serial.println(nactenaHodnota);
Serial.println("********************************");
}
void loop() {
}