Skocz do zawartości
SOYER

Tablice w arduino

Pomocna odpowiedź

Cześć, od dłuższego czasu próbuję załapać o co chodzi w praktyce i ni hu hu. Niby łapię teorię, wiem, że to takie szufladowce z jedną szufladą z pojemnikami na dajmy na to 5 danych,

 tablica[5]

, lub np. z 5 szufladami

tablica [5] [5]

.

Ale praktycznie to ni hu hu.

Np. czy da się z tego zrobić tablicę i jak z niej korzystać. Mam takie zmienne(pomijam prawidłowy typ zmiennej):

int cisnienie_bmp_strych, temperatura_bmp_strych;
int cisnienie_bmp_strych_max, cisnienie_bmp_strych_min, temperatura_bmp_strych_max, temperatura_bmp_strych_min;
int dzien_temperatura_bmp_strych_min, miesiac_temperatura_bmp_strych_min, rok_temperatura_bmp_strych_min;
int dzien_temperatura_bmp_strych_max, miesiac_temperatura_bmp_strych_max, rok_temperatura_bmp_strych_max;
int dzien_cisnienie_bmp_strych_min, miesiac_cisnienie_bmp_strych_min, rok_cisnienie_bmp_strych_min;
int dzien_cisnienie_bmp_strych_max, miesiac_cisnienie_bmp_strych_max, rok_cisnienie_bmp_strych_max;

każda z tych zmiennych jest w jakiś tam sposób deklarowana np:

temperatura_bmp_strych = bme.readTemperature();

albo:

cisnienie_bmp_strych_min=cisnienie_bmp_strych;

czy też:

dzien_temperatura_bmp_strych_max = now.day();

Kto mi teraz wytłumaczy jak z tego zrobić tablicę dzięki której podobno będzie mi znacznie łatwiej operować na tych zmiennych. Ale jak zrobić np tablicę BMP[liczba zmiennych], każdą wewnątrz deklarować, ale co zyskuję? Nazwy łatwo mi zapamiętać, co zyskuję zamienając to w tablicę?

Pozdrawiam chętnych 😃

Udostępnij ten post


Link to post
Share on other sites

Tablica nie służy do tego. To co Ty opisujesz sensowniej zrobisz jako strukturę (struct).

Tablica jest przydatna jak masz wiele elementów zbioru. np. pobierasz próbki z ADC i chcesz je uśredniać.

Trudno to zrobić zmiennymi tekstowymi:

int probka1;
int probka2;
...
int probka10;

i potem kodem typu srednia = (probka1+probka2+...+probka10)/10

Co więcej jak teraz chcesz uśredniać nie 10 a 100 próbek to jak to zrobisz?

z tablicą idzie łatwo np:

#define LICZBAPROBEK (10)

int probki[LICZBAPROBEK];

...

int srednia = 0;
for (i=0;i<LICZBAPROBEK;i++) srednia+=probki[i];
srednia /= LICZBAPROBEK

jak teraz chcesz usredniac 100 to wystarczy zmienić definicję z 10 na 100 i rekompilować kod...

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dzięki, tak właśnie mi to jakoś nie pasowało do takich zmiennych. Czyli tablice służą raczej do wykonywania operacji na zmiennych w nich zawartych niż do wykożystywania tych zmiennych "pojedynczo".

Udostępnij ten post


Link to post
Share on other sites

Wszystko zależy od kontekstu. Często łączysz tablicę ze strukturą i wtedy dostajesz zalety obu rozwiązań.

Jak chcesz mieć np. kilka konfiguracji (np. dla każdego użytkownika inne parametry typu ustawienie fotela/kierownicy w aucie) to najłatwiej mieć tablicę ze struktury, która opisuje wszystkie parametry i odwołując się do poszczególnych elementów struktury w tablicy możesz odczytywać parametry dla danego kierowcy...

Udostępnij ten post


Link to post
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!

Gość
Napisz odpowiedź...

×   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...