Skocz do zawartości

Struktura i wskaźnik w arduino


volt240

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?

Link do komentarza
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
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.