Skocz do zawartości
volt240

Struktura i wskaźnik w arduino

Pomocna odpowiedź

Witam,

Od kilku dni próbuję ogarnąć temat struktur i wskaźników. Mam maszynę z trzema silnikami i wiem że dzięki strukturom będę mógł w łatwy sposób zmieniać kilka parametrów "na raz".

Powiedzmy że mam następującą strukturę:

struct parametryProduktu
{
  int PredkoscWrzeciona;
  int PredkoscKaretki;
  int PredkoscPociagacza;
};

W zależności od produktu siniki mają mieć różne wypełnienie PWM. Tworzę więc struktury (?) z parametrami dla poszczególnych produktów:

parametryProduktu produkt_1 = {100 , 40 , 60};
parametryProduktu produkt_2 = {150 , 30 , 70};
parametryProduktu produkt_3 = {220 , 40 , 160};
parametryProduktu produkt_4 = {255 , 30 , 200};

no i teraz jak łatwo mam przepisywać te dane do poszczególnych  silników:

analogWrite(SilnikWrzeciona, PWM_wrzeciona);
analogWrite(SilnikKaretki, PWM_karetki);
analogWrite(SilnikPociagacza, PWM_pociagacza);

Jedyne co mi przychodzi do głowy to:

PWM_wrzeciona = produkt_1.PredkoscWrzeciona;
PWM_karetki = produkt_1.PredkoscKaretki;
itd...

Ale nie o takie rozwiązanie chodzi. Znalazłem gdzieś że można to zrobić za pomocą wskaźników ale tu już nie potrafię sobie poradzić.

Czy ktoś mógłby wytłumaczyć jak rozwiązać ten problem z użyciem wskaźników? ewentualnie tablic?

Udostępnij ten post


Link to post
Share on other sites

Nie bardzo rozumiem co chcesz zrobić, ale chyba coś takiego:

struct parametryProduktu *parametryBiezace;  // * określa typ "wskaźnik na strukturę"

// gdzieś kawłek kodu który ustala jaki produkt wykonujesz
parametryBiezace = & produkt_1; // & to operator wskaźnika


// i dalej w innym miejscu do silników
analogWrite(silnikWrzeciona, parametryBiezace -> PredkoscWrzeciona);
analogWrite(silnikKaretki, parametryBiezace -> PredkoscKaretki);

Co do tablicy możemy sobie nieco to zmienić:

struct parametryProduktu produkty[] ={{100, 40, 60}, {150, 30, 70}, {220, 40, 160}, {255, 30, 200}};

int produkt= ...; // wybór produktu, możesz później w programie go zmienić

... i dalej w kodzie można dać już bezpośrednio:

analogWrite(SilnikWrzeciona, produkty[produkt].PredkoscWrzeciona);
analogWrite(SilnikKaretki, produkty[produkt].PredkoscKaretki);

O to chodziło?

  • Lubię! 1
  • Pomogłeś! 1

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ść
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...