Wpis z mikrobloga

Chciałbym zachować dane po restarcie/ wyłączeniu Arduino. Wiem że można stosować Eeprom/ kartę SD, mam do zapisu tablicę typu boolean składającą się z 25 elementów. Wpadłem na pomysł żeby połączyć całą tablicę oraz przepisać wtedy np. zapis 0101101101 na liczbę typu int żeby zajmować mniej miejsca w eeprom oraz zmniejszyć liczbę zapisywanych danych. Czy ma to jakikolwiek sens ? Czy może istnieje jakiś przyjemniejszy sposób rozwiązania problemu z zapisem tej tablicy ?
#arduino
  • 4
  • Odpowiedz
@tomasz2101: przechowywane dane boolean w tablicy to grube marnotrawstwo zasobów, bo i tak każda z zmiennych jest trzymana w pełnym bajcie = 8bit komórce pamięci
Możesz albo zastosować "procedurę zapisu", gdzie po 8 będziesz grupował i do jednej 8bit wsadzał (oraz kompatybilną procedurę odzyskiwania tych danych przy starcie), albo po prostu jak cywilizowany człowiek z godnością zaczniesz zapisywać te wartości boolean jako pojedyncze bity w jednej zmiennej (np 32bit jedna zmienna,
  • Odpowiedz
@tomasz2101: Ale zdajesz sobie sprawę, że każdy int ma limit wartości jaką możesz wpisać do niego?
Liczby składającej się z 25 cyfr nie wklepiesz nawet do uint64_t (jako wartość) - po prostu wyjedziesz poza zakres.
Co możesz zrobić, to stworzyć sobie kilka uint8_t i manipulować ich bitami, jako osobnymi boolami (8 na zmienną). Zaoszczędzisz na tym, dlatego że pojedynczy bool w AVR jest traktowany jako uint8_t, a tak w jednej zmiennej
  • Odpowiedz
Wpadłem na pomysł żeby połączyć całą tablicę oraz przepisać wtedy np. zapis 0101101101 na liczbę typu int żeby zajmować


@Analityk: Ja to zrozumiałem w ten sposób, że OP chce te boole przepisać na liczbę składającą się z 25 cyfr (zer lub jedynek) i przypisać jako WARTOŚĆ intowi.
Z tego też powodu podsunąłem pomysł (i nie tylko ja), aby zamienić boole na uint8_t (albo większe) i bezpośrednio zmieniać ich bity jako pojedyncze
  • Odpowiedz