Arduino Polska Forum
Zapamiętanie nastawy termostatu - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino)
+--- Wątek: Zapamiętanie nastawy termostatu (/watek-zapami%C4%99tanie-nastawy-termostatu)

Strony: 1 2


RE: Zapamiętanie nastawy termostatu - v-cu - 09-02-2016

(27-12-2015, 11:15)JasQ napisał(a): Oczywiście w ten sposób zapiszesz tylko zmienną "byte lub char" nie zadziała ze zmienną " float , int , long "

zapis dla int , float używamy 2 bajtów

EEPROM.write(1, highByte(wartosc_int) );
EEPROM.write(0, lowByte(wartosc_int) );

odczyt

wartosc_int = (EEPROM.read(1)<<8)+EEPROM.read(0);
Właśnie w ten sposób co podał sztapl zapisuje zmienne int, a twój sposób nie działa dla float, mam liczbę np. 1.5 i jak ją zapisać do eepromu? Wink


RE: Zapamiętanie nastawy termostatu - stiven - 10-02-2016

v-cu według sposobu, który podał sztapl zapiszesz zmienną int, ale tylko jeśli nie będzie miała wartości większej niż 255. Jeśli będzie miała większą, to zapiszesz, ale odczytana będzie nieprawidłowa, no bo jedna komórka pamięci ma tylko 8 bitów, czyli 1 bajt, a int ma 2 bajty. Ten sposób, który podał JasQ będzie poprawny tylko dla intów właśnie.. Dla floatów nie, no bo zmienne float mają 4 bajty a nie 2. Ale metodę tą można zmodyfikować tak, żeby właśnie podzielić zmienną float na 4 bajty.


RE: Zapamiętanie nastawy termostatu - v-cu - 10-02-2016

Spędziłem z 2 godziny nad próbą zapisu float do eepromu, próbowałem na różne sposoby no i niestety nie dało się.
Ale wymyśliłem coś innego Smile
Kod:
int x= 15;  //  do zmiennej int przypisuje 15
eeprom.write(0,x); // zapisuje do eepromu
x = eeprom.read(0); // odczytuje
float y;  // zmienna typu float
y = x/10; // dzielę x przez 10
Serial.print(y,1);  // otrzymuję 1.5


No i takim sposobem otrzymuje swoją zmienną typu float i działa jak ma Wink

Pozdrawiam


RE: Zapamiętanie nastawy termostatu - stiven - 11-02-2016

Tak to chyba mogłoby wyglądać. Zapis i odczyt do EEPROM pominąłem, samo dzielenie i łączenie floata.


Kod PHP:
float x;

byte a 255 //wyzerowanie bitów powyżej 1 bajta
byte b = (>> 8) & 255;    //przesunięcie bitów o 8 w prawo i wyzerowanie bitów powyżej 1 bajta
byte c = (>> 16) & 255;
byte d = (>> 24) & 255;

= (<< 24) | (<< 16) | (<< 8) | a



RE: Zapamiętanie nastawy termostatu - wojtekizk - 11-02-2016

Witam
Koledzy w najnowszym IDE 1.6.7 w EEPROM library są nowe funkcje (get i put). One rozwiązują problem z floatem automatycznie.
Pozdrawiam