Sida 1 av 1

Arduino funktion void

Postat: 13 januari 2019, 04:39:21
av GeekJoan
Ibland när jag kollar på exempelkod så ser jag saker som jag inte begriper.

Ex.

Kod: Markera allt

void loop() {
  theaterChase(strip.Color(127, 127, 127), 50); // White
  theaterChase(strip.Color(127,   0,   0), 50); // Red
  theaterChase(strip.Color(  0,   0, 127), 50); // Blue

  rainbow(20);
  rainbowCycle(20);
  theaterChaseRainbow(50);
}
Om vi tar rainbow(20); så är det (20) som jag inte förstår innebörden av. Först trodde jag att det var kör den här funktionen 20 gånger, men om jag skriver 20 på en egen funktion så får jag felmeddelande.
Kodexemplet kommer från Adafruits NeoPixel testkod.

Re: Arduino funktion void

Postat: 13 januari 2019, 04:43:38
av Icecap
Det betyder att "rainbow" får värdet 20 att leka med.

Den funktion kan vara definierat som följer:
void rainbow(int Value);

Det betyder:
rainbow är en funktion som inte ger tillbaka något värde (första "void") men som begär ett värde att jobba med (int Value).

I rainbow() kan man t.ex. skriva:

Kod: Markera allt

void rainbow(int Value)
  {
  while(Value)
    {
    ... // Do whatever needs to be done
    }
  }

Re: Arduino funktion void

Postat: 13 januari 2019, 05:21:25
av GeekJoan
Humm...

Här är funktionen:

Kod: Markera allt

void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i+j) & 255));
    }
    strip.show();
    delay(wait);
  }
}
Så du menar att (20) stoppas in i wait.

Re: Arduino funktion void

Postat: 13 januari 2019, 05:53:20
av SeniorLemuren
Japp. 20 kommer att stoppas in i delay(wait); så den blir delay(20);