Liczba postów: 74
Liczba wątków: 17
Dołączył: Nov 2015
Reputacja:
11
Chciałem zapytać czy jest możliwość aby arduino zapamiętało wprowadzone dane np. termostatu lub innego urządzenia w swojej pamięci ? czy trzeba do tego stosować jakąś pamięć dodatkowa np. 24lc04 lub kartę pamięci ? . Macie jakieś propozycje ? Zależy mi na tym by po zaniku napięcia arduino pamiętało wprowadzony parametr.
Liczba postów: 653
Liczba wątków: 6
Dołączył: Aug 2015
Reputacja:
176
można i tak i tak , ale polecam bardziej korzystanie z zewnętrznej pamięci bo ta w arduino ma ograniczoną ilość cykli zapisu około 10k a eeprom miliony
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji
Liczba postów: 74
Liczba wątków: 17
Dołączył: Nov 2015
Reputacja:
11
dla mnie to i tak dużo bo będzie zapisana wartość nastawy temperatury czyli np.25 stc, a możesz podać jak to zapisać i odczytać ?
Liczba postów: 2
Liczba wątków: 0
Dołączył: Dec 2015
Reputacja:
0
Najprościej wklej skecz i powiedz co chcesz żeby zapamiętywał.
Najłatwiej to użyć funkcji EEPROM.
EEPROM.write(addr, val);
gdzie addr to która z kolei wartość do zapamiętania, np. jeżeli chcesz żeby arduino zapamiętało tylko jedną wartość (np. temperaturę) zapisujesz 0 , jeżeli chcesz żeby zapamiętało następną wartość np. czas zapisujesz 1 następna wartość np. wilgotność, zapisujesz 2 itd.
val to zmienna którą chcesz zapisać. Zależnie od twojego skeczu wpisujesz co chcesz. np . masz gdzieś takie coś
float temp = sensors.readTemperature(sensorAddress);
i chcesz żeby arduino to zapamiętało to wpisujesz
EEPROM.write(0, temp);
oczywiście musisz na początku skeczu zainicjować zmienną temp i wklepać bibliotekę eeprom
#include <EEPROM.h>
żeby arduino odczytało wartość w void setup wpisujesz
temp = EEPROM.read(0);
Chyba o to ci chodziło? Prościej nie można.
Liczba postów: 653
Liczba wątków: 6
Dołączył: Aug 2015
Reputacja:
176
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);
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji