Keresés

Hirdetés

Új hozzászólás Aktív témák

  • Teasüti

    nagyúr

    válasz Tankblock #7121 üzenetére

    Mi a különbség ez:
    while (true) {
    for (int i = 0; i < STRANDCNT; i++) {
    strand_t * pStrand = &STRANDS[i];
    rainbow(pStrand, 0, 2000);
    digitalLeds_resetPixels(pStrand);
    }
    }

    ...és ez között?
    while (true) {
    for (int i = 0; i < STRANDCNT; i++) {
    rainbow(&STRANDS[i], 0, 2000);
    digitalLeds_resetPixels(&STRANDS[i]);
    }
    }

    szerk: semmi... Eredetileg jelölő nélkül értettem, hogy aztán leesett, hogy mint változó értelmetlen volna a STRANDS[i]. Azt leszámítva, hogy jelölőket kell átadni a függvényeknek.

    Miközben írtam a válaszom jött egy felismerés:
    két példány létrehozásához jön jól egy objektumnál, ha a teljesen azonos paramétereknek két eltérő memóriaterületet tudunk linkelni. Szóval a régi dilemmámat lehet feloldani így ha jól értem, amikor változókból próbáltam létrehozni több példányt: pl buffer1[], buffer2[] és e helyett lehet ugyanazt a buffer[] változónevet használni pointer-ként, egy amolyan shift register módon. Ez a gondolatmenet nagyjából köszönőviszonyban van a valósággal? :))

    Vmint az RMT külön lefoglalt ram területekről dolgozik. Értem. Ha erre céloztál. Ez lesz a puffer szerintem, az viszont külön téma a library-ben:
    // Pack pixels into transmission buffer
    if (ledParams.bytesPerPixel == 3) {
    for (uint16_t i = 0; i < pStrand->numPixels; i++) {
    // Color order is translated from RGB to GRB
    pState->buf_data[0 + i * 3] = pStrand->pixels[i].g;
    pState->buf_data[1 + i * 3] = pStrand->pixels[i].r;
    pState->buf_data[2 + i * 3] = pStrand->pixels[i].b;

    [ Szerkesztve ]

Új hozzászólás Aktív témák