Hirdetés

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

  • hukhl

    csendes tag

    Sziasztok!

    Lenne egy kezdő kérdésem. Nyomógomb lenyomásainak számát számolom és erre léptetek állapotokat, mint egy állapotgép szerűen. Az egyes állapotokban 4 db LED-et villogtatok. (minden állapotban más-más sorrendben) Először delay-t használtam. Ezzel az volt a gond, hogy, amíg az egyik állapotom nem járt le addig nem tudtam tovább léptetni.
    Aztán rátaláltam a millis()-re amivel szépen meglehetne ezt oldani. Mivel sok LED-em van és sok állapotom, így arra gondoltam, hogy ezt behívható funkcióként kellene megcsinálni. És amikor az egyik állapotban meghívom, akkor megadom a funkció bemeneti értékként a kívánt LED számát és a késleltetés idejét. Ezt a funkciót egy állapotban többször meghívva különböző LED-eket különböző ideig lehetne villogtatni. És közben elvileg a nyomógombom állapotát is tudom figyelni. :DD
    Idáig jutottam:
    //---------------
    //Function
    //--------------

    bool LedMillis(long interval, int LEDPin, unsigned long currentMillis, bool ledState){

    bool LEDStateResultInternal;
    unsigned long previousMillis = 0;

    if (currentMillis - previousMillis >= interval)
    {

    if(ledState == LOW)
    {
    ledState = HIGH;

    ledState = LEDStateResultInternal;
    }
    else{
    ledState = LOW;
    ledState = LEDStateResultInternal;
    }
    previousMillis = currentMillis;
    digitalWrite(LEDPin, ledState);
    }
    return LEDStateResultInternal;
    }

    Az adott kimenet számát, amelyhez a LED tartozik - LEDPin értéken adom be
    CurrentMillis-nél az aktuális Millis értéket adom be
    ledState-értéknél pedig a returnként visszaadott led állapot csatolom vissza.

    A previousMillis értékem sajnos mindig 0 marad mivel újra meghívódik a funkció és kinullázódik.
    A previousMillis érétket valahogy funkció meghívásonként el lehet tárolni valahogy külön-külön?
    Visszatérési értékként lehet több különböző adatot visszaadni?
    Bocsánat, ha kicsit katyvasznak tűnik így elsőre.
    Még szoknom kell ezt a környezetet. :))

    Köszönöm a segítséget! :)

    [ Szerkesztve ]

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