Hirdetés

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

  • gyapo11

    őstag

    válasz Pubszon #486 üzenetére

    A millissel lehet bármekkora időzítést csinálni, csak le kell kezelni a túlcsordulást.
    Pl. fél évente hajtja végre az "akciót":

    void setup() {

    }

    int tulcsordulas = 0;
    unsigned long cel = 15724800; //fél év másodpercben 182*24*60*60
    unsigned long start = millis() / 1000;
    unsigned long eltelt = 0;
    unsigned long reszido = 0;

    void loop()
    {
    reszido = millis() / 1000 - start;
    if (reszido < 0) //túlcsordult
    {
    tulcsordulas++;
    }
    else
    {
    eltelt = reszido;
    }

    if (tulcsordulas == 1)
    {
    eltelt += 4294967 - start;
    }
    if (tulcsordulas > 1)
    {
    eltelt += 4294967 - start + (tulcsordulas - 1) * 4294967;
    }

    if (eltelt > cel)
    {
    //akció;
    start = millis() / 1000;
    tulcsordulas = 0;
    eltelt = 0;
    reszido = 0;
    }
    eltelt = 0;
    }

    Nem próbáltam, a fordító nem jelzett hibát.

    [ Szerkesztve ]

    menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

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