Skocz do zawartości

ESP32 odczyt z eprom


Pomocna odpowiedź

Napisano

Co zrobić żeby odczytać zmienną globalną "ABC", jeśli dam tą zmienną w loopie działa a poza nim nie chce. ESP32

#include <Preferences.h>
Preferences preferences;


void setup() {
  preferences.begin("ustawienia", false);
  Serial.begin(115200);
  preferences.putFloat("bumtralala", 1000.0); 
}

float ABC = preferences.getFloat("bumtralala");


void loop() {

  Serial.println(ABC);
  delay(50);

}

 

Możesz ją jednorazowo odczytać w setup lub w loop wtedy kiedy trzeba ...troche nie rozumiem po co chcesz tak ją wczytywać jak teraz? I tak nie pójdzie bo to chyba tylko obszar do wczytania globalnych i innych czynności a nie do wywoływania funkcji (chyba)

4 minuty temu, kellyq napisał:

Muszę tą zmienną mieć jako globalną żeby się do niej dostać z loop'a jak i z funkcji poza nim. 

No to robisz zmienna globalną, a w loop() odczytujesz sobie dane do tej zmiennej kiedy chcesz... 

#include <Preferences.h>
Preferences preferences;

float ABC;

void setup() {
  preferences.begin("ustawienia", false);
  Serial.begin(115200);
  preferences.putFloat("bumtralala", 1000.0); 
}

 


void loop() {

  Serial.println(ABC);
  delay(50); 
  
  if (guzik_wcisniety) { 
 ABC = preferences.getFloat("bumtralala");
  }
}

 

  • Lubię! 1
(edytowany)

Lepszy rydz nisz nic, a to nie powinno tak działać że wywołanie zmiennej globalnej w loop wymusza niejako na tej zmiennej automatyczne odczytanie zawartości z preferences, czemu ona nie chce zczytać tego, na atmedze to działało

float ABC = preferences.getFloat("bumtralala");

 

Edytowano przez kellyq

Napewno tak zczyta, ale jeśli to umieścisz w setup lub loop...dalej nie rozumiem czemu masz z tym problem?😜 czemu musisz odczytać gdzieś indziej skoro zmiennej tej będziesz używał w loop i ewentualnie funkcjach które wywołasz z loop?

4 minuty temu, kellyq napisał:

na atmedze to działało

Bo preferences to nie to samo co eeprom. Przecież w momencie kiedy to czytasz preferences jeszcze nie jest zainicjalizowany (nie było wywołania setup()). To się w ogóle kompiluje?

  • Pomogłeś! 1

Kompiluje się bez problemu, no dobra za pierwszym wywołaniem jeszcze przed setupem to się zgodzę że nie ma prawa zczytać ale potem powinno. Popróbuje najwyżej to do loopa przenieść bo tam mam w sumie 17 takich zmiennych tylko że jak za każdą pętlą będę odczytywał te zmienne z pamięci to się jakoś nie odbije czkawką na żywotności tej pamięci?

(edytowany)

A po co masz to czytać w loop jak możesz w setup?

Czytać zresztą możesz ile chcesz (preferences jest mapowany do RAM), ale z pisaniem bym uważał: to jest flash a nie eeprom i dużo szybciej się zużywa.

 

3 minuty temu, kellyq napisał:

potem powinno

 

Przecież tam nie masz żadnego "potem"...

Edytowano przez ethanak
8 minut temu, kellyq napisał:

Kompiluje się bez problemu, no dobra za pierwszym wywołaniem jeszcze przed setupem to się zgodzę że nie ma prawa zczytać ale potem powinno. 

No przecież jeśli sobie odczytasz w setup czy loop to jest właśnie "potem" no tak?😉 I tak przecież działa, no tak czy nie?😉

Dobra załóżmy że zmienną ABC deklaruje i odczytuje jej wartość w setup, to potem gdy chcę skorzystać z tej zmiennej w loop wywala błąd kompilacji

"Compilation error: 'ABC' was not declared in this scope

Zmienną deklarujesz jako globalną, ale odczytujesz dopiero w setup.

Przy okazji: kursy Arduino ukończone? Bo to co chcesz zrobić to podstawy podstaw...

  • Lubię! 1
5 minut temu, kellyq napisał:

 

"Compilation error: 'ABC' was not declared in this scope

No przecież zmienna utworzona w setup to zmienna lokalna widziana i istniejącą tylko wtedy jeśli jesteś w setup...przykład który podałem robi to czego oczekujesz...dalej nie rozumiem w czym problem😜 

(edytowany)

 

8 minut temu, ethanak napisał:

Zmienną deklarujesz jako globalną, ale odczytujesz dopiero w setup.

Przy okazji: kursy Arduino ukończone? Bo to co chcesz zrobić to podstawy podstaw...

Coś tam potrafię cały czas się uczę 😜  Śmiga teraz to wszystko jak odczytuje dopiero w setup a zmienna jest globalna. Wszystko przez to że na raz chciałem i odczytać i stworzyć zmienną. Dzięki wielkie.

W sumie już dawno powinienem zrobić migrację na esp32, 2x tańszy, 2 rdzenie, sporo szybszy

Edytowano przez kellyq
  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...