Skocz do zawartości
switchb

Problem z argumentami w funkcji C/C++

Rekomendowane odpowiedzi

Napisano (edytowane)

Witam.

 

Niedawno zacząłem zabawę z Arduino, ale jestem początkujący w programowaniu i kompletnie nie wiem jak podejść do problemu. Ciężko jest mi znaleźć coś na googlu bo nie wiem o co pytać.

Mam taki fragment kodu, a dokładniej funkcję:

 

void kolko1(int ileZmian, int r, int g, int b)
{
   if (aktuCzas - zapaCzas >= opoznienie)
   {
       zapaCzas = aktuCzas;

       ring1.clear();
       symetria = nrDiody - 3;
       if (symetria <= 0)
       {
           symetria = symetria + 6;
       }
       ring1.setPixelColor(symetria, r, g, b);
       ring1.setPixelColor(nrDiody, r, g, b);
       ring1.show();

       if (nrDiody > 5)
       {
           nrDiody = 0;
           zmienS1++; // --> jeśli włączone kólka same się zmieniają.
           if (zmienS1 > ileZmian)
               zmienS1 = 1;
       }

       nrDiody++;
   }
}

(Edytowałem/zmieniłem nazwy zmiennych, po sugestii Trepcia)

Ta funkcja działa bez problemu.

 

I teraz 'ring' to jest pierścień z diodami, mam takie trzy pierścienie.

Adafruit_NeoPixel ring1 = Adafruit_NeoPixel(35, PIN9);
Adafruit_NeoPixel ring2 = Adafruit_NeoPixel(35, PIN10);
Adafruit_NeoPixel ring3 = Adafruit_NeoPixel(35, PIN11);

 

Czy da się dodać do funkcji 'kolko1' argument, który zmieniał by ringi:

Coś w tym stylu:

void kolko1(int ileZmian, int r, int g, int b, ringX)
{
..TEN SAM KOD CO WYŻEJ..
}

 

Żeby wywoływać to w ten sposób:

kolko1(3, 0, 0, 255, ring1);
kolko1(3, 0, 0, 255, ring2);
kolko1(3, 0, 0, 255, ring3);

 

Z góry przepraszam za wszystkie herezje w kodzie i w tym co piszę.

Proszę o pomoc, lub wskazówkę.

Dzięki.

Edytowane przez switchb

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Poczytaj o przekazywaniu argumentów przez wartość/wskaźnik/referencję.

 

Chcesz robić funkcję o sygnaturze

void kolko1(int ileZmian, int r, int g, int b, Adafruit_NeoPixel& ring)

i w niej już się odnosić do przekazanego argumentu, a nie obiektu globalnego.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dziękuję za błyskawiczną odpowiedź, poczytam o tym i spróbuję złożyć konkretny kod, jak się uda, napiszę co i jak.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...