Skocz do zawartości

ESP32 odczyt z eprom


kellyq

Pomocna odpowiedź

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);

}

 

Link do komentarza
Share on other sites

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)

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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
Link do komentarza
Share on other sites

(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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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?

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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?😉

Link do komentarza
Share on other sites

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😜 

Link do komentarza
Share on other sites

(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
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.