Jak zapisać w EEPROM float nie działa mi put, get - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Magazynowanie (https://forum.arduinopolska.pl/dzial-magazynowanie) +--- Wątek: Jak zapisać w EEPROM float nie działa mi put, get (/watek-jak-zapisa%C4%87-w-eeprom-float-nie-dzia%C5%82a-mi-put-get) |
Jak zapisać w EEPROM float nie działa mi put, get - OMK - 26-02-2018 Mam coś takiego: void saveconfig(){ EEPROM.update(0,Temp1); EEPROM.update(1,czasy[0].godz); EEPROM.update(2,czasy[0].minuta); ........ } void loadconfig(){ Temp1 = EEPROM.read(0); czasy[0].godz = EEPROM.read(1); czasy[0].minuta = EEPROM.read(2); ........... } Temp1 mam jako int i działa ale zapisuje się np. 24 a nie 24.1 jak zmienię na float i jak chce zapisać jako get albo put to wychodzą mi głupoty albo nie działa. A mam #include <EEPROM.h> i niby powinno być EEPROM.get i put. Co mam nie tak? A jeszcze mam pytanie na płytce z DS3231 mam też pamięć EEPROM może ktoś podpowie jak tam zapisywać a nie w arduino? RE: Jak zapisać w EEPROM float nie działa mi put, get - Smaczek - 27-02-2018 Witam, To zapisz sobie część całkowitą temperatury jako jednego int-a, a część ułamkową jako drugiego. Z liczy z przecinkiem robisz dwie liczy całkowite. Pozdrawiam, Tomek. RE: Jak zapisać w EEPROM float nie działa mi put, get - OMK - 27-02-2018 A jak to zrobić i potem jak to scalić do liczby z przecinkiem? A może się domyślasz dlaczego nie działa put get? RE: Jak zapisać w EEPROM float nie działa mi put, get - Smaczek - 27-02-2018 Witam, Kod: float liczba = 10.56; Pozdrawiam, Tomek. RE: Jak zapisać w EEPROM float nie działa mi put, get - OMK - 05-03-2018 Wielkie dzięki! A co jest z tymi get, put? Może wiesz dlaczego mi nie działa? RE: Jak zapisać w EEPROM float nie działa mi put, get - kaczakat - 08-03-2018 Zgodnie z tym https://www.arduino.cc/en/Reference/EEPROMUpdate update() służy tylko do zapisu byte (0-255), działa z int? Ciekawe. Większość funkcji działa ze zmiennymi byte, inne trzeba sobie rozbić na byte i zapisywać osobno. Zmienne typu byte, int, float mają różną ilość bajtów, dla każdej trzeba wyliczyć adres gdzie zapisać ich poszczególne bajty. Dział ci różnie, może nadpisujesz bajty zmiennych? Rozwinięciem jest funkcja put. Kłopotem może być znalezienie odpowiedniego adresu, gdzie zapisać dane. Dlatego w przykładzie z eeprom i put jest stworzenie typu struktury. Działa to tak, że robisz całą paczkę danych konfiguracyjnych zlepioną ze zmiennych różnych typów w jeden nowy typ zdefiniowany przez Ciebie. Zapisujesz i odczytujesz całą taką zmienną. Jeśli to zapis konfigu to wystarczy zapis od znanego adresu i wrzucasz całość, tak samo odczyt. Generalnie nie ma co się bać EEpromu, producent gwarantuje 100000 zapisów, ale testy pokazują, że "zwyczajowo" działa dłużej, a rozsądne używanie starcza na wieki. Przykład ze strukturami: Kod: #include <EEPROM.h> Znalazłem jeszcze taki przykład, pewnie działa jak update: Kod: #include <avr/eeprom.h> |